【Sipeed 博流BL808全能板】蓝牙OTA尝试
[复制链接]
本帖最后由 单笑寒 于 2023-2-12 22:59 编辑
评测四 蓝牙OTA尝试
最新蓝牙5.4规范刚刚发布(2023/1/31),更新一些为ESL电子价签准备的安全特性:
- 带响应的周期广播(Periodic Advertising with Response)
- 加密广播数据(Encrypted Advertising Data)
- LE GATT安全特征等级(Security Levels Characteristic)
- 广播编码选择(Advertising Coding Selection)
最近恰好在弄LZMA差分补丁升级、广播升级等功能,蓝牙作为一个通信通道,OTA在不好接线时进行维护功能就有很大作用,分BootLoader和APP两部分,通信协议可以分布在BootLoader或APP或两者,OTA service就会在APP呈现。
两阶段:APP进入BootLoader接收文件;BootLoader进入APP进行文件搬移重引导。APP进入BootLoader必然有个跳转控制点,这可以由profile下的特征来充当,ARM核有个暖复位NVIC_Reset就能切到BootLoader,BL808作为RISC-V应该也有对应复位切换函数;BootLoader重引导至新APP需要Flash操作和绝对地址跳转。故需添加升级profile即OTA Service。
一、升级文件
参考BL602的做法,在build.sh编译脚本加入CONFIG_BT_OAD_SERVER=1,但报错找不到OTA文件(只有bl702有,bl808没有提供),bl602却产生成功升级文件借助烧录工具BouffaloLabDevCube-v1.8.1:
二、APP添加OTA Service
不同厂家有不同做法,CSR是添加JSON描述符,Nordic是调用协议栈softdevice接口添加,后续都是编写对应特征回调来完成用户功能。博流的是通过修改配置文件prj_config.mk:
CONFIG_BT:=0
CONFIG_BT_CENTRAL:=1
CONFIG_BT_OBSERVER:=1
CONFIG_BT_PERIPHERAL:=1
CONFIG_BT_STACK_CLI:=1
配置项开启OTA_SERVER,但遗憾编译一直在标错,暂时没调通。然后调用boot2来跳转重启,详细说明见 。
|