ESP8266:使用gen_appbin.py实用程序生成的示例二进制文件之间不匹配

问题描述 投票:0回答:1

[我使用官方的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

sdk esp8266
1个回答
0
投票

抱歉,我的错。一切都很好。某种程度上,我的输出二进制文件具有自己内容的重复项。

© www.soinside.com 2019 - 2024. All rights reserved.