Я использую официальный ESP8266 SDK v3.0.0: https://github.com/espressif/ESP8266_NONOS_SDK/releases/tag/v3.0.3 и, кажется, обнаружил некоторую несогласованность в RAW-содержимом сгенерированных двоичных файлов.
Насколько я понимаю, SDK генерирует готовый файл FW .bin из файла * .elf с использованием сценария 'gen_appbin.py' (поставляется с SDK): https://github.com/espressif/ESP8266_NONOS_SDK/blob/release/v3.0.0/tools/gen_appbin.py#L224
Этот сценарий содержит следующий код:
if boot_mode == '2':
// write irom bin head
data_bin = struct.pack('<BBBBI',BIN_MAGIC_IROM,4,0,app,long(entry_addr,16))
sum_size = len(data_bin)
write_file(flash_bin_name,data_bin) // <<< **HERE IN FIRST TIME**
//irom0.text.bin
combine_bin(irom0text_bin_name,flash_bin_name,0x0,0)
if boot_mode == '1':
data_bin = struct.pack('<BBBBI',BIN_MAGIC_FLASH,3,0,app,long(entry_addr,16))
else:
data_bin = struct.pack('<BBBBI',BIN_MAGIC_FLASH,3,byte2,byte3,long(entry_addr,16))
sum_size = len(data_bin)
write_file(flash_bin_name,data_bin) // <<< **HERE IN SECOND TIME**
Как видите, этот код дважды записывает шаблон data_bin (он же «EA 04 00 01 ...») в результирующий двоичный файл FW.
Итак, когда я компилирую любой пример (например, пример AT), то я вижу в сгенерированном FW два этих шаблона.
НО, проблема в том, что предоставленные двоичные файлы примера AT (в SDK): https://github.com/espressif/ESP8266_NONOS_SDK/tree/release/v3.0.0/bin/at/1024%2B1024
содержит только один шаблон «EA 04 00 01 ...».
Итак, мой вопрос: что происходит? Есть ли в утилите 'gen_appbin.py' ошибки?
PS: У меня здесь возникает проблема: https://github.com/espressif/ESP8266_NONOS_SDK/issues/313