标题:关于cc254x中OAD的问题
类别:cc254x
正文:
最近做的项目,蓝牙设备需要添加OAD更新的功能,在使用OAD的过程中遇到一个问题,项目中用于标识设备唯一性的方式是通过设备的SSID,而SSID是写死在程序当中的。这样一来,在设备更新完固件后,它的SSID便会改变。
在思考诸多方案之后,发现在下位端保存SSID,保证在OAD更新后不会改变原SSID的方案最佳。
工欲善其事,必先利其器。首先要先从TI关于OAD的文档入手,看一看有没有能够获得启发的地方,经过阅读发现在TI所提供的OAD_for_CC254x文档中有提及到关于NV的部分:
图1:OAD_for_CC254x.pdf
这里有一行OAD_KEEP_NV_PAGES,这意味着,在编译时如果加上宏定义OAD_KEEP_NV_PAGES,那么在OAD升级完成后,NV内存页的内容将不会收到影响。这个信息给了我启发,可以利用NV存储来保存SSID,这样可以保证在OAD更新后不会改变设备的原SSID。
这里用osal自带的snv函数来做SSID的保存工作:
首先读取存储ssid的NV页,如果当前NV页没有存储任何值,则将当前的ssidName存储到相应的NV页中,否则则将NV页中存储的ssid读取到设备上。
经过测试后,无论OAD怎么升级,都不会更改设备的SSID了。