Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9464169
  • 博文数量: 1750
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20091
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1750)

文章存档

2024年(26)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2015-05-28 17:31:37



TI的BLE支持空中固件升级,这是一个非常有意思的功能。今天我尝试了一下,下面把过程整理一下。

这是TI官方的视频,我基本就是照这个视频整理的。

上:http://focus.ti.com/cn/general/docs/video/Portal.tsp?entryid=0_nfn3dztm&lang=cn

下:http://focus.ti.com/cn/general/docs/video/Portal.tsp?entryid=0_0tlarhms&lang=cn

 

硬件平台:TIBLE开发套件 CC2541 Mini Development Kit,包括CC-DebuggerUSB DongleCC2541 Keyfob Demo

软件环境:IAR Embedded Workbench for 8051 IDE V8.20.2TIBLE Device Monitor V1.1.3,同时安装TIBLE协议栈BLE-CC254x-1.4.0.

 

一:配置BIMBoot Image Manger

打开IAR,打开BLE-CC254x-1.4.0下的工程C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\BIM.eww,然后编译,下载到Keyfob Demo中。

1

二、配置Image A

1. IAR中,选择ProjectEdit Configurations,选择New…,如图2所示,添加一个新的配置,起名就叫Image_A,点击OK,这时IAR界面的左边导航部分,就变成Image_A了,如图3

 

 

2

3

2. IAR中左侧导航中,找到App文件夹下的keyfobdemo.c文件,双击打开,找到宏定义DEFAULT_ENABLE_UPDATE_REQUEST,将其改为FALSE(原来是TRUE),见图4。否则会影响BLE Device Monitor对其进行空中升级,到时可以再改回来。

4

3. IAR左侧导航中找到Profile文件夹,点击右键添加oad_target.coad_target.h两个文件,见图5,二文件位于C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD中。

5

4. IAR导航中找到HALTargetCC2540EBDriver,右键添加文件hal_crc.c,见图6,该文件位于C:\Texas Instruments\BLE-CC254x-1.4.0\Components\hal\target\CC2540EB中。

6

5. 在刚才的keyfobdemo.c文件中,找到KeyFobApp_Init()函数,在里面添加OADTarget_AddService()函数,见图7.

7

6. keyfobdemo.c的前面,添加引用OAD的头文件,OAD.hOAD_target.h,见图8.

8

7. 点击ProjectOption…,或直接按Alt+F7,选择C/C++ Compiler,选择Preprocessor,在Additional include directories中添加路径$PROJ_DIR$\..\..\Profiles\OAD,在Defined symbols中添加:

FEATURE_OAD

OAD_KEEP_NV_PAGES

FEATURE_OAD_BIM

HAL_IMAGE_A

9

8. 点击ProjectOption…,或直接按Alt+F7,选择Build Actions,在Post-build command line中添加:

"$PROJ_DIR$\..\..\common\CC2540\cc254x_ubl_pp.bat" "$PROJ_DIRquot; "ProdUBL" "$PROJ_DIR$\Image_A\Exe\KeyFobDemo"

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

10

9. 点击ProjectOption…,或直接按Alt+F7,选择Linker,选择ConfigLinker Configurationfile中勾选Override default,添加C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\cc254x_f256_imgA.xcl,如图11.

11

10. 点击ProjectOption…,或直接按Alt+F7,选择Linker,选择Output,按图12进行设置。

12

11. 点击ProjectOption…,或直接按Alt+F7,选择Linker,选择Extra Output,勾选Override fileOutput format选择Intel-Extended,如图13所示。

13

12. 点击ProjectOption…,或直接按Alt+F7,选择Texas Instruments,选择Download,去掉Erase flash,如图14所示。

14

13. 编译,下载板子中,编译时可能会出现如图15所示的脚本错误,忽略即可。

15



三、配置Image B

方法如Image A,也是选择ProjectEdit Configurations,选择New…,添加Image_B,如图16. 其他的,在工程中添加文件,文件中添加代码等都已经在配置Image A时完成。

16

其他要注意的几个地方:

1. 点击ProjectOption…,或直接按Alt+F7,选择C/C++ Compiler,选择Preprocessor,将Defined symbols中的HAL_IMAGE_A改成B,见图17.

17

2. 点击ProjectOption…,或直接按Alt+F7,选择Build Actions,修改Post-build command line中的路径,改为Image_B,如图18所示。

18

3. 点击ProjectOption…,或直接按Alt+F7,选择Linker,选择Config,将Linker Configuration file中的文件改为B,如图19所示。

19

可以编译生成Hex文件后下载,注意,配置Image B生成Hex文件这一步并不是必须的。

四、生成bin文件

这一步是非常重要的,因为空中升级,目前只支持bin文件。以Image B为例,当然,也可以是Image A.

1. Image B工程中,点击ProjectOption…,或直接按Alt+F7,选择Linker,选择Extra Output,勾掉Override fileOutput format选择simple-code,如图20所示。

20

2. 打开之前添加的OAD_target.c文件,找到宏定义OAD_IMAGE_VERSION,将其改为0x0002(原来是0x0000),如图21所示。

21

编译后,在EXE文件夹中会生成bin文件。

五、空中升级

有了bin文件就可以进行空中升级了,找开BLE Device Monitor,同时打开KeyFobDemo,按键广播,Monitor会扫描到KeyFobDemo,点击connect之后,在Event log中会出现:

22

点击file,选择ProgameOAD),选择生成的bin文件,可以看到版本的不同:

23

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

24

 

记录:

1)要把 BLE协议栈BLE-CC254x-1.4.0 安装在C盘,在其他盘符下没有生成bin文件,不知道什么原因。我的系统是win7的,不知道有没有关系。

2)IAR要用8.20版的,血的教训。我用最新的8.30的折腾好几天,没有生成bin文件。8.20版本的下载: 或 

 

附件是我的上下两篇博文的PDF档及TI的官方OAD的文档。

附件:
下载次数: 80
下载次数: 100
标签:              
阅读(6016) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~