问题1:
注释掉cc2530-sb.xcl中最后一行:// -HFFFF
下载完成用asm("LJMP0x2000\n");跳转不到应用的main函数,而是循环执行boot的main,像是复位。
如果不注释最后一行,程序正常跳转运行应用的mian函数。
问题2:
不注释最后一行,程序正常运行,但是如果有中断产生,产生复位。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
谢谢你的回答!再补充下问题描述如下:
1.整个升级过程中没有CRC校验:
1)在boot代码中把跳转时CRC校验部分注释掉了;
2)APP程序中cc2530-sb.xcl注释// -J2,CRC16 和 // -HFFFF ;
3)option中xMAKE_CRC_SHDW。
2.确定APP的cc2530-sb.xcl已经修改 -D_CODE_START=0x2000;且boot代码包含interrupt_stubs.s51
3.问题2中如果APP中没有产生中断,程序可以一直正常运行。
1.CC2530通过网关进行升级,网关原有一套成熟升级机制,因此CC2530在SBL基础上修改。如果使用CRC那就必须填充-HFFFF,生成bin文件会大,传输bin文件增加了网关流量。如果没有好的解决方式只能在生成bin文件后,手动删除多余0xFF。
2..xcl里有-Z(CODE)INTVEC=_CODE_START ,生成的bin文件填充了0xFF。
问题现象是:boot正常启动,也能正常跳到位置运行APP(组网/收发数据),一旦有中断产生例如timer3/uart,程序就复位。