BLE soc方案OTA学习随笔

1.OTA介绍

OTA(Over-the-Air Technology)通过⽆线升级的⽅式,将设备的程序进⾏升级更新。是DFU(Device Firmware Update)中的⼀种。当产品已经出售给消费者或者产线需要及时更新固件,⽤有线升级的⽅式就不太现实,比如埋在地下,挂在高楼等一些物联网设备,通过OTA对设备进⾏升级是⼀种很好的⽅式。
分类

1、运行模式角度

设备升级分为后台式和⾮后台式。后台式是指在下载升级⽂件的同时设备还能正常运⾏,⾮后台式则不能。
后台模式:升级前交互、⽂件下载、校验都在APP模式下进行,待收到执行升级命令后设备重新启动,系统跳到BootLoader模式,完成将新固件搬运⼯作,设备从新固件启动升级完成。这种⽅式,我们将它命名为SLB OTA。
⾮后台模式:收到升级命令后,设备写入升级标记,从应⽤模式切换到BootLoader模式,切换的⽅式是设备重启。BootLoader模式⽼固件已经被擦除,这时升级失败会⽆法退回到应⽤模式,⽽是以新的蓝⽛名表示处于BootLoader模式。如果升级⽂件接收成功,设备重新启动,升级完成。这种升级⽅式我们将它称为Single Bank OTA。

2、分区个数角度

双分区(Dual Bank):SLB OTA就是Dual Bank;在⾮后台模式下即可以是单分区也可以是双分区,但PHY6252产品⾮后台模式均是单分区。flash划分为APP运行区、备份区。升级文件通过无线下载后放在备份区,校验成功后程序进入boot模式进行备份区到运行区代码搬运。
单分区(Single Bank):收到下载命令后程序直接进入boot开始往APP区下载升级程序直至成功。

双分区的好处是即使升级失败,也不影响设备回到应⽤模式;不好的地⽅在于需要额外的存储空间。单分区的利弊刚好与之相反。不管是哪种升级⽅式,在升级失败后都可以进⾏⼆次升级,都不会出现“变砖”的情况

2.代码移植

本文主要对PHY62xx芯片串口透传示例移值OTA升级进行说明,文章分别对SLB和Single Bank两种OTA方式进行说明。约定 BLE Host 为手机端 App:PHYAPP 程序。

在这里插入图片描述

2.1 SLB OTA移植

移植SDK版本
PHY62XX_SDK_V3.1.2
移植目标工程
\example\ble_peripheral\bleUart_AT

1、bleUart_AT工程移植

(1)添加ppsp所有文件到工程目录profile下面,添加结果如图所示
在这里插入图片描述

(2)添加ppsp包含的头文件路径,添加结果如下图所示
在这里插入图片描述

(3)在OSAL_bleuart.c添加ota任务,并添加头文件,如下图:
在这里插入图片描述
在这里插入图片描述

(4)SRAM全部打开、减小连接间隔,如下图所示。

在这里插入图片描述
在这里插入图片描述

(5)打开分散加载文件scatter_load.sct,并添加ota_task.o、ppsp_impl.o、ppsp_serv.o到XIP如图所示.
在这里插入图片描述

(6)编译工程生成HEX文件

2、boot工程编译

打开\example\OTA\slboot路径下工程进行编译生成boot hex文件。

3、工程烧录

phypluskit配置如下图所示
在这里插入图片描述

4、制作升级固件

SLB升级方式需要.bin格式文件
(1)环境准备(windows):phython下载Download Python | Python.org
(2)选择要升级的APP到工具,生成hex16文件,如下图所示。
在这里插入图片描述

(3)使用ooo_bin.py脚本生成支持SLB升级的bin文件。
a.没有安装python的话先安装python。
b.b. ooo_bin.py在SDK的\example\OTA\slboot\目录下。
c. 把3.2步骤生成的bleuart_phy6222.hex16文件与ooo_bin.py放在同意目录。
d. 进入window cmd模式,并进入到ooo_bin.py所在目录
e. 在命令模式下输入python ooo_bin.py bleuart_phy6222.hex16
f. 执行完上述命令后,生成OTA文件bleuart_phy6222.hex16.bin,至此支持SLB ota的bin文件制作完成。
h. 如果遇到没有安装intelhex报错,先用pip install intelhex命令安装intelhex库。
g. 命令执行过程如下图所示.
在这里插入图片描述
在这里插入图片描述

5、使用App进行SLB升级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 Single Bank OTA升级

移植SDK版本
PHY62XX_SDK_V3.1.2
移植目标工程
\example\ble_peripheral\bleUart_AT

1、bleUart_AT工程移植

(1)打开bleUart_AT工程,添加ota_app_service.c到profile文件夹下,并添加对应的头文件路径。如下图所示
在这里插入图片描述

(2)添加ota_app_service.h头文件到bleuart.c文件夹下如下图所示

在这里插入图片描述

(3)添加ota_app_AddService服务到bleuart_Init函数中如下图所示

在这里插入图片描述

(4)参考上面的SLB OTA教程将SRAM全部打开。
(5)注意不能将MAC地址写死否则升级不成功,比如bleUart_At例程不将at_update_bd_addr注释掉,程序不能升级。
在这里插入图片描述

(6)编译生成APP HEX

2、boot工程编译

打开\example\OTA\OTA_internal_flash路径下工程进行编译生成boot hex文件。

3、烧录文件

phypluskit配置如下图所示
在这里插入图片描述

4、制作升级固件.通过烧录上位机即可生成。其生成方式见下图.

Single Bank OTA需要hex16文件
在这里插入图片描述

5、使用App进行Single Bank OTA升级,具体操作参考上述SLB OTA升级

说明:本文参考《https://blog.csdn.net/qq_38500207/article/details/124495561》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值