揭秘MCU内置Data Flash

新闻资讯   2023-06-15 12:02   88   0  
本文主要讲解MCU内部DataFlash的特点原理,以及其模拟EEPROM使用的方法和算法(如果方便,推荐观看下面的视频)。
如果你喜欢看图文,请继续往下看。

现在市面上的MCU,一般都会带一个DataFlash空间,用于存储用户数据(区别于CodeFlash)。

DataFlash有两个基础概念,即Sector和Page:



其中,Sector是最小擦除单位,而Page是最小写单位。

至于这个Sector和Page到底是多大,不同厂家的MCU定义不同:

MCU Family

 Physical Sector Size

 Page Size

S12XE

256 Byte - 1024 Byte 

2 - 8 Byte

TC2xx 

1 kB - 8kB

8 Byte

MPC56xx    

16kB - 128kB

4 - 16 Byte

Tricore 17xx 

64kB- 128kB

128 - 256 Byte

RH850

64 Byte

4 Byte

其他DataFlash的擦写行为是这样的:

那么,怎么知道一块区间到底写过数据没有呢?

我见过两种情况:

一是,直接读取数据,判断为FF就认为擦除过了。

二是,有些芯片在读取擦除区间的数据是不可靠的,要特殊途径判断。

软件上为了统一,AUTOSAR定义了一个BlankCheck的函数。

Service name

Fls_BlankCheck

Syntax

Std_ReturnType Fls_BlankCheck(

Fls_AddressType TargetAddress,

Fls_LengthType  Length)

Description

The function Fls_BlankCheck  shall verify, whether a given memory area has been erased but  not (yet) programmed. The function shall limit the maximum number of  checked flash  cells per main function cycle to the configured value  FlsMaxReadNormalMode or FlsMaxReadFastMode respectively.

好奇的你也许会问道:一个擦除单位那么大,使用很不方便,效率也不高,那么,有没有办法让DataFlash像EEPROM那样使用?

这个就是磨损均衡算法了,大家可以参考文章《AUTOSAR中的Fee》。

Fee好像很厉害的样子,能否想个办法研究下它的行为?

当然,可以用PC的File操作方式模拟Fls的API接口,然后再怎么折腾都行。

当然,我后续专门写个文章讲解一下如何通过PC模拟Fls的接口,然后测试Fee。

如果你看这个图文有点难理解,请回到文章最开始的地方,点击视频观看,那里有很详细的讲解,是妹子主播的声音哦~

END

来源:嵌入式软件实战派

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
华为C/C++编码规范流出
C语言的include没你想的那么简单!
入职Linux驱动工程师后,我才知道的真相…

→点关注,不迷路←

文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。