OTA 스 트림 업데이트 및 셸 구현

1536 단어
OTA 업그레이드 시 인터넷 에서 OTA 패 키 지 를 다운로드 하고 플래시 에 대응 하 는 파 티 션 에 써 야 합 니 다.
가장 쉬 운 방법 은 다운로드 와 업 데 이 트 를 분리 하 는 것 이다. 먼저 완전한 패 키 지 를 로 컬 에 다운로드 한 다음 에 로 컬 OTA 패 키 지 를 플래시 에 업데이트 하 는 것 이다.편리 하고 믿 을 만하 다.
그러나 이런 방식 의 문 제 는 로 컬 에 OTA 패 키 지 를 저장 할 수 있 는 충분 한 공간 이 필요 하 다 는 것 이다. 이것 은 일부 플래시 가 작은 제품 에 있어 큰 제한 역할 을 할 수 있 기 때문에 플래시 에 시스템 이 차지 하 는 크기 보다 작 지 않 은 공간 을 남 겨 OTA 패 키 지 를 저장 해 야 한다.
하지만 공간 이 부족 한데 어 떡 하지?이 럴 때 는 인터넷 에서 다운로드 한 데 이 터 를 플래시 에 직접 쓸 수 있 도록 스 트림 업 데 이 트 를 지원 해 야 합 니 다.
안 드 로 이 드 는 AB 업그레이드 방안 에서 OTA 패 키 지 를 임시 공간 에 저장 하지 않 아 도 되 는 스 트 리밍 업데이트 (streaming updates) 방식 을 지원 했다.
그러면 구체 적 으로 어떻게 실현 되 었 는 지, 사실 흐름 식 업데이트 가 가장 간단 한 실현 은 셸 스 크 립 트 몇 줄 만 있 으 면 외부 기 존의 도 구 를 호출 하고 파이프 의 형식 을 통 해 협조 하면 실현 할 수 있 습 니 다.
예 를 들 어 wget 을 사용 하여 ota 가방 을 다운로드 하면 wget 의 - S 인 자 를 사용 하여 OTA 가방 의 길 이 를 걸 러 낼 수 있 습 니 다.
    file_length=$(wget -S "$file_download" 2>&1 | grep "Content-Length" | awk '{print $2}')

wget 과 dd 를 통 해 대응 하 는 파 티 션 에 데 이 터 를 직접 기록 합 니 다.
 wget "$file_download" -q -O - | dd of="$partition"

마지막 으로 md5 검사 값 을 다운로드 하고 기 록 된 데이터 흐름 식 을 읽 습 니 다. 마찬가지 로 파 이 프 를 통 해 md5sum 에 전송 하여 검사 값 을 계산 하여 검사 합 니 다.
 md51=$(wget "$file_download.md5" -q -O -)
 md52=$(dd if="$partition" bs=512 count="$file_sectors" | md5sum | cut -d ' ' -f 1)

이상 은 셸 스 크 립 트 를 사용 하여 wget, dd, md5sum 을 호출 하고 파 이 프 를 사용 하여 협조 하여 완 성 된 스 트림 업데이트 의 핵심 부분 입 니 다.

좋은 웹페이지 즐겨찾기