天天看点

第二十四节 OAD空中升级

第二十四节  OAD空中升级

通过仿真器更新程序或者通过USB更新固件那都是一般人都可以实现的操作,但是要想实现OAD空中升级,这还是需要一定的技术能力。这一节我就带着大家完善这一能力。 OADn air download,指空中下载模式。当我们的产品发布以后,有时需要对固件进行升级,OAD是升级方式中的一种。配置BIM(Boot Image Manger)打开IAR,打开BLE-CC254x-1.4.0下的工程:C\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\BIM.eww,然后编译,下载到开发板中。

第二十四节 OAD空中升级

配置Image A

    打开OADExample工程,配置工程,添加如下几个宏

    FEATURE_OAD_BIM

    HAL_IMAGE_A

    FEATURE_OAD

    OAD_KEEP_NV_PAGES

第二十四节 OAD空中升级

(1) 打开simplePeripheral.c找到宏定义DEFAULT_ENABLE_UPDATE_REQUEST,将其改为FLASE。否则会影响BLEDevice Monitor对其进行空中升级,到时可以再改回来。

第二十四节 OAD空中升级

(2) IAR左侧导航中找到Profile文件夹,点击右键添加oad_target.c和oad_target.h两个文件,二文件位于C:\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD中。

第二十四节 OAD空中升级

(3) 在IAR导航中找到HAL→Target→MT254xboard→Driver,右键添加文件hal_crc.c,该文件位于C:\TexasInstruments\BLE-CC254x-1.4.0\Components\hal\target\MT254xboard中。

第二十四节 OAD空中升级

(4) 在刚才的simplePeripheral.c文件中,找到simplePeripheral_Init()函数,在里面添加OADTarget_AddService()函数。

第二十四节 OAD空中升级

(5) 在simplePeripheral.c的前面,添加引用OAD的头文件,OAD.h和OAD_target.h。

第二十四节 OAD空中升级

(6)  点击Project→Option…,或直接按Alt+F7,选择BuildActions,在Post-buildcommand line中添加:

"$PROJ_DIR$\..\..\common\cc2540\cc254x_ubl_pp.bat""$PROJ_DIR$" "rodUBL""$PROJ_DIR$\CC2540-OAD-ImgA\Exe\OADExample"

注意,各双引号之间只有一个空格。注意图中红框标的部分,Image_A是和之前第1步对应的。

第二十四节 OAD空中升级

(7) 点击Project→Option…,或直接按Alt+F7,选择Linker,选择Config,Linker Configurationfile中勾选Override default,添加C:\TexasInstruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\cc254x_f256_imgA.xcl。

第二十四节 OAD空中升级

8) 点击Project→Option…,或直接按Alt+F7,选择Linker,选择Extra Output。

第二十四节 OAD空中升级

(9) Extra Option添加Hex文件的输出。

第二十四节 OAD空中升级

(10) 点击OK,编译下载,如果出现如下错误,是因为我们使用的是IAR8051 8.30版本,如果你使用的是IAR8.20版本就没有这问题。

第二十四节 OAD空中升级

(11) 这个问题是因为使用了虚拟寄存器导致的,我们找到如下文件。

第二十四节 OAD空中升级

(12) 对文件的115行进行如下修改,将虚拟寄存器注释掉。

第二十四节 OAD空中升级

(13) 编译后,可以看到我们生成的文件

第二十四节 OAD空中升级

(14) 我们将hex文件叠加到BIM后面

第二十四节 OAD空中升级

这样ImageA就成功烧录进开发板了。

配置Image B

(1) 方法如Image A,其它要注意的几个地方:点击Project→Option…,或直接按Alt+F7,选择C/C++Compiler,选择Preprocessor,将Defined symbols中的HAL_IMAGE_A改成B。

第二十四节 OAD空中升级

(2) 点击Project→Option…,或直接按Alt+F7,选择Linker,选择Config,将Linker Configuration file中的文件改为B。

第二十四节 OAD空中升级

(3) 保存后编译,同样的可以看到生成的文件。

第二十四节 OAD空中升级

(4) 为了区分A和B镜像,我们将最终结果改名。

第二十四节 OAD空中升级

空中升级

有了bin文件就可以进行空中升级了,打开BLE Device Monitor(没有安装的需要安装),打开后软件会自动扫描设备,如图,我们扫描到了开发板。

第二十四节 OAD空中升级

(2) 连接后,打开OAD

第二十四节 OAD空中升级

(3) 点击file,选择Progame(OAD),选择生成的bin文件,可以看到我们当前运行的是A固件

第二十四节 OAD空中升级

(4) 点击start,当进行到100%,就完成了固件空中升级。

第二十四节 OAD空中升级

(5) 升级后再次打开OAD选项,可以看到选择运行的固件已经是B版本的了。

第二十四节 OAD空中升级

注意:

要把 BLE协议栈BLE-CC254x-1.4.0 安装在C盘,在其他盘符下没有生成bin文件。

本文章转载自

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx

请勿用于商业