zstack 怎么修改Ieee 地址
各位看官你好:
通过修改 zb_WriteConfiguration(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,newExtAddr); 可以改变IEEE地址,但是不能再Programmer中读出来,而且在重新烧写程序后,mac地址又恢复了,怎样修改mac地址永久保存呢?通过程序修改Secondary 的IEEE地址呢?
坐等回复,谢谢!
试下开启 nv init(先把nv restore关闭)
zb_WriteConfiguration(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,newExtAddr); 是把IEEE地址写到了Flash NV区域中,而不是把IEEE地址写到Flash Secondary IEEE地址区中,你用Programmer新的程序的时候,因为生成的Hex文件,存放Secondary 的IEEE的地址上数据又被重新擦除掉了,所以每次重新写程序以后,自己写的地址又不在了。
所以你有几种方法可以做
1) 每次在程序启动的时候,在下面的地址和offset下面写入数据,这个地址就是存放Secondary IEEE地址的
HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET
2)利用Flash Programmer烧写好程序以后,利用Flash Programmer写Secondary IEEE地址
3)直接修改hex文件,把hex文件打开,然后在HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET对应的地方,把8个字节的IEEE地址写上去,也可以。
建议你理解下,协议栈程序里面zmain_ext_addr(void)函数的处理逻辑。
你好: 请问怎么使用程序去修改mac地址,我想用协调器写一个配置mac地址的程序,通过zigbee网络给很多协调器分配自定义的有规律,自定义的mac地址 然后永久保存
自己通过HalFlashWrite函数去写就可以了,写的位置是
HAL_FLASH_IEEE_PAGE,
HAL_FLASH_IEEE_OSET