确切的说,我还没搞清楚问题的来源,姑且这么说吧。
在用串口进行程序升级的测试中,预先在flash中下载一段引导代码,此代码通过串口将应用程序的txt文件下载到指定位置的flash中,完成串口程序升级。
过程中出现一个奇怪的现象,在引导程序通过串口下载程序时,每当将数据下载到0x11010这个地址段时,mcu就会自动复位。通过仿真器调试发现,数据被从起始地址写到0x11010这个地址,0x11011开始就没有数据写入了,实际数据还没完,mcu已经复位了。
我换了不同的板子,使用不同的程序,都出现了这个问题。
后来我从xcl文件中修改了flash地址范围,将0x11010这个地址所在segment去掉。程序就能下载正常了。如下
// ---------------------------
// Code
//
-P(CODE)CODE=8000-ED7F,10000-87FFF
-Z(CODE)CODE_ID
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID=8000-ED7F,10000-87FFF
改为
// ---------------------------
// Code
//
-P(CODE)CODE=8000-ED7F,12000-87FFF
-Z(CODE)CODE_ID
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID=8000-ED7F,12000-87FFF
请问,0x11010开始的这个地址段在′f5系列有什么特别的吗,或者在5659中是特别的吗?