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

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

3天内不再提示

AURIX TC3XX系列最佳的SOTA方案

汽车ECU开发 来源:汽车ECU开发 2023-06-14 09:08 次阅读

01

什么是SOTA?

SOTA全称是云端软件升级(Software updates Over The Air),就是指在不连接烧写器的情况下,通过CANUART或其它通讯方式,实现应用程序的更新。 在进行SOTA时,需要把旧的应用程序擦除,把新的应用程序写入。常规的实现方式需要分别开发BootLoader程序和APP程序,MCU上电先运行BootLoader,BootLoader根据情况选择是否跳转到APP和是否进行程序更新。具体来说有以下几种方式: 方案一:更新程序时,由APP接收更新数据并暂存于Flash,再将APP更新标志位置位;MCU重启时,BootLoader检查更新标志位,如有效,则擦除旧的APP,再将暂存于Flash的新APP数据写入APP运行地址处。该方案的优点是更新数据的接收由APP完成,BootLoader不需要通讯协议栈,代码量更小,且数据传输中断时,原有APP不损坏。缺点是需要额外的Flash空间暂存更新数据。 方案二:BootLoader中内置通讯协议栈,更新时,先向MCU发送指令使其跳转到BootLoader,之后先擦除旧APP,在接收新APP的同时直接将其写入Flash的APP运行地址处。该方案的优点是不需要额外的Flash暂存数据,缺点是BootLoader代码更复杂,且如果数据传输发生中断,旧的APP将不能被恢复。该方案更适合Flash容量较小的MCU。 方案三:将方案一和方案二相结合,即在BootLoader程序中内置通讯协议栈,更新时,先向MCU发送指令使其跳转到BootLoader,之后接收更新数据的时候,采用方案一的方法,先将数据暂存于Flash,待数据全部接收完成后再擦除旧的APP,写入新的APP。该方案结合了方案一和方案二的优点,且能在没有APP或APP损坏的状态下实现程序更新。缺点是BootLoader代码量更大,Flash空间占用更大。 方案四:在Flash中划分出两块相同大小的区域,分为A区和B区,都用来存放APP,但同一时间下只有一个区的APP是有效的,分别设置一个标志位标识其有效性。初始状态下先将APP写入A区,更新的时候,将新的APP写入B区,再把A区的APP擦除,同时更新两个区的有效性标志位状态。BootLoader中判断哪个区的APP有效,就跳转到哪个区运行。这种方法不需要重复拷贝APP数据,但最大的一个缺陷是AB区的APP程序运行地址不同,需要分别编译,从而使得可应用性大大降低。 经过上面的分析,可以看出来每种方案都有其优缺点,对于Flash容量较小的MCU,通常采用方案二,因为没有过多的空间暂存APP更新数据。但对于TC3XX这一类的MCU来说,Flash容量通常都很大,足够用,所以通常要先把APP暂存下来再进行更新,防止数据传输中断导致APP不可用。上面的方案一、三、四都能实现,但并不完美。TC3XX系列的SOTA机制更类似于方案四,但它的Flash支持两种地址映射方式,从而使得APP编译时不需要区分AB区,使用相同的地址即可,从而避免了方案四的硬伤,为我们提供了一种最佳的SOTA方案。

02

TC3XX的Flash地址映射方式

我们以TC397的Flash为例,用于存储程序代码的PFlash的标准地址映射方式(Standard Address Map)如下,表中PF0-PF5代表物理意义上的5块Flash。 f72fb076-0a4e-11ee-962d-dac502259ad0.png 第二种地址映射方式被称为 Alternate Address Map,如下表所示,标准模式下PF0-1的地址范围现在被映射到了PF2-3,PF4的地址范围被映射到了PF5。 f760a816-0a4e-11ee-962d-dac502259ad0.png

03

TC3XX的SOTA功能描述

当SOTA功能激活时,PFLash被划分为两部分,一部分用来存储可执行代码(active bank),另一部分可用来读取和写入(inactive bank)。当APP更新完毕后,两个部分互换,即切换上面两种地址映射方式。在标准模式下使用PF0-1和PF4作为active bank,后文称作组A,在Alternate模式下使用PF2-3和PF5作为active bank,后文称作组B,就可以实现上述方案四,且能写入完全相同的APP程序,以相同的地址进行运行。 需要注意的是,所有NVM操作都是通过DMU使用PFLASH的物理系统地址执行的,也就是说,NVM操作总是使用标准的地址映射,而不管选择使用哪种地址映射。“NVM操作”是一个术语,用于任何针对FLASH的命令,如程序、擦除等,但不包括读取和执行代码。 有关SOTA地址映射的参数在Flash中的UCB(User Configuration Block)中进行配置,在UCB中配置后,只有当下次MCU复位的时候才会更新配置。

04

SOTA的配置参数

