CC2530 ZStack协议栈 调用MAC_MlmeResetReq函数 进入死循环?
时间:10-02
整理:3721RD
点击:
在CC2530的硬件板子上调试程序,下载TI的Sample例程,一开始一切都正常,但今天上电运行一段时间后,
发现程序突然像跑飞了一样,设断点仿真一看,发现函数执行到主函数的
ZMacInit(); -> stat = ZMacReset( TRUE ); -> stat = MAC_MlmeResetReq( SetDefaultPIB );-> ZMacInit();
-> stat = ZMacReset( TRUE );-> stat = MAC_MlmeResetReq( SetDefaultPIB );..........就这样一直死循环了,
我想问一下MAC_MlmeResetReq函数的内部做了哪些处理,为什么会导致这样的死循环现象,如何就解决呢?
你是用的哪个版本的协议扎,用的哪个例程,出现问题的时候,你看到的现象是什么。
这个函数主要做mac层的reset,在系统初始化的时候只调用一次。
非常感谢VV的回复,用的是z-stack2.5.1a,sampleApp,一开始都是正常运行,后面就出问题了,只有重新下载程序才会恢复正常,然后运行一段时间又出问题了,怀疑是受外界干扰导致程序代码部分被更改(因为出问题后,重新上电也无法恢复正常,除非擦书flash重新下程序),后来把程序部分的page锁死了,这个问题依然会出现,但是重新复位,会恢复正常。估计是硬件设计的原因。
你可以使用SmartRF Flash Programmer把Flash lock掉,这样可以看下问题还会不会出现。
但是只需要lock page 0-120就可以了,page121-126 是存放NV数据的,不能lock
我是在初始化程序里,直接把256kflash最后16Byte(0x7fff0~0x7ffff)写了00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe ,程序应该不会再被修改了,但是故障还是会出现,应该是干扰源引起程序跑飞