OTA 在线升级

admin 2023年2月2日17:51:48评论27 views字数 3942阅读13分8秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

OTA 在线升级


OTA升级已经不是什么新鲜事,现在大多数物联网终端设备,基本具备这个功能。


今天以AT32为例给大家分享一下OTA升级的详细流程。

概述

中下载技术OTA(Over-the-Air Technology)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口,对产品中的固件程序进行更新升级。通常实现OTA功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序为Bootloader区域,第二个项目程序App代码为真正的功能代码,执行应用和升级。这两部分项目代码同时烧录在User Flash中。
图1. OTA代码执行流程

OTA 在线升级

在上图所示流程中,MCU复位后,从0x08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到Bootloader的main函数,如图标号①所示;在执行完Bootloader以后(App代码为图中FLASH灰底部分App程序的复位中断向量起始地址为0x08000004+N+M),跳转至App程序的复位向量表,取出App程序的复位中断向量的地址,并跳转执行App程序的复位中断服务程序,随后跳转至App程序的main函数,如图标号②和③所示,同样main函数为一个死循环,并且注意到此时AT32的FLASH,在不同位置上,共有两个中断向量表。
在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0x08000004中断向量表处,而不是App程序的中断向量表,如图标号④所示;程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回main函数继续运行,如图标号⑥所示。
通过以上两个过程的分析,我们知道OTA程序必须满足两个要求:

1) App程序必须在Bootloader程序之后的某个偏移量为x的地址开始。

2) 必须将App程序的中断向量表相应的移动,移动的偏移量为x。

AT32 USART OTA 快速使用方法


硬件资源

文档中是用AT-START-AT32F403A实验板的硬件条件为例,OTA demo源代码还包括AT32其他型号,用户只需编译对应型号工程烧录于AT-START实验板运行即可。

1) 指示灯LED2/LED3/LED4
2) USART1(PA9/PA10)

3) AT-START实验板

软件资源

1) tool_release

● IAP_Programmer.exe,PC机tool,用于演示OTA升级流程

2) source_code

● Bootloader,Bootloader源程序,运行LED2闪烁
● App_led3_toggle,App1源程序,运行LED3闪烁

● App_led4_toggle,App2源程序,运行LED4闪烁

注:工程基于keil v5建立,若用户需要在其他编译环境上使用,请参考对应BSP目录AT32F403A_407_Firmware_Library_V2.x.xprojectat_start_f403atemplates中各种编译环境(例如IAR6/7/8,keil 4/5,eclipse_gcc)进行对应修改即可。

OTA Demo 使用


本文档描述了两种常用的OTA应用demo,template app和dual app,后面章节会分别介绍。

1) 打开Bootloader工程源程序,选择对应MCU型号的target编译后下载到实验板
2) 打开IAP_Programmer.exe
3) 选择正确的串口、APP下载地址和bin文档,点击Download下载,如下图

4) 观察LED2/3/4闪烁,LED2闪烁-Bootloader工作,LED3闪烁-App1工作,LED4闪烁-App2工作

图2. IAP demo上位机
OTA 在线升级

Template app OTA程序设置

地址分布


图3. Flash地址分配

OTA 在线升级
注:Bootloader区域最后一个扇区,用于存放防止升级过程出错(掉电等异常情况)的flag,用户编译修改Bootloader时,要保证不覆盖flag的地址。

执行流程


OTA分为Bootloader、App和Template三部分,应用在App中执行,Template仅作为新App固件数据的临时存放空间。程序执行整体流程框图如下:

4. 程序执行流程
OTA 在线升级

Bootloader project 设置


1) Keil设置

图5. Bootloader project中address 1在Keil设置

OTA 在线升级

2) Bootloader源程序修改ota.h文件中

图6. Bootloader project中address 2在程序中设置

OTA 在线升级

App project 设置


OTA demo提供了2个App程序供测试用,皆以address 2(0x800 4000)为起始地址。App1 LED3闪烁,App2 LED4闪烁。以App1为例,设计步骤如下:

1) Keil工程设置

图7. App project中address 2在Keil设置

OTA 在线升级

2) App1源程序设置

图8. App project向量表偏移在程序中设置

OTA 在线升级

3) 编译生成bin文件

通过User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于OTA更新。通过以上3个步骤,我们就可以得到一个.bin的APP程序,通过Bootloader程序即可实现更新。

