RH850\U2A SOTA机制分析

目录

1. U2A Flash架构概述

2. U2A Flash模式概述

 3. U2A 无感OTA概述

3.1 GCFU描述

3.2 实现描述

3.3 Double Map模式

 4.小结


1. U2A Flash架构概述

最近在考虑无感OTA方案时,汇总了TC3xx、RH850-U2A、S32K3等系列MCU对于OTA的硬件支持。

TC3xx在文档中写的很清楚,有兴趣的可以看看TC3xx UserMannul 1.5 SOTA章节,以前我也在某平台写过相关文章,这里不再赘述。

比较让我疑惑的是U2A的方案,因为在U2A高性能版本中,出现了3个Flash控制器,我第一反应是为将来跨域融合做准备,事实上也是如此;在这款MCU中提出了Cluster的概念,针对Cluster里面布局了Memory、中断、外设等资源;

我们今天主要聊Flash相关,U2A16的Memory整体架构如下图:

相同颜色组成一个Cluster,对应不同的Flash资源;上面这个图看起来觉得麻烦,根据个人理解整理如下:

在该架构图中,总共有16MB Flash(A、B、C、D 4MB\Bank)分别给不同CPU使用,每个Cluster都有一个Flash控制器来管理当前Cluster里的Flash编程、擦除等动作,例如FACI0管理PF Bank A、B共计8MB,DF Bank0等,这种方式在未来跨域融合架构下实现不同vECU的OTA是非常有优势的。

但是今天我们主要了解针对目前常见OTA方案,U2A做了哪些方面的内容。

2. U2A Flash模式概述

在U2A里,Flash有两种映射模式,分别为:Single Map和Double Map;

  • Single Map:该模式下code flash地址连续,用户可使用的存储空间就更大,例如U2A16可使用16MB、U2A8可使用8MB;下图为U2A16的Single Map地址空间

  • Double Map:这种模式就和TC3xx的A\B Swap很相近了,将Flash均分为两个区域,分别为valid area和invalid area,意味着可使用的Flash容量减半;下图为U2A16的Double Map地址空间,可以发现invlid area首地址与上面有变化,编程了02xxxxx开头。

上述map模式可以通过OPBT12进行配置:

 3. U2A 无感OTA概述

针对Double Mode下使用无感OTA还可以理解,这个Single Map模式的无感,不就和以前软件实现A\B OTA是一样的吗?在U2A上面难道做了很多硬件处理吗? 

在软件实现无感SOTA时,通常是在在Flash中划分出两块相同大小的区域,分为A区和B区,都用来存放APP,但同一时间下只有一个区的APP是有效的,分别设置一个标志位标识其有效性。初始状态下先将APP写入A区,更新的时候,将新的APP写入B区,再把A区的APP擦除,同时更新两个区的有效性标志位状态。BootLoader中判断哪个区的APP有效,就跳转到哪个区运行。这种方法不需要重复拷贝APP数据,但最大的一个缺陷是AB区的APP程序运行地址不同,需要分别编译,从而使得可应用性大大降低。

但在U2A中,它采用了使用类似英飞凌Overlay的功能,它可以使用相同逻辑地址实现SOTA功能。具体如下:

3.1 GCFU描述

在U2A 51.18章节提出了GCFG(Global Calibration Function Unit) ,主要功能是将一块code flash重映射到另一块code flash。

根据之前英飞凌相关的经验,Overlay是CPU视角,那么我们就可以这样设计:

当Valid Bank的逻辑地址和物理地址一致时,使用overlay功能;

当Valid Bank的逻辑地址与物理地址不一致时,使用overlay。

3.2 实现描述

Single Map模式下,地址是连续的,所以为了实现RWW,我们选用Bank A 和B中前128KB作为SOTA实现的基础,如下图:

物理地址Bank大小
0x0000 0000 – 0x0001 FFFF
BANK A128KB
0x0040 0000 – 0x0041 FFFF
BANK B128KB

当Bank A激活时,这时候物理地址和逻辑地址一致,可以不使用overlay(remap:瑞萨说法),这样CPU就从Bank A取指运行代码,那么要更新的时候怎么办呢?直接操作FACI刷写Bank B对应区域(bin文件),如下图:

当Bank B激活时,物理地址和逻辑地址不一致了,但是仍想不改变程序运行地址,这时候使用remap功能,虽然CPU访问的是逻辑地址 Bank A,但通过GCFU可以重映射到Bank B中,如下:

由于CGFU仅作用于CPU,因此在FACI0视角里,刷写逻辑地址Bank A就是刷写物理Bank A。

值得注意的是,由于硬件是没办法识别什么时候使用remap功能,因此需要我们在软件中定义一个Flag,这Flag可以存放到DFlash中,表示当前Valid的Bank是A还是B。

这样,U2A 的Single Map模式就派上了用场,但看起来其实和Double Map区别不大呀。

3.3 Double Map模式

Double Map模式下,U2A16可用容量变为了8MB,相当于每个Cluster里的Flash变为了AB切,如下图:

因此相较于Single Map模式,这种方式较为死板,但是理解起来就不是那么困难。 

只需要通过OPBT13来切换A\B 、C\D Bank,即可实现硬件上的无感SOTA。

 4.小结

本文主要梳理瑞萨U2A针对SOTA的两种硬件特性,但没有考虑security相关内容;不知道目前有没有HSM SOTA的需求,如果有,那么对于这方面的硬件设计想必又是一个大难题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值