讲师博文
嵌入式OTA升级原理 来源 : 华清远见     2024-07-09

什么是OTA

OTA全称Over-the-Air Technology,意为空中下载技术。是通过移动通信的空中接口实现对移动终端设备进行远程管理的技术

OTA的出现

假如说一个公司的产品大批量出货了,发现了一个偶发性的BUG。这意味着,所有卖出去的产品,都得退回来重新烧录程序。这样不切实际,影响用户使用是一方面,召回设备的过程中所耗费的人力物力和时间成本对企业来讲是一笔很大的开销。

正是因为有这样的问题存在,所以OTA技术应运而生, OTA升级是一种无线远程固件升级技术,作用就是为了修改程序的bug,或者升级程序功能,像手机系统更新,还有就是我们现在很多车,也支持OTA固件升级。

以前单片机开发时,压力特别大,产品一定要在大批量上市前,进行系统测试,保证

出去以后不能有问题。毕竟不能像电脑或者手机上的软件那样,功能有BUG,直接远程升级就好了。以前单片机类的产品,大多数都不支持OTA升级,程序出现问题,就得让客户退回来改,后面随着物联网技术的发展,让传统硬件能够接入互联网,OTA升级才开始流行。其实OTA技术并没有想象中的那么难以理解,在大家有一定单片机技术的基础上还是很好接受和学习的。

OTA的认识

OTA升级,说简单点,就是对我们单片机Flash里面的程序进行更新,就和我们用烧录工具去更新程序一样,只是烧录方式,变成了我们先把程序(Bin文件)先上传到服务器,然后由服务器给每个设备下发程序更新指令和数据。

OTA升级的两种方式

方式1:

个方式将单片机的FLash分成了3块,分别是BootLoader、程序块A、程序块B。BootLoader是引导程序,假设FLASH-A是应用程序(程序块A),FLASH-B是备份程序区(程序块B)。单片机上电后,先进入启动程序bootLoader,然后根据bootLoader程序逻辑,再跳转到程序

块A或者B。程序块A和程序块B都是有效的程序,但同一时间,只能运行其中的一个,另外一块作为备份块。

假如当前程序运行的是A部分的代码,那我们固件升级的时候,就升级程序块B部分的代码,如果程序B升级OK,则由bootLoader程序,指向程序块B区的起始位置,下次程序重启,则执行程序块B。这种方式,需要单片机Flash的容量空间足够大,应用的程序代码不能超过Flash容量的50%,因为要存储3个程序。

方式2:

这种方式Flash空间由2部分组成,分别是BootLoader和FIASH(程序区),但需要外挂Flash芯片,用来保存新下载的程序。有固件升级的时候,先把升级的固件下载保存到外挂的Flash中,下载的程序验证OK后,由BootLoader将外部Flash中的固件更新到程序区,更新完跳转执行。

服务器和MCU的通讯机制

固件升级的服务器和单片机的通讯机制很重要,如果通讯机制设计的不够合理,会影响通

讯的稳定性。通讯机制这块的设计,我大概分为通讯流程和协议设计两部分,两者是相辅相成的,协议设计越好,通讯流程就越简单。

1.通讯流程:

首先,把要更新的固件上传到云平台,版本号要比原来的高。另外固件一般是bin格式文件。

如何生成bin 文件?

要生产bin 文件,需要在Keil按照下图配置:

fromelf.exe --bin -o "$L@L.bin" "#L"

单片机定时查询服务器的固件状态,看是否有新的固件需要更新。

有新的固件,需要先获取固件的版本,判断是否比主机当前的版本号高,如果是,则更新固件。

同时,还会获取最新固件的大小(字节的个数),数据包的个数,固件的校验值等。

主机按照数据包的ID,向服务器获取固件,每获取一包数据就立即校验数据,校验通过,再获取下一包的数据。所有固件都下载完成后,"需要对下载固件进行整体校验,校验通过,则说明下载的固件有效。

重启设备,程序自动跳转到启动程序,更新程序区部分的固件,固件升级成功。

大致通讯流程设计好以后,我们还要设计一个

通讯协议:

OTA 固件升级协议:

OTA 固件升级,共包括两部分:查询是否有最新固件 获取固件数据:

查询服务器是否有新的固件版本 0x32 0x33

MCU发送->服务器

单片机程序设计

单片机要写两个程序,一个是bootLoader程序,一个是产品应用程序 (APP..)。

1.bootLoader程序

设备每次上电前,会先执行BootLoader程序该程序会判断产品应用程序,是否需要更新,

更新完后,重新跳转到新的产品应用程序执行,下面是跳转代码。

2.产品应用程序

主要是产品的功能。

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:探索性数据分析(EDA)秘诀——时间序列预测篇

下一篇:一文弄懂RNN、LSTM 和 GRU单元 !

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号