ESP8266: несоответствие между сгенерированными примерами двоичных файлов с помощью утилиты gen_appbin.py - PullRequest
0 голосов
/ 29 мая 2020

Я использую официальный 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

1 Ответ

0 голосов
/ 29 мая 2020

Простите, я виноват. Все там нормально. Просто каким-то образом у моего выходного двоичного файла были дубликаты собственного содержимого.

...