基于AurixTC3xxSWAP机制的SOTA实现|附demo下载

汽车ECU开发 2023-06-10 11:59

随着芯片资源的不断扩充,增加了App(Application)升级方式的多样性。比如,本文要讨论的SOTA(Software Updates Over The Air),通过Aurix TC3xx SWAP机制,使得App的升级更加便捷。本文讨论实现SOTA的一些关键性问题:

  1. Aurix TC3xx的内存映射机制

  2. SWAP配置及注意事项

1
Aurix TC3xx的内存映射机制

如果要支持SWAP功能,首先,硬件的内存资源需要足够。因为SWAP功能需要两个等大小的物理内存空间,用以存储程序。eg:App程序的大小为3Mbyte,如果要支持SWAP功能,至少需要硬件的PFlash空间>6Mbyte。先看一下TC39x手册中的内存空间及映射机制:

一、Standard Address Map

不启用SOTA功能时,App程序可以存在如下所示的PF0(Program Flash0)~ PF5(Program Flash5)中,空间大小共计16Mbyte,16Mbyte的空间划分在Segement A,如下所示:


、Alternate Address Map

启用SOTA功能时,PFlash被划分为两个Bank Group,即:A-Banks和B-Banks,这也就是我们常说的A/B分区,其中一个Banks被映射到CPU的可执行空间,这个Banks被称为激活区(Active Banks),未被映射到CPU执行空间的Banks被称为非激活区(Inactive Banks)。其中,PF0、PF1、PF4映射到A-Banks,PF2、PF3、PF5映射到B-Banks,如下所示:

对于TC39x,SWAP的空间可以达到7MByte,A/B分区如下所示:

A-Banks和B-Banks各使用7M的物理内存空间,而程序实际运行时,均可以映射到0xA0000000起始的虚拟地址空间,如下所示:

注意:

