针对于入网PANID黑名单处理
对于这个http://processors.wiki.ti.com/index.php/Black_list_implementation;我想到一个方案,将zgBlackList_t中增加条目uint8 crc[MAX_BLACK_LIST_ITEM]用来验证记录的PANID是否正确;zgBlackList不存储在NV中,zgBlackList在上电的时候初始化,软件复位不初始化,终端在一定时间内没有搜索到新网络初始化zgBlackList;这样我达到一个效果:终端会不停请求加入空间内已经存在的每一个网络,直到成功验证为止;
现在我的问题是xdata在复位后会在汇编代码?cmain中全部置零;我该怎么修改这段程序,请提供方案
进入了错误的PAN,都会Soft Restart,不保存NV怎么行?
黑名单倒是有个问题,当一个节点入网后,等待密钥,这个时候传输失败,本来正确的PANID也被输入到黑名单了。
不过这个问题我已经解决了。
我在仿真的时候没有勾选run to main(),发现软件复位后PC指针在0x0000时xdata并没有被修改,保持软件复位前的数据,我的目的是让终端循环尝试加入空间中的所有网络。如果保存在nv中,将可能很快就达到flash的擦写次数
你要把黑名单的空间设置成__no_init形式才行,另外NV不用担心flash次数
谢谢Aries Lord的回答,这个方法可以,另外我也说明一下,我查过datasheet,cc2530的flash擦写次数为2万次,如果按我之前的方案1min中复位一下nv,那么是不是在14天将达到flash的擦写次数,难道nv不是存储在flash里吗
NV RAM并没有频繁的去擦除,而只是把用过的区域编辑为“废”,然后在一个未有写过的区域写入新数据。