1、硬件是CC2538,之前组网控制都正常,协议栈是Z-Stack 3.0
2、因为需要OTA,就参考OTA guide手册,编译出了一个Image A版本的Client固件,见附件,改一下扩展名为.hex,@VV 你可以在你的CC2538EM评估板上刷一下试试,这个是IAR for ARM编译出来的(bootloader+application二合一的hex文件),结果刷进去之后,设备就再也不能启动了,无论怎么用SmartRF Programmer 2刷会原来的固件,都提示刷成功了,但是程序始终无法运行;
3、有没有什么办法恢复,点了右上角的CC2538 Forced Mass Erase,不起作用,窗口一闪而过,IAR直接Debug也走不到main入口,各种boot、SampleSwitch工程都试过了,不行,如何破?

VV:
有没有不带OTA的image,之前也是在CC2538上运行过的,可以烧写进去么?
miffy:
回复 VV:
可以烧,后来我发现问题所在了,如果使用OTA image,CC2538-OTA-Image-A.icf文件里面的SRAM是不能修改的,默认是如下,也就是16KB,如果修改为(0x20000000 ),也就是32KB,那么image A烧进去就无法启动了,如果是这样,那岂不是无法使用完整的32KB SRAM了吗?
另外,C:\Texas Instruments\Z-Stack 3.0.0\Projects\zstack\OTA\Boot\CC2538\Boot.eww的确是无法单独调试的,无法进入到main函数,只能编译出Boot.bin,用来和Application合成最终的.hex文件:
//// Define a region for the on-chip SRAM.//define region SRAM = mem:[from 0x20004000 to 0x20007FFF];
Jesse Huang:
回复 miffy:
你好,我也是在研究OTA的过程中有好几个开发板编程不能烧录了,用 Smart flash programmer 2 解锁也不行,请问你是怎么可以重新烧录的?造成这种情况的问题是什么?感谢回答!
Jesse Huang:
回复 miffy:
卧槽芯片救回来了!牛逼啊大哥!!心疼我前面丢掉的4个芯片 π-π…
Jesse Huang:
回复 miffy:
您好,请问下CC2538的OTA升级是可以改成不用ImageA和ImageB两种文件的吧?可以通过boot程序来调整HAL_OTA_RC_ADDR和HAL_OTA_DL_ADDR这些地址吗?
miffy:
回复 Jesse Huang:
不能,默认的分区模式就是这样,你可以在gateway上实现先通过image notify的方式,让各个节点报告自己的当前firmware版本,然后你再根据每个节点的版本不同,给其升级另外一个firmware,以防止对同一个节点两次都用同一个firmware升级造成芯片锁住。
这个方案是可行的,可以同时给7个不同版本的节点同时升级,我们都已经成功了。
TI中文支持网