通过DMU(Data Memory Unit操作Flash时,需要操作Pflash映射的物理地址空间。即:Active Banks擦除Inactive Banks时,需要按照Inactive Banks映射的地址空间擦/写。

eg:A-Banks(Active Banks)的起始地址0xA0000000,B-Banks(Inactive Banks)的起始地址0xA0600000,A-Banks操作Flash Driver擦/写B-Banks时,操作的起始地址为0xA0600000。

2
SWAP配置及注意事项

1、SWAP使用的基本流程

对于SWAP功能的使能,包括基本的4个流程:
  1. 调整Linker文件(链接文件);

  2. 软件开发,主要指App程序开发,生成可执行文件(*.bin、*.Hex等);

  3. 将可执行文件烧录到PFlash中;

  4. 配置SWAP,包括:A/B选择配置,SWAP使能。

对应流程如下所示:

注意:这里的Reset,不能是Application Reset,推荐System Reset
(1)调整Linker文件
这里给出一个Linker文件调整的示意(不带HSM(Hardware Security Module)),如下所示:

对于TC397,A/B均可以分配7M空间,之后根据调整的链接文件,分别编译Project A和Project B,即:Project A对应A-Banks的Linker A,Project B对应B-Banks的Linker B,一般处理时,Linker A和Linker B共用同一个链接文件
本文关注的核心点:Configuring SWAP

2、SWAP配置

配置SWAP,需要配置UCB23(ORIG)和UCB31(COPY),选择映射地址。UCB位于DFlash0区域,UCB23(ORIG)和UCB31(COPY)的地址空间范围如下所示:

UCB23的格式固定如下:

SWAP的实例最多可以配置16个,但是,固件SSW(Startup Software )只选择最后一个有效的执行
(一)UCB_SWAP_ORIG_MARKERLx(x=0~15)
SWAP位域设置地址映射方式,即:上述提到的STD(Standard Address Map,0x55),ALT(Alternate Address Map,0xAA,如下所示:

(二)UCB_SWAP_ORIG_MARKERHx(x=0~15)

MARKERHx中存放对应MARKERLx.SWAP的入口地址。

(三)UCB_SWAP_ORIG_CONFIRMATIONLx(x=0~15)

如果要MARKERLx.SWAP有效,需要在UCB_SWAP_ORIG_CONFIRMATIONLx寄存器中写入固定值0x57B5327F

(四)UCB_SWAP_ORIG_CONFIRMATIONHx(x=0~15)

存放CONFIRMATIONLx.CODE的入口地址。

(五)SWAP配置的代码实现

SWAP的配置是SWAP使能的前提,如上的(1)~(4)的代码实现示意如下:

/* Memory A/B SWAP */void Swap_ConfigAndEnable(uint32 map){    /* UCB_SWAP_COPY */    ucb_erase(UCB_SWAP_COPY);    ucb_write(UCB_SWAP_COPY, map, UCB_SWAP_COPY);    ucb_write(UCB_SWAP_COPY + 8, CONFIRMEDCODE, UCB_SWAP_COPY + 8);    ucb_write(UCB_SWAP_COPY + 0x1F0, UNLOCKCODE, 0x00000000);    /* UCB_SWAP_ORIG */    ucb_erase(UCB_SWAP_ORIG);    ucb_write(UCB_SWAP_ORIG, map, UCB_SWAP_ORIG);    ucb_write(UCB_SWAP_ORIG + 8, CONFIRMEDCODE, UCB_SWAP_ORIG + 8);    ucb_write(UCB_SWAP_ORIG + 0x1F0, UNLOCKCODE, 0x00000000);
    /* Enable SWAP */ ucb_write(UCB_OTP0_COPY + 0x1E8, 0x00030000, 0x00000000); ucb_write(UCB_OTP0_ORIG + 0x1E8, 0x00030000, 0x00000000);}

SWAP的禁用代码示意如下:

/* SWAP Disable */void swap_disable(void){    // Erase UCB31(UCB_SWAP_COPY)    ucb_erase(UCB_SWAP_COPY);    // Write Confirmation Code into UCB31    ucb_write(UCB_SWAP_COPY + 0x1F0, UNLOCKCODE, (uint32)0x00000000);
// Delete UCB23(UCB_SWAP_ORIG) ucb_erase(UCB_SWAP_ORIG); // Write Confirmation Code into UCB23 ucb_write(UCB_SWAP_ORIG + 0x1F0, UNLOCKCODE, (uint32)0x00000000);
// Erase UCB40(UCB_OTP0_COPY) ucb_erase(UCB_OTP0_COPY); // Write Confirmation Code into UCB40 ucb_write(UCB_OTP0_COPY + 0x1F0, UNLOCKCODE, (uint32)0x00000000);
// Erase UCB32(UCB_OTP0_ORIG) ucb_erase(UCB_OTP0_ORIG); // Write Confirmation Code into UCB32 ucb_write(UCB_OTP0_ORIG + 0x1F0, UNLOCKCODE, (uint32)0x00000000);}

提示:

  • 这里的map = 0x55或者0xAA;

  • UCB23对应的CONFIRMATION寄存器配置成UNLOCKCODE模式(0x43211234)。

3、SWAP使能

SWAP的使能需要配置UCB_OTPx_ORIG(x = 0~7),如下所示:

启动阶段,SSW会校验UCB_OTP0~7:
  • 默认校验UCB_OTP0(在CONFIRMED或者UNLOCKED状态下均会校验);
  • 对于UCB_OTP1~7,只有在CONFIRMED状态下才会校验;
  • 如果ORIG区无效,会校验对应的COPY区。
使能SWAP,需要配置UCB32的PROCONTP寄存器(Offset = 41E8H,即:向0xAF4041E8地址写入0x00030000

SWAP的初始化流程如下所示:

注意:使能SWAP功能之前,需要确保UCB_SWAP_ORIG和UCB_SWAP_COPY已完成配置。SWAPEN配置使能以后,执行System Reset生效。
当UCB32的PROCONTP寄存器配置使能以后,可以通过读取HF_PROCONTP的SWAPEN位域确认SOTA的使能情况,如下所示:

软件可以通过读取SCU_STMEM1寄存器的SWAP_CFG位域确认当前激活的Banks,如下所示:

4、SWAP配置不当导致的锁板风险

对于SWAP的使用,要特别的注意,否则就会导致板子锁死,且不可不恢复,如下所示:

后台回复ECU025 获取TC387的demo工程

End


分享不易,恳请点个【👍】和【在看】

汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  • 学习如何在 MYIR 的 ZU3EG FPGA 开发板上部署 Tiny YOLO v4,对比 FPGA、GPU、CPU 的性能,助力 AIoT 边缘计算应用。(文末有彩蛋)一、 为什么选择 FPGA:应对 7nm 制程与 AI 限制在全球半导体制程限制和高端 GPU 受限的大环境下,FPGA 成为了中国企业发展的重要路径之一。它可支持灵活的 AIoT 应用,其灵活性与可编程性使其可以在国内成熟的 28nm 工艺甚至更低节点的制程下实现高效的硬件加速。米尔的 ZU3EG 开发板凭借其可重
    米尔电子嵌入式 2024-12-06 15:53 169浏览
  • 光耦合器对于确保不同电路部分之间的电气隔离和信号传输至关重要。通过防止高压干扰敏感元件,它们可以提高安全性和可靠性。本指南将指导您使用光耦合器创建一个简单的电路,介绍其操作的基本原理和实际实施。光耦合器的工作原理光耦合器包含一个LED和一个光电晶体管。当LED接收到信号时,它会发光,激活光电晶体管,在保持隔离的同时传输信号。这使其成为保护低功耗控制电路免受高压波动影响的理想选择。组件和电路设置对于这个项目,我们将使用晶体管输出光耦合器(例如KLV2002)。收集以下组件:光耦合器、1kΩ电阻(输
    克里雅半导体科技 2024-12-06 16:34 226浏览
  • 开发板在默认情况下,OpenHarmony系统开机后 30 秒会自动息屏,自动息屏会让不少用户感到麻烦,触觉智能教大家两招轻松取消自动息屏。使用触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0 Release系统,SDK源码全开放!SDK源码中修改修改以下文件参数:base/powermgr/power_manager/services/native/profile/power_mode_co
    Industio_触觉智能 2024-12-09 11:39 67浏览
  • 光耦合器以其提供电气隔离的能力而闻名,广泛应用于从电源到通信系统的各种应用。尽管光耦合器非常普遍,但人们对其特性和用途存在一些常见的误解。本文将揭穿一些最常见的误解,以帮助工程师和爱好者做出更明智的决策。 误解1:光耦合器的使用寿命较短事实:虽然光耦合器内部的LED会随着时间的推移而退化,但LED材料和制造工艺的进步已显著提高了其使用寿命。现代光耦合器的设计使用寿命为正常工作条件下的数十年。适当的热管理和在推荐的电流水平内工作可以进一步延长其使用寿命。误解2:光耦合器对于现代应用来说太
    腾恩科技-彭工 2024-12-06 16:29 183浏览
  • 在驾驶培训与考试的严谨流程中,EST580驾培驾考系统扮演着至关重要的数据角色。它不仅集成了转速监控、车速管理、转向角度测量、转向灯光控制以及手刹与安全带状态检测等多项功能,还通过高精度的OBD数据采集器实时捕捉车辆运行状态,确保学员在模拟及实际驾驶中的每一步操作都精准无误。EST580驾培驾考转速车速转向角转向灯光手刹安全带OBD数据采集器系统的重要性及其功能:1、提高评判效率:通过原车CAN协议兼容,不同车型通过刷写固件覆盖,不仅提高了考试的数字化、自动化程度,还减少了人为干预的安装需要,从
    lauguo2013 2024-12-09 16:51 46浏览
  • 2024年12月09日 环洋市场咨询机构出版了一份详细的、综合性的调研分析报告【全球电机控制系统芯片 (SoC)行业总体规模、主要厂商及IPO上市调研报告,2024-2030】。本报告研究全球电机控制系统芯片 (SoC)总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析电机控制系统芯片 (SoC)市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从电机控制系统芯片 (SoC)产品类型细分、应用细分、企业、地区等角度,进行定量和定性分析,包括产量、产值、均价
    GIRtina 2024-12-09 11:32 85浏览
  • “SPI转CAN-FD”是嵌入式开发领域的常用方法,它极大地促进了不同通信接口之间的无缝连接,并显著降低了系统设计的复杂性。飞凌嵌入式依托瑞芯微RK3562J处理器打造的OK3562J-C开发板因为内置了SPI转CAN-FD驱动,从而原生支持这一功能。该开发板特别设计了一组SPI引脚【P8】,专为SPI转CAN-FD应用而引出,为用户提供了极大的便利。MCP2518FD是一款在各行业中都有着广泛应用的CAN-FD控制器芯片,本文就将为大家介绍如何在飞凌嵌入式RK3562J开发板上适配MCP251
    飞凌嵌入式 2024-12-07 14:30 87浏览
  • 进入11月中下旬,智能手机圈再度热闹起来。包括华为、小米、OPPO、vivo等诸多手机厂商,都在陆续预热发布新机,其中就包括华为Mate 70、小米Redmi K80、vivo的S20,IQOO Neo10等热门新机,这些热门新机的集中上市迅速吸引了全行业的目光。而在诸多手机厂商集体发布新机的背后,是智能手机行业的“触底反弹”。据机构数据显示,2024年第三季度,中国智能手机市场出货量约为6878万台,同比增长3.2%,连续四个季度保持同比增长,显然新一轮手机换机潮已在加速到来。憋了三年,国内智
    刘旷 2024-12-09 10:43 76浏览
  • 随着各行各业对可靠、高效电子元件的需求不断增长,国产光耦合器正成为全球半导体市场的重要参与者。这些元件利用先进的制造工艺和研究驱动的创新,弥补了高性能和可负担性之间的差距。本文探讨了国产光耦合器日益突出的地位,重点介绍了其应用和技术进步。 关键技术进步国产光耦合器制造商在提高性能和多功能性方面取得了重大进展。高速光耦合器现在能够处理快速数据传输,使其成为电信和工业自动化中不可或缺的一部分。专为电力电子设计的栅极驱动器光耦合器可确保电动汽车和可再生能源逆变器等高压系统的精确控制。采用碳化
    克里雅半导体科技 2024-12-06 16:34 154浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-09 08:53 78浏览
  • 自20世纪60年代问世以来,光耦合器彻底改变了电子系统实现电气隔离和信号传输的方式。通过使用光作为传输信号的媒介,光耦合器消除了直接电气连接的需求,确保了安全性和可靠性。本文记录了光耦合器技术的发展,重点介绍了关键创新、挑战以及这一不可或缺组件的未来发展。 过去:起源和早期应用光耦合器的发明源于处理高压或嘈杂环境的系统对安全电气隔离的需求。早期的光耦合器由LED和光电晶体管的简单组合组成,可提供可靠的隔离,但具有明显的局限性:低速:早期的光耦合器速度慢,频率响应有限,不适合高速数字通信
    腾恩科技-彭工 2024-12-06 16:28 140浏览
  •   在外地五年,回家就是大清洁、大清理,忙活了一个多月,废旧物品实在太多太多!除了老旧或出故障了的家具家电外,就是以前职业生涯养成的研究分析习惯而收留和拆解下的电子电器电脑整机、部件、零件、材料、辅料等等。  家具家电不说了,说说保留的各种各样机械、电器、电气、电子类的吧!有好有坏,扔又舍不得,满满的回忆,历史的烙印。留又没有用,拆解做分析和学习是忙不过来的了,加之,到如今个人做拆解的学习目的已经淡化了,也是因为用不着了。以前是研究学习和促进废物利用,理想也梦想能唤起循环使用产业链,结论是根本不
    自做自受 2024-12-08 22:59 154浏览
我要评论
1
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