使用芯片:CC2530
协议栈:ZHA1.2.2a
设备类型:协调器
需求:linux网关通过串口与协调器相连,进行在线升级
程序状态:参照文档《Serial_Boot_Loader_for_CC253x》,程序能够正常烧录和运行;
问题:
1、运行中想进行在线升级,网关给协调器发送一个复位命令,让协调器进入BOOT状态,但是发现程序没有进入BOOT程序,还是进入到协调器程序的开始端;
2、我看协议栈中有两个复位函数:SystemReset()和SystemResetSoft(),其中SystemReset()用的是看门狗复位,SystemResetSoft()用的是一个长跳转(asm("LJMP 0x0");)。
3、对这两个复位函数分别进行了测试:
1)、SystemReset()再任何情况下,程序都执行到应用程序;
2)、SystemResetSoft()只在上电后的第一次能执行到BOOT程序,以后就都执行到应用程序;
3)、上电或者人为拉低芯片的rest引脚,都是从BOOT执行的。
4、现在的问题是进行协调器程序升级时,无法对2530芯片进行断电,也没有专门的复位按钮,只能在软件中进行重启复位,请问需要做什么修改能让程序复位到BOOT程序中,然后进行升级操作?