打印
[其它产品/技术]

如何实现基于英飞凌TRAVEO™ T2G系列芯片的Dual Bank方案架构实现OTA功能

[复制链接]
24|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 IFX新闻官 于 2025-4-12 02:27 编辑

最近在英飞凌开发者论坛中注意到,许多开发者都在讨论和提问关于如何实现基于TRAVEO™ T2G系列芯片的OTA(Over-The-Air,远程升级技术)更新应用。为了帮助大家更好地基于TRAVEO™ T2G系列芯片的Dual Bank方案架构实现OTA功能,本文将简要介绍其原理,并提供相关的资源和示例代码,希望能够为大家提供参考和帮助。(作者:英飞凌 Yang Jannie)


OTA(Over-the-Air) 是一种通过无线通信协议远程更新设备固件的软件更新方法,在现代智能汽车和联网汽车的快速发展下,在汽车应用中越来越受到重视。通过OTA更新,设备制造商可以在设备部署后修复漏洞、添加新功能或优化性能,而无需物理接触设备。它既可以提升用户体验和安全性,又降低维护成本和环境影响做出贡献,为汽车行业的持续发展和创新提供了强大支持。

TRAVEO™ T2G 系列支持双区(Dual Bank)模式,允许RWW(Read While Write)功能。Dual Bank 是一种支持OTA更新的存储架构,它使用两个独立的存储区来确保固件更新的可靠性和安全性。Dual bank技术通常涉及A/B分区机制,在OTA更新过程中,新固件会先被下载到备用分区,下载完成后,系统会在下次启动时从新分区启动。客户可以基于其特殊的dual bank 模式进行相同位置的固件更新,提升了固件更新的灵活性和效率。

参考文档



TRAVEO™ T2G Dual Bank划分
TRAVEO™ T2G芯片的闪存分为Code Flash和Work Flash。

  • Code Flash用于存储程序代码,即芯片的固件或软件。
  • Work Flash用于存储数据,即程序运行时需要存储的数据,例如配置信息、日志数据等。

在Dual Bank模式下, Code Flash被划分为两个独立存储体(Logical Bank 0和Logical Bank 1),在不同mapping下,存储体地址互换,以支持动态重映射。以下图CYT2B7芯片为例:

  • Mapping A
    Logical Bank 0地址:
    0x1000_0000-0x1008_8000,

    Logical Bank 1地址:
    0x1200_0000-0x1208_8000
  • Mapping B
    Logical Bank 0地址:
    0x1200_0000-0x1208_8000,

    Logical Bank 1地址:
    0x1000_0000-0x1008_8000



从上图CYT2B7芯片的memory map可见,TRAVEO™ T2G系列的code flash可以分成Single Bank 模式和Dual Bank 模式。通过配置FLASHC_FLASH_CTL寄存器的MAIN_BANK_MODE位与MAIN_MAP位实现对模式的控制。

  • MAIN_BANK_MODE位
    (FLASHC_FLASH_CTL[12]):
    置1启用Dual Bank模式,置0返回Single Bank模式1。
  • MAIN_MAP位
    (FLASHC_FLASH_CTL[8]):
    仅在Dual Bank模式下有效,0选择Mapping A,1选择Mapping B


当然,Work Flash也可配置为Single Bank模式或Dual Bank模式,可通过FLASHC_FLASH_CTL寄存器的WORK_BANK_MODE位与WORK_MAP位进行配置。需要注意的是这几位在复位时都会被清除。ROM boot和flash boot不会改变这些配置。换句话说,TRAVEO™ T2G系列MCU在 Arm® Cortex®-M0+应用程序启动之前总是以Single Bank模式启动。应用程序需要根据实际需求手动配置Dual Bank功能。


TRAVEO™ T2G Dual Bank模式优势
  • 高可靠性:dual bank结构允许在一个bank进行更新的同时,另一个bank继续执行当前的固件。这种方式确保了更新过程中设备的正常运行,避免了因更新失败导致的系统崩溃。
  • 无缝切换:更新完成后,系统可以无缝切换到新固件,无需长时间的停机或重启过程。
  • 容错能力:如果在更新过程中出现问题,系统可以回滚到旧版本固件,保证设备的稳定性和可靠性。
  • 减少停机时间:由于更新可以在后台进行,设备的停机时间大大减少,提高了设备的可用性。
  • 安全性:TRAVEO™ T2G系列MCU配备硬件安全模块,提供强大的加密和认证机制,确保OTA更新的安全性和完整性。



更新固件实现流程
固件更新:

  • 假设CM4/7用户程序代码运行在Bank 0即处于Mapping A映射时,接收到通过车辆局域网(如CAN FD或以太网)发送的固件更新请求和数据。
  • CM0+用户程序开始擦除整个Bank 1的code flash区域和特定的work flash区域,其中work flash区域需要放置remap参数,用于标识下一次复位后需要设置Mapping A还是Mapping B,即最新程序存储于bank 0还是bank 1中。在此示例中,将更新bank 1的code flash,故而下一次复位后将使用Mapping B。
  • 完成flash擦除后,CM0+用户程序将相同的CM0+用户程序代码复制到Bank 1,并编程新的CM4/7用户程序代码。需要注意的是,以CYT2B7芯片为例,无论是运行在Mapping A需要更新bank 1的程序还是运行在Mapping B需要更新bank 0,更新地址皆处于0x1200_0000-0x1208_8000,而非0x1000_0000-0x1008_8000。
  • 最后,CM0+更新work flash中的remap参数,以便在下一次复位时切换应用程序代码。


系统启动与切换

  • 在复位后,CM4/7和CM0+开始执行ROM boot程序。CM4/7进入等待中断(WFI)状态,直到CM0+使能它。
  • CM0+完成ROM boot和flash boot后,执行其用户程序代码。在CM0+用户程序配置FLASHC_FLASH_CTL 寄存器MAIN_BANK_MODE位为dual bank模式,并读取work flash中的remap参数。
  • 如果从work flash读取的数据是预期值,CM0+会跳转到SRAM代码,然后通过设FLASHC_FLASH_CTL 寄存器的MAIN_MAP位将code flash 的mapping切换为“Mapping B”。需要注意的是,改变这一位将改变flash的映射,故必须将此部分切换mapping操作的代码置于SRAM中执行,而不能继续在flash中执行。
  • 在完成切换操作后,code flash bank 0的地址将与code flash bank 1的地址交换。
  • CM0+跳回到code flash中执行程序并使能CM4/7。CM4/7和CM0+运行程序地址不变,但此时执行的已是bank 1中的新代码。


请访问以下链接下载相关示例代码:

如果您在实现过程中遇到问题,可以尝试在社区中寻找答案,可能已经有人提出了相同的困扰并得到了解决。

Community热帖举例:

如果您还未曾使用过TRAVEO™ T2G 系列芯片,可以点击这里快速入门:

使用特权

评论回复
沙发
IFX新闻官|  楼主 | 2025-4-12 02:28 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

210

帖子

0

粉丝