TC3xx NvM小细节解读

目录

1.FlsLoader Driver和FlsDmu Driver

2. FlsLoader小细节

3.小结


大家好,我是快乐的肌肉,今天聊聊TC3xx NvM相关硬件细节以及MCAL针对NvM的驱动。

1.FlsLoader Driver和FlsDmu Driver

在最开始做标定的时候,认为标定数据既然是数据,那么想当然就应该放置到DFlash;

但是做诊断的同事就纳闷了:那DTC、DID这些数据咋和标定数据区分呢?还得预留一段空间给标定数据,没这么搞过呀。

后来老板数你要么就用FlsLoader的接口,把数据存到PFlash,不要和诊断内容搅到一起了。

所以当时问题就出来了:FlsLoader接口是啥?为啥在一个包里既有Fls_Dmu Driver,还有FlsLoader Driver。

今天在整理笔记的时候翻到了,又细读了相关代码,觉得很有意思,分享给大家。

英飞凌针对TC3xx发布了多个MCAL包,包括Basic和CD(Complex Driver) package;

  • Basic Package里提供了Fee Driver和Fls_Dmu Driver;
  • CD Package里提供了FlsLoader Driver。

Fls_Dmu Driver

该驱动用于支持AUTOSAR中定义的标准功能,主要针对DFlash0的初始化和读写擦,因此它这个scope仅限于DFlash。

这是符合CP AUTOSAR FlashDrvie的Scope定义(仅用于Flash EEPROM):

In application mode of the ECU, the flash driver is only to be used by the Flash EEP
ROM emulation module for writing data. It is not intended to write program code to
flash memory in application mode. This shall be done in boot mode which is out of
scope of AUTOSAR.

那如果想要刷写PFlash上的内容,就得在复杂驱动里找找答案了,例如FlsLoader Driver

FlsLoader Driver

用于操作所有PFlash 和DFlash0,包括初始化、PFlash的读写擦,以及针对Flash的上锁和解锁。

有了这个理解之后,我们再来看看代码里的小细节。

2. FlsLoader小细节

 FlsLoader_Erase接口很有意思,他的入参包括TargetAddress和Length;我们很容易想当然这里给的参数就应该是目标擦除地址和长度(0x10000),但实际上再往下看代码逻辑时会发现这个Length对应的是即将要擦除的Sector个数,这样就对应的是DMU 命令序列 Erase sector nn。

因此调用该接口时应该简单计算下需要擦几个Sector,也不是以前的目标地址+实际长度。

我们接着手册看看关于该命令序列出现SQER(Sequence Error),最让我困惑的是关于PFlash Size的判断,如下:

以TC37x为例,明明有2个PFlash Bank,每个Bank容量为3MB,但为什么每次只能擦除512K/16K = 32 ,难道说这里面有什么物理限制吗?

我们来看看PFlash的结构组成,它是有3个1 MB物理Sector组合为一个3MB的Bank,每个物理Sector划分为64个逻辑Sector(64*16),如下:

手册里特别强调的是每个物理Sector之间是独立的,并且最大Erase Size为512KB,因此我们在代码逻辑里首先会看到判断是否超最大擦除大小了,这点我最开始想了很久,如下:

 其次,如果是跨物理Sector的擦写,在代码实现里还特别多出了一步:判断是否超出了1MB的范围,如超出了,需要使用两次erase cmd命令序列,如下图:

这里确实很神奇,不知道这个是否和本身它的这个Flash IP特性相关,不支持跨PS擦除。

3.小结

分析它的代码,主要还是要完善自己的驱动知识库,感觉每家的Flash操作大不相同,所以多看多学,才能见怪不怪,哈哈。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CyberSecurity_zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值