嵌入式OTA升级流程

1 概念

OTA为OverTheAir的缩写,只要是通过无线通信方式实现固件或软件升级的,都可以叫OTA升级,比如网络/蓝牙。目前已广泛应用于物联网、车联网领域,例如智能手机、手表、智能家居等。

2 优点

2.1、通过OTA方式,可以对分布在各地的设备进行软件升级,而不必让运维人员各地奔波。

2.2、物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段。

2.3、在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。通过固件升级用户提供更好的服务。

3、OTA系统架构

3.1、各终端设备可单独通过无线网络,以http-get的形式访问OTA云服务器;

3.2、本地服务端定时访问OTA云服务器以更新固件版本,各终端设备再访问本地服务端,来更新固件;

4、终端设备OTA流程

一般OTA的程序由3部分组成:BootLoader区存放启动代码,App1区存放应用代码,App2区存放暂存的升级代码。BootLoader可以理解成是引导程序, 它的作用是启动正式的App应用程序。换言之, BootLoader是一个程序, App也是一个程序, BootLoader程序是用于启动App程序的

5、程序流程图

5.1、MCU启动阶段流程图

5.2、在线获取固件版本

6、OTA升级实例

6.1、STM32参照网上的例程分别编写bootloader、APP的代码,并将.bin包合并进行烧写;

6.2、这里分享一下ESP32的OTA编译过程

首先参考ESP32-OTA的官方代码,这里ESP32会自动帮你完成bootloader的编写以及APP中http-get升级固件的代码,只需你手动修改一些参数配置。

在SDK configuration editor中配置自定义Partition Table,手动修改partitions.csv,

根据需求对flash空间进行分配编写,这里分配了2个OTA存储区。

程序编译会根据你的配置成功后会自动生成4个.bin文件,再通过ESP32的flash_download_tool进行烧录,注意根据自己的partition table修改偏移位置。

$PROJECT_PATH/version.txt用于定义应用程序的版本,在http-get过程中,实际就是通过这个版本来判断是否需要进行升级。

7、实际测试

这里利用第三方软件在电脑上搭建http文件服务,并将合并生成的.bin固件上传至文件服务器,将实际的路径添加到终端的程序中,这就是终端通过http-get访问的路径。将终端设备与电脑连至同一局域网,即可进行OTA测试。

第一次版本检测发现不一致,于是进行OTA版本升级,升级完成后重启,再次比对版本,版本一致则无需升级。

#ifdef DEVICE_TYPE_BRUSH
    #define CONFIG_EXAMPLE_FIRMWARE_UPG_URL "http://172.16.171.221:8070/brush.bin"
#endif

要正确地在FTP协议中配置区分ASCII文件二进制文件的传输模式,首先需要明确两种模式的差异应用场景。ASCII文件通常用于文本文件的传输,而二进制文件用于图像、程序或其他非文本文件。 参考资源链接:[TCP/IP文件传输协议FTP详解](https://wenku.csdn.net/doc/3k5tv8dmdd) 在建立FTP连接时,用户可以通过FTP客户端命令行或者图形界面设置传输模式。对于文本文件,通常设置为ASCII模式,这是因为ASCII模式会将文件中的换行符转换为标准的网络换行符(CR LF),以保证在不同操作系统之间的兼容性。对于二进制文件,则设置为二进制模式,以确保文件数据的完整性不被改变。 下面是一个在命令行中配置ASCII模式二进制模式的示例: 1. 连接到FTP服务器: ```bash ftp [服务器地址] ``` 2. 输入用户名后,设置传输ASCII文件: ```bash ascii ``` 3. 设置传输二进制文件: ```bash binary ``` 在一些现代的FTP客户端软件中,通常会自动识别文件类型并选择合适的传输模式,但用户仍然可以通过菜单选项手动更改。 为确保理解FTP在文件传输中的应用,建议查阅《TCP/IP文件传输协议FTP详解》。该资料详细介绍了FTP的基本工作原理、传输模式以及在实际应用中的操作方法,能够帮助用户深入理解如何在不同场景下正确选择配置ASCII模式或二进制模式,从而有效管理控制文件传输过程。 参考资源链接:[TCP/IP文件传输协议FTP详解](https://wenku.csdn.net/doc/3k5tv8dmdd)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值