cc2540cc2541 OAD与SNV

xiaoxiao2021-02-28  93

标题:关于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了。

转载请注明原文地址: https://www.6miu.com/read-96244.html

最新回复(0)