Serial Boot Loader for CC2530 APP程序不运行问题求助
问题1:
注释掉cc2530-sb.xcl中最后一行:// -HFFFF
下载完成用asm("LJMP0x2000\n");跳转不到应用的main函数,而是循环执行boot的main,像是复位。
如果不注释最后一行,程序正常跳转运行应用的mian函数。
问题2:
不注释最后一行,程序正常运行,但是如果有中断产生,产生复位。
1. 注释了-HFFFF会影响CRC的计算,自然是有问题的。
2. 你是否修改了-D_CODE_START=0x2000? 或者你的boot代码里是否包含了interrupt_stubs.s51?
谢谢你的回答!再补充下问题描述如下:
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. 我基本都是按照文档做,我想不出什么理由不使用crc,建议先按照文档,每一步仔细follow。
2. 那你的.xcl里有-Z(CODE)INTVEC=_CODE_START 吗?
思路很简单的, 通过interrupt_stubs 跳转到应用代码的中断向量表,如果偏移对,映射对,没理由不跳到正确位置。
1.CC2530通过网关进行升级,网关原有一套成熟升级机制,因此CC2530在SBL基础上修改。如果使用CRC那就必须填充-HFFFF,生成bin文件会大,传输bin文件增加了网关流量。如果没有好的解决方式只能在生成bin文件后,手动删除多余0xFF。
2..xcl里有-Z(CODE)INTVEC=_CODE_START ,生成的bin文件填充了0xFF。
问题现象是:boot正常启动,也能正常跳到位置运行APP(组网/收发数据),一旦有中断产生例如timer3/uart,程序就复位。
如果是这样,你可以考虑在IAR里VIEW一下汇编语句和flash里的内容,看对应位置和跳转地址是否是对的.
好的,多谢你的解答
你好,首先建议还是要保留CRC毕竟安全是第一位的,流量多一点少一点都是要走流量,感觉节约流量取消CRC的风险还是挺大的。
另外问一下,上位机是用的单片机?下载的串口协议从哪里找的?我想用树莓派给2530下载程序 没找到串口协议,如果方便请指教,谢谢!