CC2640之OAD固件升级(内置Flash)手动配置ImageB
2017-08-23 16:55
363 查看
转自:http://blog.csdn.net/zzfenglin/article/details/52336511
测试环境
协议栈版本:BLE-STACK V2.1IAR开发环境版本:IAR for Arm 7.40
硬件设备:Amo-SmartRF v2.0 开发板(对应TI官方的SmartRF06EB 开发板)
示例测试Demo工程:HeartRate工程
测试工具:BLE Device Monitor(PC)
配置ImageB
我们选择“HeartRate”工程来做演示,因为协议栈中的一些工程本身就已经配置ImageB,而“HeartRate”工程本身默认是没有配置ImageB的。
1.“CC2640App”中基于现有工程配置“FlashROM”创建一个新的工程配置,点击IAR菜单栏上“Project”,下拉菜单中选择“Edit
Configurations...”,操作截图如下:
点击之后,弹出如下对话框:
输入新的工程配置名“FlashOnly_OAD_ImgB”,然后点“OK”之后显示如下:
继续点“OK”,当前的工程配置就会切换到“FlashOnly_OAD_ImgB”。如下所示:
2.在工程名“CC2640App-FlashOnly_OAD_ImgB”上点击鼠标右键,下拉菜单中选择“Options...”,弹出工程配置对话框,截图如下:
在上图的配置框中,我们对其中的选项做如下配置:
(1)点击“C/C++ Compiler”---->“Preprocessor”。
在下面的“Additional include directories:(one per line)”中输入:
[cpp] view
plain copy
$PROJ_DIR$/../../../../../../../Projects/ble/Profiles/OAD/CC26xx
在“Defined symbols:”中输入:
[cpp] view
plain copy
ICALL_STACK0_ADDR=0xF000
FEATURE_OAD_ONCHIP
IMAGE_INVALIDATE
HAL_IMAGE_B
操作截图如下:
另外,注意“HeartRate”的工程默认是不广播的,我们为了方便测试,修改为开机启动就广播,所以我们需要将“ADVERTISE_WHEN_NOT_CONNECTED”定义为“TRUE”,截图如下:
注意:这个地方要根据你自己的工程情况来定,不是ImageB配置过程中必须严格参照修改的。
(2)点击“Build Acions”。
在“Post-build command line:”下的输入框中输入:
[cpp] view
plain copy
python "C:\Python27\Scripts\hex2bin.py" -r "6000:EFFF"
"$PROJ_DIR$\FlashOnly_OAD_ImgB\Exe\HeartRateAppFlashROM.hex"
"$PROJ_DIR$\FlashOnly_OAD_ImgB\Exe\OADbin.bin"
这里有几点需要注意的:
首先,上面三行输入进去的时候,每两行之间是一个空格,如果最后没有编译成功,就把全部命令复制出来确认一下。其次,注意路径和文件名,比如:
[cpp] view
plain copy
"$PROJ_DIR$\FlashOnly_OAD_ImgB\Exe\HeartRateAppFlashROM.hex"
这一条中的路径是我工程中的路径,确定下你的是不是,不是就改一下,而“HeartRateAppFlashROM.hex”文件是编译生成的hex文件,确定下你的工程生成的文件名,然后对应修改一下。
上述操作截图如下:
(3)点击“Linker”---->“Config”
在“Linker configuration file”下选择或者直接输入:
[cpp] view
plain copy
$PROJ_DIR$\..\..\..\..\..\common\cc26xx\IAR\cc26xx_ble_app_oad.icf
在“Configuration file symbol definitions:”下输入:
[cpp] view
plain copy
FLASH_ONLY_BUILD=1
操作截图如下:
(4)点击“Linker”---->“Checksum”
默认的配置截图如下:
首先,将“Fill unused memory”前的小框打上勾,然后将“Start”的值改为“0x6004”,将“End
address”的值改为“0xEFFF”。其次,将“Generate checksum”前的小框打上勾,确定“Algorith”选择的是“CRC16”,并且其值为“0x1021”,默认的值并不是这个,而在“CRC16”模式下不能改这个值,所以我们先将“Algorith”选择为“CRC
polynomial”,然后将后面的值修改为“0x1021”,然后再将“Algorith”选择为“CRC16”。
修改之后的截图如下:
这样,工程配置文件中的修改就结束了。
3.在IAR左侧工作区,右键点击“PROFILES”文件夹,下拉菜单选择“Add”,然后选择“Add
Files...”,操作截图如下:
点击之后,弹出如下文件选择框,然后到
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\OAD\CC26xx”路径下选择“oad.c”、“oad.h”、“oad_target_internalFlash.c”和“oadResetService.c”四个文件,操作截图如下:
选中之后,点“打开”即可。
4.当ImageB升级的时候,如果Flash中的“page 0”不能被升级,那ImageB就不应该使用ROM中的TI-RTOS,所以需要将
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Config”目录下的“appBLE.cfg”文件开头的如下两行代码屏蔽掉:
[cpp] view
plain copy
//var ROM = xdc.useModule('ti.sysbios.rom.ROM');
//ROM.romName = ROM.CC2650;
操作截图如下:
5.配置添加使ImageB无效化的服务和特征值
打开
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\HeartRate\CC26xx\Source\Application”目录下的“heartRate.c”文件。
(1)头文件引用部分添加如下代码:
[cpp] view
plain copy
#if defined(FEATURE_OAD) || defined(IMAGE_INVALIDATE)
#include "oad_target.h"
#include "oad.h"
#endif //FEATURE_OAD || IMAGE_INVALIDATE
(2)在“HeartRate_init”初始化函数中添加如下代码:
[cpp] view
plain copy
#ifdef IMAGE_INVALIDATE
Reset_addService();
#endif //IMAGE_INVALIDATE
操作截图如下:
6.重新编译CC2640App,会在如下路径下:
“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\HeartRate\CC26xx\IAR\Application\
CC2640\FlashOnly_OAD_ImgB\Exe”
下生成“OADbin.bin”文件,这就说明配置编译完成了。
修改ImageB的版本号
打开“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\OAD\CC26xx”目录下的“oad_target_internalFlash.c”文件,在文件的开头有个定义版本的宏:
[cpp] view
plain copy
#if !defined (OAD_IMAGE_VERSION)
#define OAD_IMAGE_VERSION 0x0000
#endif // OAD_IMAGE_VERSION
如果我们想把ImageB的版本修改为1,那我们就如下修改即可:
[cpp] view
plain copy
#if !defined (OAD_IMAGE_VERSION)
#define OAD_IMAGE_VERSION 0x0001
#endif // OAD_IMAGE_VERSION
修改之后,重新编译ImageB即可。
这样,我们的ImageB手动配置的过程就了解完了,如果你的工程本身没有配置ImageB,那你就可以参照上面的方法进行配置。至于烧录过程以及整个OAD的过程可以参看另一篇博文,链接地址如下:
点击打开OAD配置升级的博文链接
相关文章推荐
- CC2640之OAD固件升级(内置Flash)手动配置ImageB
- CC2640之OAD固件升级(内置Flash)
- CC2640之OAD固件升级(外置Flash)
- CC2640之OAD固件升级(内置Flash)
- CC2640之OAD固件升级(外置Flash)
- Linux 应用札记【五】手动配置火狐中的Adobe Flashplayer插件
- TFS 2010 基础配置手动升级到高级配置 安装实践
- AvrStudio 6.1 jtagice3固件手动升级
- 博科SAN交换机学习笔记之二:配置文件备份与固件升级 作者 LiaoJL | 转载时请务必以超链接形式标明文章原文链接和作者信息及本版权声明。 原文链接:http://www.liaojl.co
- 蓝牙4.0BLE cc2540 cc2541 ios OAD课程(空中固件升级)[原版的,多图]
- TFS 2010 基础配置手动升级到高级配置 安装实践
- A20怎么实现FLASH分区的私有数据在固件升级时不被清除
- Cisco SG200-26 设置 升级 固件和 配置VLAN (官方技术支持指导下)
- A20怎么实现FLASH分区的私有数据在固件升级时不被清除
- TFS 2010 基础配置手动升级到高级配置 安装实践
- Intel Galileo 更新板载Flash固件更新及Arduino软件配置(Windows8,64bit)
- Hadoop手动升级HA配置手册
- 教Kindle新手 手动升级Kindle固件至5.8.5.0.1 全过程
- 锐捷2126G部分基础配置(升级系统固件、telnet、vlan)
- TFS 2010 基础配置手动升级到高级配置 安装实践