TI论坛
直播中

李燕

7年用户 1541经验值
私信 关注
[问答]

CC2538 刷了OTA IMAGE-A的固件导致无法正常启动,也无法再刷固件了,请问是什么原因?

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工程都试过了,不行,如何破?

回帖(5)

李果

2018-8-9 07:26:12
有没有不带OTA的image,之前也是在CC2538上运行过的,可以烧写进去么? 
举报

李燕

2018-8-9 07:39:39
引用: wenlonghbo 发表于 2018-8-9 07:26
有没有不带OTA的image,之前也是在CC2538上运行过的,可以烧写进去么? 

可以烧,后来我发现问题所在了,如果使用OTA image,CC2538-OTA-Image-A.icf文件里面的SRAM是不能修改的,默认是如下,也就是16KB,如果修改为(0x20000000 ),也就是32KB,那么image A烧进去就无法启动了,如果是这样,那岂不是无法使用完整的32KB SRAM了吗?
另外,C:Texas InstrumentsZ-Stack 3.0.0ProjectszstackOTABootCC2538Boot.eww的确是无法单独调试的,无法进入到main函数,只能编译出Boot.bin,用来和Application合成最终的.hex文件:
//
// Define a region for the on-chip SRAM.
//
define region SRAM = mem:[from 0x20004000 to 0x20007FFF];
举报

唐芳

2018-8-9 07:52:02
引用: ggfvxv 发表于 2018-8-9 07:39
可以烧,后来我发现问题所在了,如果使用OTA image,CC2538-OTA-Image-A.icf文件里面的SRAM是不能修改的,默认是如下,也就是16KB,如果修改为(0x20000000 ),也就是32KB,那么image A烧进去就无法启动了,如果是这样,那岂不是无法使用完整的32KB SRAM了吗?
另外,C:Texas InstrumentsZ-Stack 3.0.0ProjectszstackOT ...

你好,我也是在研究OTA的过程中有好几个开发板编程不能烧录了,用 Smart flash programmer 2 解锁也不行,请问你是怎么可以重新烧录的?造成这种情况的问题是什么?感谢回答!
举报

李燕

2018-8-9 08:06:01
引用: uuwerywrsd 发表于 2018-8-9 07:52
你好,我也是在研究OTA的过程中有好几个开发板编程不能烧录了,用 Smart flash programmer 2 解锁也不行,请问你是怎么可以重新烧录的?造成这种情况的问题是什么?感谢回答!

我先说一下我遇到的问题,“修改为(0x20000000 ),也就是32KB,那么image A-with-bootloader固件烧进去就无法启动了”,这的确是个bug,即使最新的Z-Stack 3.0.1(截止到2018.3.3)还是有这个bug,这是首先被我发现的(见:),目前已经得到TI工程师JasonB的确认了,解决方法你可以看一下e2e.ti.com zigbee板块上JasonB创建的置顶帖子协议栈issue wiki说明,"2.6 Modifying CC2538 Linker to utilize all 32k RAM causes lockup",导致这个bug的原因是运行堆栈放置的位置不恰当,TI当初只考虑了16K RAM,没考虑32K RAM,所以导致osal无法运行。
接下来说说你的问题,CC2538支持ping-pong的方式进行OTA,如果你是从ImageA升级到ImageB,再从ImageB升级到ImageA,以此类推,那么基本没有任何问题,如果你是ImageA升级到ImageA,或者ImageB升级到ImageB,即两次都升级同一个固件,那么就很有可能(应该说不是很有可能,是一定)导致芯片锁住,我也遇到这个问题了,此时smartRF programmer2也识别不到芯片,必须用TI给的命令行工具ArmProgConsole进行解决了,就是命令行下进行擦除整个芯片(当然IEEE等内置不会被擦,放心),下载位置在 

具体使用方法:
举报

更多回帖

发帖
×
20
完善资料,
赚取积分