0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

空中下载技术OTA升级的实现原理及过程

智能汽车电子与软件 来源:糖果Autosar 2023-01-04 09:15 次阅读

一、简介

1.1 概念

OTA:Over-the-Air Technology,即空中下载技术。

OTA升级:通过OTA方式实现固件或软件的升级。

只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙

通过有线方式进行升级,叫本地升级,比如通过UARTUSB或者SPI通信接口来升级设备固件。

1.2 优点

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

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

3.在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就

变得空前高涨,设备不再像传统设备一样一经出售就不再变更。通过固件升级用户提供更好的服务。

1.3 实现原理

核心流程:

1.制作升级包

2.下载升级包

3.验签升级包

4.更新程序

e6e70ee8-8ba1-11ed-bfe3-dac502259ad0.png

下载方式:

不管采用OTA方式还是有线通信方式升级,下载升级包的方式包括后台式下载和非后台式下载两种模式。

后台式下载:

在升级的时候,新固件在后台悄悄下载,即新固件下载属于应用程序功能的一部分,在新固件下载过程中,应用可以正常使用,也就是说整个下载过程对用户来说是无感的,下载完成后,系统再跳到BootLoader程序,由BootLoader完成新固件覆盖老固件的操作。比如智能手机升级Android或者iOS系统都是采用后台式方式,新系统下载过程中,手机可以正常使用。

e6f44824-8ba1-11ed-bfe3-dac502259ad0.png

非后台式下载:

在升级的时候,系统需要先从应用程序跳入到BootLoader程序,由BootLoader进行新固件下载工作,下载完成后BootLoader继续完成新固件覆盖老固件的操作,至此升级结束。早先的功能机就是采用非后台来升级操作系统的,即用户需要先长按某些按键进入bootloader模式,然后再进行升级,整个升级过程中手机正常功能都无法使用。

e700c57c-8ba1-11ed-bfe3-dac502259ad0.png

新旧固件覆盖模式:

新固件替换老固件覆盖的两种方式:双区模式和单区模式。

双区模式:

双区模式中老固件和新固件在flash中各占一块bank(存储区)。假设老固件放在bank0(运行区)中,新固件放在bank1(下载区)中,升级的时候,应用程序先把新固件下载到bank1中,只有当新固件下载完成并校验成功后,系统才会跳入BootLoader程序,然后擦除老固件所在的bank0区,并把bank1的新固件拷贝到bank0中。

后台式下载必须采用双区模式进行升级。

优点:

升级过程中出现问题或者新固件有问题,它还可以选择之前的老固件老系统继续执行而不受其影响。

缺点:

多占用flash空间的一个存储区,在系统资源比较紧张的时候较为困难。

e70ee31e-8ba1-11ed-bfe3-dac502259ad0.png

单区模式:

单区模式的非后台式下载只有一个bank0(运行区),老固件和新固件共享这一个bank0。升级的时候,进入bootloader程序后先擦除老固件,然后直接把新固件下载到同一个bank中,下载完成后校验新固件的有效性,新固件有效升级完成,否则要求重来。

优点:

跟双区模式相比,单区模式节省了Flash空间的一个bank,在系统资源比较紧张的时候,单区模式是一个不错的选择。

缺点:

如果升级过程中出现问题或者新固件有问题,单区模式碰到这种情况就只能一直待在bootloader中,然后等待再次升级尝试,此时设备的正常功能已无法使用,从用户使用这个角度来说,可以说此时设备已经“变砖”了。

相比较,双区模式虽然牺牲了很多存储空间,但是换来了更好的升级体验。

e71f3dd6-8ba1-11ed-bfe3-dac502259ad0.png

二、MCU OTA升级

以MCU(微控制器)固件升级为例,讲解嵌入式裸机程序的OTA升级。由于裸机固件是固化在设备的存储器(如flash)中,即存储器中保存的是机器码,对MCU进行OTA固件升级,也就是要实现通过OTA方式将存储器中旧固件的机器码替换为新固件的机器码。

e72d3a76-8ba1-11ed-bfe3-dac502259ad0.png

数字签名

签名:

A给B发送消息,A先计算出消息的消息摘要,然后使用自己的私钥加密消息摘要,被加密的消息摘要就是签名。

验签:

B收到消息后,也会使用和A相同的方法计算消息摘要,然后用A的公钥解密签名,并与自己计算出来的消息

摘要进行比较,如果相同则说明消息是A发送给B的,同时,A也无法否认自己发送消息给B的事实。

(B使用A的公钥解密签名文件的过程,叫做"验签")

e753f30a-8ba1-11ed-bfe3-dac502259ad0.png

密码学基础概念:

1.什么是消息摘要?

2.什么是非对称加解密?私钥与公钥?

3.什么是数字签名?

数字签名的作用:

保证数据完整性,机密性和发送方角色的不可抵赖性。

消息摘要函数:

MD4、MD5、SHA-1、SHA-256、SHA-384、SHA-512

数字签名算法:

RSA、Rabin方式、ElGamal方式、DSA

2.1 制作升级包

通过签名工具使用签名算法对固件进行数字签名,签名后的文件即为升级包。

升级包的内容一般包括firmware、header和signature value。

Firmware:固件

Header:头部信息。存放配置信息,如版本号、产品类型等。

Signature value:签名值。对firmware和header签名后的值。

e78616c8-8ba1-11ed-bfe3-dac502259ad0.png

签名工具:

上位机软件,能计算固件的签名值,并将固件打包为升级包的格式。

固件签名:

上位机软件先计算整个固件的消息摘要,使用非对称密码的私钥对摘要进行加密,

被加密后的消息摘要数据就是签名值。

固件签名的意义:

计算hash值可以识别固件是否被篡改和伪装,确保固件的完整性。

使用非对称秘钥签名方便后续验证升级包身份的合法性。

2.2 下载升级包

根据上位机软件和MCU设备约定的通信协议,上位机软件将升级包通过OTA方式发送给MCU设备,

MCU设备收到数据后,根据通信协议解析出升级包的数据,并将升级包的数据保存到存储器中。

通信协议的作用:

通讯双方约定俗成地用于数据交流的格式。

下载的方式:

1.在应用程序中下载:后台式

2.在BootLoader中下载:非后台式

2.3 验签升级包

MCU设备接收完所有的升级包后,先计算升级包中固件的摘要,然后使用非对称秘钥的

公钥解密升级包的签名值,如果解密出来的固件摘要与自己计算的摘要相同,则验签成功。

2.4 更新固件

验签成功保证了固件的完整性和合法性后,MCU设备从应用程序进入BootLoader程序,

在BootLoader程序中将flash中的新固件数据搬运到旧固件的存储区,将其覆盖。

然后BootLoader程序启动固件运行,此时固件为新固件。

flash固件数据更新:

擦除flash,写flash。

三、Linux OTA升级

Linux系统的组成:

主要由三大部分组成,包括uboot(引导启动程序)、kernel(内核)和rootfs(根文件系统)。

三者在flash中的分区如下:

应用程序存放于rootfs。

e7904dfa-8ba1-11ed-bfe3-dac502259ad0.png

Linux系统的启动流程:

e79c24fe-8ba1-11ed-bfe3-dac502259ad0.png

3.1 系统升级

Linux系统由ubootkernel ootfs三大部分组成,对Linux系统进行升级,也就是对flash中这三个分区的数据进行更新替换。

由于ubootkernel ootfs在flash分区中是以二进制数据存储的,与MCU固件在flash中存的是二进制数据一样,包括ubootkernel ootfs的升级文件也是以二进制数方式直接写入到对应的Flash分区。其升级方式与MCU固件的升级原理基本是一致的。

一般可在uboot中下载升级包来升级ubootkernel ootfs ,与MCU在BootLoader程序中完成升级类似。

e7a78236-8ba1-11ed-bfe3-dac502259ad0.png

3.2 应用程序升级

在Linux系统中,应用程序是存放在文件系统中,并以可执行程序文件的方式存在,其在系统中就是文件,这与MCU固件存放在flash分区的方式不同。

应用程序的升级流程与MCU固件、Linux系统升级基本一致。应用程序的升级除了可以升级可执行文件外,还可以升级配置文件等。

应用程序升级流程:

制作升级包(打包签名工具)、下载升级包(下载工具)、升级包验签、程序更新

与MCU OTA升级区别:

制作升级包:将应用程序相关的文件(可执行程序、库文件、配置文件等)打包为压缩包

作为一个整体再进行签名。

e7b39706-8ba1-11ed-bfe3-dac502259ad0.png

升级包下载和验签通过后,将压缩包解压,可以得到应用程序的相关文件。

应用程序的更新,可以通过启动应用程序的程序来更新,如启动脚本、启动程序,类似MCU升级的BootLoader程序作用。

更新方式:

1.直接覆盖旧程序;

2.保留旧程序,执行新程序;

直接覆盖旧程序:

e7be8f76-8ba1-11ed-bfe3-dac502259ad0.png

保留旧程序,执行新程序:

pingpong操作

e7dd7378-8ba1-11ed-bfe3-dac502259ad0.png

四、总结

OTA升级的核心:

e7ead1b2-8ba1-11ed-bfe3-dac502259ad0.png

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    59

    文章

    7438

    浏览量

    258273
  • 无线通信
    +关注

    关注

    56

    文章

    4202

    浏览量

    142356
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89674

原文标题:OTA升级的实现原理

