esp32 invalid magic byte 우회하기
개요
esp32 ota를 개발하면서 암호화된 파일을 다운로드를 해야 했습니다.
esp32는 binary file의 시작을 0xE9로 시작을 하여야 합니다.
일명 magic byte입니다.
magic byte를 검사하는 파일 및 처리
2군데에서 magic byte를 검사합니다.
uart 다운로드인 경우에는 components/bootloader_support/src/esp_image_format.c
ota인 경우에는 components/app_update/esp_ota_ops.c
2군데에서 검사를 하는데, 저는 ota를 수행함으로 esp_ota_ops.c를 수정하였습니다.
#if 0 // 시험용 magic byte 검사 제거
if (it->wrote_size == 0 && it->partial_bytes == 0 && size > 0 && data_bytes[0] != //ESP_IMAGE_HEADER_MAGIC) {
#else
if (it->wrote_size == 0 && it->partial_bytes == 0 && size > 0 ) {
#endif
ESP_LOGE(TAG, "OTA image has invalid magic byte (expected 0xE9, saw 0x%02x)", data_bytes[0]);
return ESP_ERR_OTA_VALIDATE_FAILED;
}
위처럼 수정하였습니다.
https://power-of-optimism.tistory.com/1051