Hi,
通过文档知道cybt342026-01的flash分配如下
1. 我明白DS1和DS2是存放应用程序(.bin)的地方。那么ss的地方是存放哪个DS是active的,对吗?ss的地方还会存储哪些信息?
2. VS1和VS2是存放什么内容的?
3 带OTA_FW_UPGRADE=1和不带这个宏所编译出来的.hex的结构不同,改怎么理解?截图如下
带宏:为什么会分为两个部分?
不带宏:
4 蓝框里的信息应该是存储在了ss的地方,对吗?里面包含的每个byte的意思可以具体说一下吗(比如我看里面是有mac地址的)
带宏:
不带宏:
已解决! 转到解答。
Hi YaTr_3516311,
带宏编译的固件是在通过OTA的方式刷入的,OTA在刷入时还需再做一次校验和映射等,编译的固件只是一个用于空中传输使用的中间包,不是传统直接刷入的包。
0x3000这个起始的地址对应的VS2一般情况下时作为备用的,所以,虽然不能准确得知为何带宏后是往这个地址开始写入,但可猜测实际上应该不会造成任何问题。因为我相信刷入的过程中OTA程序还是会做映射,以保证最终写入的结果的正确性。
可以发现,带宏的固件从0x3000开始的payload,对比不带宏的固件从0x4000开始的payload,内容是是相同的。这个信息应该能帮助您猜测和验证背后的工作原理。
<<<<<<<<<<<<<>>>>>>>>>>>>>
Sincere regards from C. L.
<<<<<<<<<<<<<>>>>>>>>>>>>>
请尽快帮忙回答一下上面的问题,谢谢
Hi,
- 没有相关的说明SS会存放哪些数据。但您理解的“SS会存放哪个DS是active的”也不无可能。可猜想其存放的数据有应该和Firmware的引导和存储管理等有关。
- VS1和VS2的作用,应该是在运行时为程序和软件栈的运行缓存和中间结果等内容提供暂存。从它的名字可以猜测,其存放的内容应该可以随意擦写。
- WICED编译得到的.hex文件完全遵循I32HEX标准,该标准由英特尔提出。如您所见,编译时带宏与否,编译结果并无太大差异,因为它记录的内容实质上差异不大。事实上两个hex文件只是在描述的时候,决定在每一行采用的payload长度不同而已。而且,如果按照地址区域来划分的话,事实上带宏的描述的是两个部分(0x0000, 0x4000),不带宏的也是两个部分(0x0000, 0x3000)。
- 蓝框里的信息如您所说,是要存放到SS区域的。具体每个byte的作用并不清楚。
最后,列出一些相关的资料供您参考:
<<<<<<<<<<<<<>>>>>>>>>>>>>
Best Regards
C. L.
<<<<<<<<<<<<<>>>>>>>>>>>>>
感谢您的详细解答。
虽然我理解两个地址都是存放application code的,但是“”事实上带宏的描述的是两个部分(0x0000, 0x4000),不带宏的也是两个部分(0x0000, 0x3000)"关于这一点,我不明白,为什么带宏和不带宏编译出来的application code存放的地址会不一样(一个是写到0x4000,一个是写到0x3000)?是由什么决定的?
Hi YaTr_3516311,
带宏编译的固件是在通过OTA的方式刷入的,OTA在刷入时还需再做一次校验和映射等,编译的固件只是一个用于空中传输使用的中间包,不是传统直接刷入的包。
0x3000这个起始的地址对应的VS2一般情况下时作为备用的,所以,虽然不能准确得知为何带宏后是往这个地址开始写入,但可猜测实际上应该不会造成任何问题。因为我相信刷入的过程中OTA程序还是会做映射,以保证最终写入的结果的正确性。
可以发现,带宏的固件从0x3000开始的payload,对比不带宏的固件从0x4000开始的payload,内容是是相同的。这个信息应该能帮助您猜测和验证背后的工作原理。
<<<<<<<<<<<<<>>>>>>>>>>>>>
Sincere regards from C. L.
<<<<<<<<<<<<<>>>>>>>>>>>>>