[我使用官方的ESP8266 SDK v3.0.0:https://github.com/espressif/ESP8266_NONOS_SDK/releases/tag/v3.0.3,似乎在生成的二进制文件的RAW内容中发现了一些不一致之处。
据我所知,SDK使用'gen_appbin.py'脚本(随SDK一起提供)从* .elf文件生成了现成的FW .bin文件: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 ...”)写入所得的固件二进制文件。
所以,当我编译任何示例(例如AT示例)时,我在生成的固件中看到两个这种模式。
但是,问题在于所提供的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
抱歉,我的错。一切都很好。某种程度上,我的输出二进制文件具有自己内容的重复项。