CC2340R5-蓝牙MCU芯片OAD升级相关使用说明
一、介绍
TI的OAD升级项目是基于他们公司的APP和MCU-BOOT程序和OAD-APP程序和OAD-BL程序由3部分共同完成,其中OAD-APP程序是例程:ON-CHIP-OAD这个程序,OAD-BL是persistent这个程序,如下图所示
二、关于MCU-BOOT程序
TI提供了配套的HEX文件,我们所需要更改的配置文件如下图所示
BOOT_PRIMARY_1_BASE_ADDRESS==定义意思是OAD-BL程序的启动地址
BOOT_PRIMARY_1_SIZE==定义是这个OAD-BL程序所占空间大小即预留区
#define BOOT_SECONDARY_1_BASE_ADDRESS 0x00032000
#define BOOT_SECONDARY_1_SIZE 0x0004a000
这两个宏的意思是OAD-APP程序的启动地址和预留大小
对于这2各区域的划分TI文档是建议按照他的例程来,也可以自己划分后面会补充如何知道这四个宏定义怎么改动
该程序的现象是:开发板上的红灯闪烁很快
三、关于OAD-BL程序
这个程序如下图所示,最重要的是两个Service程序
这里面的主要作用就是用来接受TI-app上所发来的升级文件信息,开箱即用基本上不需要修改,要修改的地方只有下图所示
这两个地方,后面发现不改也没有什么影响。这里的地址对应的就是MCU-boot程序的
BOOT_PRIMARY_1_BASE_ADDRESS和BOOT_PRIMARY_1_SIZE
四、关于OAD-APP程序
这个程序是主要运行的用户程序,实际使用的程序。这个程序他包含的OAD-服务是复位服务。所谓复位服务:跳转到OAD-BL程序上。
TI的文档中说,OAD-APP程序他至少需要包含复位程序才能使用。
这里两个起始地址和大小对应MCU-BOOT程序中下面两个宏定义
#define BOOT_SECONDARY_1_BASE_ADDRESS 0x00032000
#define BOOT_SECONDARY_1_SIZE 0x0004a000
他的size是按照1024k来计算,4a000约等于296k的大小
在这个OAD-APP程序内,需要将OAD服务的UUID改为TI的默认UUID才能够进行升级功能
#define TI_BASE_UUID_128( uuid ) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0,
0x00, 0x40, 0x51, 0x04, LO_UINT16( uuid ), HI_UINT16( uuid ), 0x00, 0xF0
四.一、调试OAD和非0地址开始的程序方法
进入DEBUG模式,然后等待出现下方的红字,在按照第3步来进行右键选择第一个选项。
在view中把箭头标记的东西调用出来,一般CCS都是默认弹出来,没有就自己选
首先看.map文件,确认你这个程序的入口地址,
计算方法:17行的APP_HDR_SLOT=orgin+length
第二步:输入启动地址,第三部复制到对应的PC指针和SP指针
最后直接点击运行即可。
此方法可以适用于所有的非0地址启动的程序
效果:
这样基本上就成功,发现板子在运行就没问题了。
五、UniFlash下载
按顺序添加,然后直接load
六、相关文档的链接以及部分OAD程序问题论坛
OAD常见问题处理链接:
CC2340R5: OAD detailed description - Bluetooth forum - Bluetooth®︎ - TI E2E support forums
文档链接:详细解释了MCU-BOOT-OAD-APP-OAD-BL三者之间的关系和流程图
//参考说明
CC2340R5: OAD detailed description - Bluetooth forum - Bluetooth®︎ - TI E2E support forums
//oad-github的镜像地址
//==OAD指南文章
2oad指南
CC2340R5: OAD detailed description - Bluetooth forum - Bluetooth®︎ - TI E2E support forums