SimpleBLEPeripheral OAD Profile



SimpleBLEPeripheral OAD Profile

 

1.概述:

 

先对应工程编译准备好BIM.hex和ImageA.hex、ImageB.bin,可用SmartRF Flash Programmer直接烧录BIM.hex和ImageA.hex,先烧录BIM,选择,然后烧录ImageA,选择。再在PC端用BLE Device Monitor或者苹果手机端用TI BLE Multitool软件进行ImageB.bin文件的升级。

 

2.配置步骤:

 

打开相应的工程BIM,BIM工程无需配置。SimpleBLEPeripheral从机工程进行相关工程配置,如下:

ImageB.bin需要在应用开发完成后手动添加OADprofile,使能OAD空中升级功能。

第一步:在Projects\ble\common\cc2540路径下添加cc254x_f256_imgB.xcl文件。打开工程,在HAL目录下添加hal_crc.c文件,在PROFILES目录下添加oad_target.c,oad_target.h,oad.h三个文件。

第二步:在option C/C++Compiler-Preprocessor添加OAD头文件路径$PROJ_DIR$\..\..\Profiles\OAD

添加预处理宏:

FEATURE_OAD

OAD_KEEP_NV_PAGES

FEATURE_OAD_BIM

HAL_IMAGE_B

在linker-config中选择正确的链接文件$PROJ_DIR$\..\..\common\CC2540\cc254x_f256_imgB.xcl。

其他配置如下图:

 

在Build Actions选项Post-build command line栏中填写:

"$PROJ_DIR$\..\..\common\cc2540\cc254x_ubl_pp.bat""$PROJ_DIR$" "ProdUBL""$PROJ_DIR$\CC2541-OAD-ImgB\Exe\SimpleBLEPeripheral"

最后一对双引号中的参数是生成的bin文件的保存路径及文件名,请根据实际工程自行修改。

 

第三步:在主simpleBLEPeripheral.c文件中添加头文件包含:

#ifdefined FEATURE_OAD

 #include "oad.h"

 #include "oad_target.h"

#endif

在Init函数结尾添加oad profile注册函数:

 

#ifdefined FEATURE_OAD

 VOID OADTarget_AddService();                   // OAD Profile

#endif

 

在oad_target.c中修改OAD_IMAGE_VERSION版本,便于区别。

至此,应该可以成功编译并产生bin文件。

 

另外,ImageA.hex的编译跟ImageB一样,需要注意几点:

 

1.Options中将C/C++Compiler-Preprocessor里的HAL_IMAGE_B换成 HAL_IMAGE_A

 

2.BuildActions-post- build command line中OAD-ImgB修改为OAD-ImgA。

 

3.Linker-configurationlfile中xcl需要替换成如下:

 

$PROJ_DIR$\..\..\common\CC2540\cc254x_f256_imgA.xcl。

现在可以用BLE Device Monitor或者TI BLE Multitool进行ImageB.bin文件的升级了。

 

如图是用BLE Device Monitor进行bin文件的升级,整个过程大概一分钟左右,主要看文件大小和传输速度来决定。

 

补充几点:

 

1.工程要放在C盘,否则无法生成bin文件;修改批处理文件也可以放在其它盘:

 

Projects\ble\common\cc2540中cc254x_ubl_pp.bat需要修改为:

 

@echooff

 

%~d1

 

chdir%1\..\..\common\cc2540

 

startcc254x_ubl_pp.js %2 %3 %4 %5

 

2.编译优化建议打开。

3.代码中对flash的操作,一定要重新计算合适的操作地址,避免破坏代码。

4.ImageA/ImageB的连接参数决定了OAD的速度,根据需求自行修改。比如:

  1. //Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameterupdate request is enabled

    #defineDEFAULT_DESIRED_MIN_CONN_INTERVAL    16//80

     

    //Maximum connection interval (units of 1.25ms, 800=1000ms) if automaticparameter update request is enabled

    #defineDEFAULT_DESIRED_MAX_CONN_INTERVAL    16//800

     

    //Slave latency to use if automatic parameter update request is enabled

    #defineDEFAULT_DESIRED_SLAVE_LATENCY        0

     

    //Supervision timeout value (units of 10ms, 1000=10s) if automatic parameterupdate request is enabled

    #defineDEFAULT_DESIRED_CONN_TIMEOUT         50//1000

     

    //Whether to enable automatic parameter update request when a connection isformed

    #defineDEFAULT_ENABLE_UPDATE_REQUEST        FALSE //TRUE

更多技术文章浏览请关注:

百家号:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh

头条号:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值