CC2530的flash不能随意加锁和解锁么
请问下大神:cc2530的flash不能随意的加锁和解锁么?
现象:设备随意的断电上电操作有可能会造成NV区数据丢失:
一批设备全部开启NV_RESTORE和NV_INIT,且已加入协调器组建的网络;某一时刻同时断电所有设备,然后过段时间在同时上电所有设备,会有一些设备无法通讯;抓包发现其网络PANID变化,导致不在同一网络。必须手动去清除,重新加网。
显然这样的操作是不可能的,因为我们的设备是在网络上销售。
预解决方法:怀疑是由于上电的时候,电源对设备的冲击导致设备flash被篡改(当然这仅仅是个猜测,因为还有DC-5V(干扰较小)供电的设备,其PANID也变化);
所以打算上电时加锁flash,稳定运行后解锁;
但是,我使用这个函数直接操作16位的lock bit,发现加锁和解锁根本不能配套起来使用。
uint8 unlock[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255};
uint8 lock[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x80};
HalFlashWrite(0xFFFF-3, unlock, 16);
HalFlashWrite(0xFFFF-3, lock, 16);
请问下该问题如何解决?
该问题加急~~~~~~~~~~~~~~~~~
很有可能是在断电,电压不稳或者波动比较大的时候,正在进行NV Flash的操作。
能否调试下,问题出在NLME_RestoreFromNV( void )这个函数里面
问题是这个函数不开源
NLME_RestoreFromNV( void )
TI啥时候能开源啊,反正细节问题挺多的。
有什么好一点的办法来解决?
1.地址不是0xFFF-3;
2.Flash写之前是要先Erase的;
3.然而这个lockbit好像是不能擦也不能写的。。。