(1)SOTA Mode Enable 该参数决定是否开启SOTA模式,在寄存器Tuning Protection Configuration中的SWAPEN进行配置,定义如下: f789b59e-0a4e-11ee-962d-dac502259ad0.pngf7b1d15a-0a4e-11ee-962d-dac502259ad0.png (2)Bank Swap 在UCB_SWAP区域中,对SOTA模式下使用哪种地址映射进行配置。 UCB_SWAP区域包含以下内容: f7e01574-0a4e-11ee-962d-dac502259ad0.png 其中最重要的是前四个,我们分别来看一下: ① MARKERLx (x=0-15) f7f66d38-0a4e-11ee-962d-dac502259ad0.pngf808b740-0a4e-11ee-962d-dac502259ad0.png MARKERL中的SWAP就是标记使用标准地址映射还是Alternate地址映射。 ② MARKERHx (x=0-15) f81e49fc-0a4e-11ee-962d-dac502259ad0.png MARKERH中存着与之相对应的MARKERLx.SWAP的入口地址,是用来做校验的。 ③ CONFIRMATIONLx (x=0-15) f8431c64-0a4e-11ee-962d-dac502259ad0.png CONFIRMATIONL是确认代码,要写入固定的0x57B5327F,上面的MARKERLx.SWAP才有效。 ④ MARKERHx (x=0-15) f8740d92-0a4e-11ee-962d-dac502259ad0.png MARKERH中存着与之对应的 CONFIRMATIONLx.CODE的入口地址,也是用来做校验的。  

05

SOTA的初始化配置

初始化状态是使用标准地址映射,此时SOTA模式未启用。按以下步骤启用SOTA: ① 用烧写器把APP烧写进PFlash的组A地址处。 ② 向MARKERL0写入0x00000055。 ③ 向MARKERH0写入MARKERL0的系统地址。 ④ 向CONFERMATIONL0写入0x57B5327F。 ⑤ 向CONFERMATIONH0写入CONFERMATIONL0的系统地址。 ⑥ 将UCB_OTP0中SWAPEN标志位置为Enable。 ⑦ 重启MCU。 经过上面的步骤,就事MCU进入了SOTA模式,其中步骤②-⑤是为了启用标准地址映射。手册中给了如下的流程图供参考,其中一些加解密的步骤我这里省略了,暂时没有详细研究: f885e17a-0a4e-11ee-962d-dac502259ad0.png

06

SOTA的后续配置

上面说的是第一次启用SOTA时的配置,下面我们就来看一下SOTA启用后,进行APP更新的步骤: ① 将新的APP写入PFlash中未激活的部分,即上文提到的Inactive Bank,并进行准确性校验。 ② 如果新的APP被写入组B,则向MARKERLx.SWAP写入0x000000AA,启用Alternate地址映射模式;如果新的APP被写入组A,则向MARKERLx.SWAP写入0x00000055,启用标准地址映射模式。(x是0-15的值,从0开始向上递增,由上文可知UCB_SWAP最多能存储16组标志值,存满后再擦除重新写入。) ③ MARKERHx.ADDR、CONFIRMATIONLx.CODE和CONFIRMATIONHx.ADDR配置同上文。 ④ 向CONFIRMATIONL(x-1).CODE再次写入0xFFFFFFFF,来使上一组UCB_SWAP值失效。向PFlash再次写入全1的值不会导致PFlash操作错误。 手册中给了下面这个流程图供参考: f89ee148-0a4e-11ee-962d-dac502259ad0.png   以上就是Tricore TC3XX系列SOTA机制的介绍,我目前也只是看了手册,还没有实际运用过,有不正确的地方欢迎大家交流讨论。 最后只要将此文章分享至朋友圈,集20个赞,截图后台发给小编,即可获取下图小编整理的一些TC3XX的资料。

f96babec-0a4e-11ee-962d-dac502259ad0.png

f981f03c-0a4e-11ee-962d-dac502259ad0.png
责任编辑:彭菁

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

    关注

    67

    文章

    4348

    浏览量

    85622
  • APP
    APP
    +关注

    关注

    33

    文章

    1529

    浏览量

    71629
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • Aurix
    +关注

    关注

    1

    文章

    70

    浏览量

    10765

原文标题:AURIX TC3XX系列的SOTA机制详解