4) 开启debug app code功能

如果在设计App code过程中需要对App project进行单独调试,请按照以下操作。

● 先下载Bootloader工程
● 再调试App工程

Dual app OTA与程序设置

地址分布


图9. Flash地址分配

OTA 在线升级

注:Bootloader区域最后2个扇区,用于存放App是否正常的flag,用户编译修改Bootloader时,要保证不覆盖flag的地址。


执行流程


OTA分为Bootloader、App1和App2三部分,应用在App1或App2中执行。程序执行整体流程框图如下:

图10. 程序执行流程

OTA 在线升级


Bootloader project设置


3) Keil设置
图11. Bootloader project中address 1在Keil设置

OTA 在线升级

4) Bootloader源程序修改ota.h文件中

图12. Bootloader project中address 2在程序中设置
OTA 在线升级

App project设置


OTA demo提供了2个App程序供测试用,app_led3_toggle以0x800 4000为起始地址,app_led4_toggle以0x8080000为起始地址。App1 LED3闪烁,App2 LED4闪烁。以App1为例,设计步骤如下:

5) Keil工程设置
图13. App project中address 2在Keil设置

OTA 在线升级

6) App1源程序设置

图14. App project向量表偏移在程序中设置

OTA 在线升级

7) 编译生成bin文件
通过User选项卡,设置编译后调用fromelf.exe,根据.axf文件生成.bin文件,用于OTA更新。通过以上3个步骤,我们就可以得到一个.bin的APP程序,通过Bootloader程序即可实现更新。
8) 开启debug App code功能
如果在设计App code过程中需要对App project进行单独调试,请按照以下操作。
● 先下载Bootloader工程
● 再调试App工程

Bootloader/App与上位机串口通信协议

程序与上位机通信,接收固件升级数据,上位机端和嵌入式端通信协议如下:
1) 上位机通信协议
图15. 上位机通信协议

OTA 在线升级

2) 嵌入式端下位机通信协议

图16. 下位机通信协议

OTA 在线升级
ACK0xCCDD
NACK0xEEFF
Data0x31+Addr+数据+chenksum(1byte)
Addr:4bytes,高位在前
Kbytes,下载数据,不足2K内容填充0xFF
Checksum:1byte,4bytes的Addr+2KBytes数据的校验和的低八位

来源:车端



更多文章

智能网联汽车信息安全综述

华为蔡建永:智能网联汽车的数字安全和功能安全挑战与思考

汽车数据合规要点

车载以太网技术发展与测试方法

车载以太网防火墙设计

SOA:整车架构下一代的升级方向

软件如何「吞噬」汽车?

汽车信息安全 TARA 分析方法实例简介

汽车FOTA信息安全规范及方法研究

联合国WP.29车辆网络安全法规正式发布

滴滴下架,我却看到数据安全的曙光

从特斯拉被约谈到车辆远程升级(OTA)技术的合规

如何通过CAN破解汽


10月精品课程:AutoSec汽车网络安全高级工程师技术培训,仅限前15位,报满即止。


会员权益: (点击可进入)谈思实验室VIP会员


END

OTA 在线升级

微信入群

谈思实验室专注智能汽车信息安全、预期功能安全、自动驾驶、以太网等汽车创新技术,为汽车行业提供最优质的学习交流服务,并依托强大的产业及专家资源,致力于打造汽车产业一流高效的商务平台。

 

每年谈思实验室举办数十场线上线下品牌活动,拥有数十个智能汽车创新技术的精品专题社群,覆盖BMW、Daimler、PSA、Audi、Volvo、Nissan、广汽、一汽、上汽、蔚来等近百家国内国际领先的汽车厂商专家,已经服务上万名智能汽车行业上下游产业链从业者。专属社群有:信息安全功能安全自动驾驶TARA渗透测试SOTIFWP.29以太网物联网安全等,现专题社群仍然开放,入满即止。


扫描二维码添加微信,根据提示,可以进入有意向的专题交流群,享受最新资讯及与业内专家互动机会。

OTA 在线升级


谈思实验室,为汽车科技赋能,推动产业创新发展!

原文始发于微信公众号(谈思实验室):OTA 在线升级

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月2日17:51:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   OTA 在线升级http://cn-sec.com/archives/1343514.html

发表评论

匿名网友 填写信息