文章出处:【微信号:智能汽车电子与软件,微信公众号:智能汽车电子与软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    技术帖 | RK3568开发板的OTA升级教程

    说起OTA我们应该都不陌生,它是一种可以为设备无损失升级系统的方式,能将新功能远程部署到产品上。我们不仅可以通过网络下载OTA升级包,也可以
    的头像 发表于 04-20 08:01 395次阅读
    <b class='flag-5'>技术</b>帖 | RK3568开发板的<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>教程

    ota升级是什么意思 ota升级有什么用

    OTA(Over-the-Air)升级是指通过无线网络,将软件、固件或系统的新版本传输到支持的设备上进行更新和安装的过程。这一技术广泛应用于手机、智能电视、汽车等各类智能设备中。本文将
    的头像 发表于 02-02 10:25 2582次阅读

    深入了解物联网设备的OTA升级机制

    OTA(Over-The-Air,空中下载技术)是一种无线传输技术,用于在物联网设备之间进行远程更新和配置。OTA指的是通过无线通信网络来远
    发表于 01-21 10:03 477次阅读
    深入了解物联网设备的<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>机制

    如何通过雅特力AT32WB415的蓝牙模块来进行OTA升级

    概述OTA(Over-The-AirTechnology)即空中下载技术,利用OTA技术可以在不接触(接线)的情况下对芯片程序进行
    的头像 发表于 12-20 08:15 293次阅读
    如何通过雅特力AT32WB415的蓝牙模块来进行<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>

    RX系列帮您实现二级MCU OTA升级:FreeRTOS篇

    RX系列帮您实现二级MCU OTA升级:FreeRTOS篇
    的头像 发表于 10-26 18:04 503次阅读
    RX系列帮您<b class='flag-5'>实现</b>二级MCU <b class='flag-5'>OTA</b><b class='flag-5'>升级</b>:FreeRTOS篇

    AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新

    AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新
    的头像 发表于 10-26 17:09 926次阅读
    AT32 MCU如何使用<b class='flag-5'>OTA</b>通过USART<b class='flag-5'>实现</b>对固件的在线<b class='flag-5'>升级</b>更新

    如何“助攻”物联设备远程OTA升级

    ?OverTheAir,既空中下载的意思,具体指远程无线升级方式。随着全球物联网(IoT)快速发展,物联网设备不再是一个功能固化的产品,而是一个持续更新的智能设备,在整个生命周期内
    的头像 发表于 10-14 08:25 375次阅读
    如何“助攻”物联设备远程<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>

    手把手教你OTA升级开发

    。具体升级的动作由升级脚本控制。本文将介绍如何针对OpenHarmony L2场景适配updater模式。主要内容包括: *1.OTA升级实现
    发表于 08-22 09:13

    详解蓝牙空中升级(BLE OTA)原理与步骤

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级
    的头像 发表于 07-10 09:36 3970次阅读
    详解蓝牙<b class='flag-5'>空中</b><b class='flag-5'>升级</b>(BLE <b class='flag-5'>OTA</b>)原理与步骤

    嵌入式OTA升级的原理

    OTA:Over-the-Air Technology,即空中下载技术
    发表于 07-05 10:37 525次阅读
    嵌入式<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>的原理

    STM32的OTA远程升级

    上次发过SD卡的Bootloader离线升级后,应大家的要求,这次就讲一下STM32的OTA远程升级OTA又叫空中下载
    的头像 发表于 06-22 10:01 6496次阅读
    STM32的<b class='flag-5'>OTA</b>远程<b class='flag-5'>升级</b>

    OTA为什么会升级失败?

    如今,几乎所有可联网的电子设备都支持远程升级OTA)功能,OTA 一是让电子设备能够支持更多的功能,二是能够修复一些应用程序中的漏洞。
    发表于 06-15 17:34 1910次阅读
    <b class='flag-5'>OTA</b>为什么会<b class='flag-5'>升级</b>失败?

    中微爱芯触摸MCU OTA功能介绍

    OTA(Over the Air Technology)空中下载技术是通过移动通信的空中接口实现对移动终端设备进行远程管理。近年来,随着物联
    发表于 06-15 15:40 729次阅读
    中微爱芯触摸MCU <b class='flag-5'>OTA</b>功能介绍

    基于电子电器架构的整车OTA设计方案

     OTA(Over-the-Air)即空中下载技术,是通过移动通信的接口实现对软件进行远程管理。OTA是汽车软件
    发表于 06-03 14:36 444次阅读
    基于电子电器架构的整车<b class='flag-5'>OTA</b>设计方案

    什么是OTA升级技术呢?OTA升级的原理和实现方式

    在平常的项目开发和调试中,下载程序一般使用的是外部下载器或者串口的方式实现对单片机的程序下载和刷新,这种方法在项目的开发阶段是常用的方式。
    发表于 05-20 15:51 8453次阅读
    什么是<b class='flag-5'>OTA</b><b class='flag-5'>升级</b><b class='flag-5'>技术</b>呢?<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>的原理和<b class='flag-5'>实现</b>方式