文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    英飞凌TC3XX系列多核MCU学习笔记(1)

    声明:本文是在学习英飞凌 TC3XX系列多核 MCU 过程中整理的笔记,便于后期复习!
    发表于 09-19 09:54 1263次阅读
    英飞凌<b class='flag-5'>TC3XX</b><b class='flag-5'>系列</b>多核MCU学习笔记(1)

    英飞凌TC3XX系列多核MCU学习笔记(3)

    TC3XX 系列属于AURIX™ 2G系列AURIX™ 2G系列
    发表于 09-19 10:00 962次阅读
    英飞凌<b class='flag-5'>TC3XX</b><b class='flag-5'>系列</b>多核MCU学习笔记(3)

    英飞凌TC3xx系列安全管理单元的使用

    本篇文档主要用来介绍英飞凌基于AURIX-2G TriCore 1.6.2架构的 TC3xx系列安全管理单元的使用。
    的头像 发表于 12-07 09:29 968次阅读
    英飞凌<b class='flag-5'>TC3xx</b><b class='flag-5'>系列</b>安全管理单元的使用

    AURIXTC3XX如何暂时仅启用/禁用CAN中断?

    你我使用的是 AURIXTC3XX。 在 CAN ISR 处理期间,如何暂时仅启用/禁用 CAN 中断?
    发表于 01-18 06:47

    Pflash恢复保护命令最终会在Aurix TC3xx控制器上重置目标是为什么?

    我正在连接 T32 调试器的 Aurix TC3xx 控制器评估板上测试 Pflash 读/写保护机制,我配置了 UCB_pFlash 和 UCB 调试,我成功解锁了 Pflash 保护,然后尝试再次锁定保护,最终进入目标重置。 我不知道为什么会这样。
    发表于 01-24 06:42

    SWAP是否适用于两个用于TC3xx系列控制器的独立软件?

    目前正在使用 Swap/Partitions 概念实现 SOTATC3xx 系列)。 检查为应用程序和引导加载程序实施 SOTA 的可行性。 1。对于两个独立的软件,
    发表于 01-30 07:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx调试flash读写功能,单独运行flash相关功能没有问题,但将flash相关功能集成到工程中。操作pflash就会进入trap中,查看了一些帖子说是要禁掉trap?请问怎么禁用trap?目前没找到相关函数
    发表于 01-31 06:21

    TC3xx系列是否支持RTC功能?

    请教各位,TC3xx系列芯片是否支持RTC功能,目前要记录snapshot的时间点(年月日时分秒)。
    发表于 02-02 07:53

    GCC和TASKING有什么区别?应该为AURIXTC3xx选择什么?

    GCC 和 TASKING 有什么区别? 我应该为 AURIXTC3xx 选择什么? 这将如何影响代码的运行?
    发表于 03-01 10:09

    英飞凌AURIX单片机的相关资料推荐

    包括AURIX™ -TC2xx Microcontroller TrainingAURIX™ -TC3xx Microcontroller TrainingAURIX™ TC2xx I
    发表于 01-27 07:28

    英飞凌AURIX单片机TC3xx系列助力电动交通发展

    为满足自动驾驶汽车和电动车的市场需求,英飞凌科技股份公司近日发布新一代 AURIX™单片机,即TC3xx,它是市场上同类器件中集成度最高的产品,实时性能是现有器件的3倍。
    发表于 03-24 13:42 5669次阅读

    关于英飞凌AURIX™单片机TC3xx系列的性能和应用

    英飞凌副总裁兼控制器业务总经理Peter Schaefer表示:“AURIX TC3xx系列器件将推进自动驾驶和电动汽车的发展。能够推出新一代高性能多核单片机,我们颇感到自豪,它将设立新的性能标准,其性能、加密和安全功能全都符合
    的头像 发表于 09-24 17:36 6886次阅读

    英飞凌 AURIX 单片机 培训文档链接

    包括AURIX™ -TC2xx Microcontroller TrainingAURIX™ -TC3xx Microcontroller TrainingAURIX™ TC2xx I
    发表于 12-03 16:06 19次下载
    英飞凌 <b class='flag-5'>AURIX</b> 单片机 培训文档链接

    基于Aurix TC3xx SWAP机制的SOTA实现

    随着芯片资源的不断扩充,增加了App(Application)升级方式的多样性。比如,本文要讨论的SOTA(Software Updates Over The Air),通过Aurix TC3xx SWAP机制,使得App的升级
    的头像 发表于 06-10 15:40 1020次阅读
    基于<b class='flag-5'>Aurix</b> <b class='flag-5'>TC3xx</b> SWAP机制的<b class='flag-5'>SOTA</b>实现

    英飞凌AURIX TC3xx和TRAVEO T2G系列微控制器介绍

    英飞凌市场领先的 AURIX TC3xx 和TRAVEO T2G 车用 MCU将率先支持Rust语言。虽然TRAVEO 使用的是 Rust 官方工具链和Arm Cortex-M 目标架构,但英飞凌的工具合作伙伴 HighTec EDV-Systeme 为
    发表于 06-20 15:07 535次阅读
    英飞凌<b class='flag-5'>AURIX</b> <b class='flag-5'>TC3xx</b>和TRAVEO T2G<b class='flag-5'>系列</b>微控制器介绍