*/

ESP32 IDF Application OTA

OTA(Over The Air Updates)

OTA 프로세스 개요

  OTA 업데이트 메커니즘을 사용하면 일반 펌웨어가 실행되는 동안(예: Wi-Fi 또는 Bluetooth를 통해) 수신된 데이터를 기반으로 장치를 업데이트할 수 있다.

  OTA는 최소 2개의 "OTA App slot" 파티션(즉, ota_0 및 ota_1 )과 "OTA Data 파티션"으로 장치의 파티션 테이블을 구성해야 한다.

  OTA 작동 기능은 현재 부팅을 위해 선택되지 않은 OTA 앱 슬롯에 새 앱 펌웨어 이미지를 쓰고, 이미지가 확인되면 OTA 데이터 파티션을 업데이트하여 이 이미지를 다음 부팅에 사용하도록 지정한다.

OTA 데이터 파티션

  OTA 데이터 파티션(type "data", subtype "ota")은 OTA 기능을 사용하는 모든 프로젝트의 파티션 테이블에 포함되어야 한다. 

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x4000,
otadata,  data, ota,     0xd000,  0x2000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000,  1M,
ota_0,    app,  ota_0,   0x110000, 1M,
ota_1,    app,  ota_1,   0x210000, 1M,
Copy to clipboard

  공장 부팅 설정의 경우 OTA 데이터 파티션에는 데이터가 없어야 한다(모든 바이트는 0xFF로 지워짐). 이 경우 esp-idf 소프트웨어 부트로더는 파티션 테이블에 있는 경우 factory app을 부팅한다. 파티션 테이블에 factory app이 포함되어 있지 않으면 사용 가능한 첫 번째 OTA 슬롯(일반적으로 ota_0)이 부팅된다.

  첫 번째 OTA 업데이트 후 OTA data 파티션이 업데이트되어 다음에 부팅해야 하는 OTA 앱 슬롯 파티션을 지정합니다.

  OTA data 파티션은 2개의 플래시 섹터(0x2000바이트) 크기로 기록 중 정전이 발생할 경우 문제를 방지한다. 섹터는 독립적으로 삭제되고 일치하는 데이터로 기록되며, 일치하지 않는 경우 카운터 필드를 사용하여 가장 최근에 기록된 섹터를 결정한다.



참고

관련문서 

0 comments:

댓글 쓰기