ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?这样的内存布局有何用意?

qwerty650
Posts: 3
Joined: Thu Nov 30, 2017 10:48 am

ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?这样的内存布局有何用意?

Postby qwerty650 » Thu Nov 30, 2017 1:32 pm

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的波特率下载?


qwerty650
Posts: 3
Joined: Thu Nov 30, 2017 10:48 am

Re: ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?这样的内存布局有何用意?

Postby qwerty650 » Tue Dec 05, 2017 2:41 pm



谢谢Her Majesty,入门指南只告诉我应该怎么做,但是没告诉我为什么这么做,所以我比较困惑的是如果不严格按照入门指南如何保证正常使用。

Her Majesty
Posts: 202
Joined: Mon Oct 27, 2014 11:09 am

Re: ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?这样的内存布局有何用意?

Postby Her Majesty » Tue Dec 05, 2017 4:37 pm

不按照指南烧录运行,应该会有问题吧。例如,不同大小的 flash,布局不一样,其实从它给的布局图和地址能看出来,就是 flash 的最后几个 sector 用来存储数据,前面的整段空间可以用来存代码。user1 和 user2 就是 flash 对半分之后,按照偏移地址来取代码运行。

qwerty650
Posts: 3
Joined: Thu Nov 30, 2017 10:48 am

Re: ESP8266为什么挂载不同大小的FlashROM,下载bin文件的地址不同?这样的内存布局有何用意?

Postby qwerty650 » Tue Dec 05, 2017 10:16 pm

Her Majesty wrote:不按照指南烧录运行,应该会有问题吧。例如,不同大小的 flash,布局不一样,其实从它给的布局图和地址能看出来,就是 flash 的最后几个 sector 用来存储数据,前面的整段空间可以用来存代码。user1 和 user2 就是 flash 对半分之后,按照偏移地址来取代码运行。


这些偏移地址一定是保存在某个地方,应该在boot.bin里,修改它应该就可以随意自定义布局了,至于为什么同一个boot.bin下载到不同容量的flash可以在不同的偏移地址找到正确的数据,我猜可能是下载工具根据flash size的config选项修改了boot里的数据。希望官方能公布一份更详尽的启动引导文档。

Who is online

Users browsing this forum: No registered users and 3 guests