乐鑫技术交流
直播中

周臻庸

7年用户 847经验值
私信 关注
[问答]

ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?

1、一般来说大内存下载小固件,剩余内存空间空闲着是不影响使用的。然而ESP8266除了boot.bin下载到固定的0x00000地址,user1.bin下载到固定的0x01000以外,其他如user2.bin,blank.bin,esp_init_data_default.bin的下载地址是和内存大小相关的。那么ESP8266是如何保证这些代码数据可以被正确访问到的呢?难道boot.bin会自动检测内存大小然后推算出user2.bin,blank.bin,esp_init_data_default.bin的位置?如果我用64Mbit或128Mbit的Flash又该如何布局,如何下载?
2、ESP8266官方下载工具里的SPI 速度设置,晶振频率选择,Flash 容量选择有何实际意义?这些设置不是应该用程序修改的嘛?难道这里的设置能用来修改boot.bin里的参数?或者这些设置仅仅是在下载程序的时候起作用,不影响程序的运行?
3、ESP8266的初始串口波特率和晶振有关,那么用串口下载程序的时候ESP8266是靠什么机制保证无论是26M晶振还是40M晶振都能用115200的波特率下载?还是用26M晶振时只能用76800的波特率下载?
                                                                                                                                                         

回帖(1)

温暖镜头

2024-7-20 16:36:53
1. ESP8266挂载不同大小的Flash ROM,下载bin文件的地址不同的原因:

ESP8266的固件分为多个部分,包括boot.bin、user1.bin、user2.bin、blank.bin和esp_init_data_default.bin。这些固件部分有不同的作用和存储位置。boot.bin是启动程序,固定存储在0x00000地址。user1.bin是用户程序,固定存储在0x01000地址。其他固件部分的存储地址与Flash ROM的大小有关。

ESP8266通过以下方式保证这些代码数据可以被正确访问:

- 在启动过程中,boot.bin会读取Flash ROM中的配置信息,包括Flash ROM的大小和固件的存储布局。
- 根据Flash ROM的大小,boot.bin会自动计算其他固件部分的存储地址。
- 计算完成后,boot.bin会将这些地址信息存储在内部寄存器中,以便在运行过程中访问其他固件部分。

对于64Mbit或128Mbit的Flash ROM,布局和下载方法如下:

- 首先,确保你的ESP8266模块支持64Mbit或128Mbit的Flash ROM。
- 在下载固件时,选择正确的Flash ROM大小选项,以便boot.bin能够正确计算其他固件部分的存储地址。
- 按照官方文档或示例代码,将固件分为多个部分,并将它们分别下载到正确的地址。

2. ESP8266官方下载工具里的SPI速度设置、晶振频率选择、Flash容量选择等:

- SPI速度设置:这个选项用于设置SPI通信的速度。根据你的硬件环境和需求,选择合适的速度。一般来说,较高的速度可以提高数据传输效率,但可能会增加错误率。

- 晶振频率选择:这个选项用于设置ESP8266的晶振频率。晶振频率决定了ESP8266的运行速度。选择正确的晶振频率可以确保设备正常工作。

- Flash容量选择:这个选项用于选择ESP8266所使用的Flash ROM的大小。根据你的硬件配置和需求,选择合适的Flash容量。

在使用官方下载工具时,请确保选择正确的参数,以确保固件能够正确下载和运行。同时,参考官方文档和示例代码,了解不同参数的具体作用和设置方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分