0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

逐步讲解AUTOSAR的Memory原理策略

嵌入式软件实战派 来源:嵌入式软件实战派 2023-03-08 14:11 次阅读

很多人都觉得AUTOSAR的Memory很复杂,搞了很久都摸不透里面的原理策略。

其实,AUTOSAR的Memory在AUTOSAR的架构下,封装得很好,只是我们很多人从普通嵌入式软件开发模式而来,一下子转不过弯而已。

本文就从普通嵌入式软件开发中的Memory入手,逐步讲解AUTOSAR的Memory原理策略。

注:以下讲的Memory方案是指EEPROM、DataFlash等非易失性存储(NVM)的软件方案。

1.传统嵌入式存储方案

试想下,一个简单的嵌入式系统软件里,如果想存储写信息到EEPROM(假设外置的EEPROM,通过IIC访问),你会如何设计?

最简单的办法,写好IIC通信,直接根据EEPROM的地址通过IIC进行访问,反正就是操作EEPROM,不用管那么多。但是软件结构比较混乱,驱动和应用混在一起。

这种做法,但凡有点软件层次结构概念的人都不会这么干,当然只是临时调试下硬件是无所谓的。

6170ca96-ba9b-11ed-bfe3-dac502259ad0.png

那么,改进下软件设计,把IIC驱动单独出来,是很常用的做法吧,比较IIC算是MCU的驱动,除了可以访问EEPROM,还可以用来跟其他外设通信,做成独立公共的驱动模块,是理所当然的。软件层次结构就像下面的这样子。

61876bc0-ba9b-11ed-bfe3-dac502259ad0.png

当然,对软件有追求的人,肯定是比较鄙视上面两种结构的,EEPROM好歹也要单独一个模块吧。单独一个应用倒是无所谓,如果要好几个应用要读写EEPROM,岂不是乱成一团了!

于是,设计成这样的接口,看起来是比较理想的。

619ede2c-ba9b-11ed-bfe3-dac502259ad0.png

普通的嵌入式软件的EEPROM设计,大多都是这样的,也比较灵活。

然而,AUTOSAR有更高的追求,它把EEPROM、DataFlash等NVM看成一类存储,而不管存储的实际介质是什么,统统都叫NVM。

于是乎,设计一个NVM的模块就呼之欲出了。NVM的对外的接口是统一的,而它对接DataFlash或EEPROM,还分别多加了一个FEE和EA这样的模块。

61b5635e-ba9b-11ed-bfe3-dac502259ad0.png

2.AUTOSAR的存储方案

到这里,我们对比下这几种方案。

61ca840a-ba9b-11ed-bfe3-dac502259ad0.png

上图方案A和方案B就不考虑了,那方案C和方案D的对比,差别在哪?

除了NVM这个模块是通用性的,还多出了个FEE和EA,那么FEE和EA分别是干嘛的?

在解释这两个模块之前,先从AUTOSAR的架构层面来看看,实际上FEE和EA就在Memory Hardware Abstraction层里面,注意关键字Abstraction。

61ea4862-ba9b-11ed-bfe3-dac502259ad0.png

FEE是Flash EEPROM Emulation的缩写,而EA是EEPROM Abstraction的缩写。

AUTOSAR考虑问题比较周到,NVM的存储是要考虑寿命的,特别是用在汽车行业。

一般情况下,DataFlash的P/E Cycle是10万次,EEPROM的是100万次。另外,DataFlash的擦写单位是比较大的,如果只想写一两个byte,需要擦除一大片,非常不友好。

于是要将DataFlash模拟成EEPROM来使用,这个FEE就出来了。当然FEE还考虑了磨损均衡算法,英文一般叫Wear Leveling。

那EA呢?因为EEPROM不同厂家做的地址、page管理等方式不一样,所以要做个抽象层来统一管理下,同时也加入了磨损均衡算法,来增加EEPROM的寿命。

以下以在0x0008地址写入0x11, 0x22, 0x33, 0x44这四个字节内容为例,看看EEPROM和DataFlash的实际操作情况:

62075fd8-ba9b-11ed-bfe3-dac502259ad0.png

很明显,EEPROM在同一个位置频繁操作也不是非常好的,只要次数多也是会影响寿命的,而Flash在这方面的劣势就更明显了,不但擦写单位比较大,寿命也比较短,所以这个FEE和EA的抽象是有必要的,磨损均衡技术也是有必要的。

623a2512-ba9b-11ed-bfe3-dac502259ad0.png

至于这个磨损均衡技术是怎么实现的,涉及到的内容比较多,后续再细讲。

细心的小伙伴,会发现,为什么还有个MemIf?

实际上这个MemIf很简单,仅仅是统一封装了下FEE和EA的接口,为NVM提供一个统一的接口管理而已,如果非要说,那只能说NVM比较娇贵,啥都要给它准备得好好的。

3.NVM的存储结构

这样就完了吗,软件架构层次基本就这样了。

然而,AUTOSAR里面的这个Memory这一套东西,是很有搞头的,怎么说呢?

除了层次分明外,它对存储的结构抽象得很明确,于是就有了RAM Block,Data Set等这样的概念。

这部分内容,在《一图读懂AUTOSAR NvM(附pdf版文档资源)》里面已经讲得很清楚了,本文不再累述。再次附上一张NVM Block结构的汇总图,方便平时查阅。

624fa8c4-ba9b-11ed-bfe3-dac502259ad0.png

4.AUTOSAR NVM的配置

讲了这么多,NVM怎么使用?

想其他AUTOSAR的Mode模块一样,NVM的接口不是给应用直接调用的,而是通过AUTOSAR的开发工具链给SWC配置NVM的Service接口,然后生成对应的Runnable等接口调用的,这里有套规则。

这个NVM配置的内容虽然涉及到的概念有点多,步骤也有点多,但搞清楚后就很简单了。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1634

    浏览量

    148006
  • EEPROM
    +关注

    关注

    9

    文章

    1020

    浏览量

    81587
  • AUTOSAR
    +关注

    关注

    10

    文章

    362

    浏览量

    21577
  • NVM
    NVM
    +关注

    关注

    1

    文章

    41

    浏览量

    19122

原文标题:AUTOSAR的Memory是如何设计的?

文章出处:【微信号:embedded_sw,微信公众号:嵌入式软件实战派】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR
    发表于 05-17 06:44

    AUTOSAR架构深度解析 精选资料推荐

    AUTOSAR架构深度解析本文转载于:AUTOSAR架构深度解析目录AUTOSAR架构深度解析AUTOSAR分层结构及应用软件层功能应用软件层虚拟功能总线VFB及运行环境RTE基础软件
    发表于 07-28 07:40

    AUTOSAR架构深度解析 精选资料分享

    AUTOSAR架构深度解析本文转载于:AUTOSAR架构深度解析AUTOSAR的分层式设计,用于支持完整的软件和硬件模块的独立性(Independence),中间RTE(Runtime Environment)作为虚拟功能...
    发表于 07-28 07:02

    AUTOSAR是什么

    一、AUTOSAR是什么AUTOSAR组织自己的介绍是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    发表于 11-10 07:47

    为什么使用AUTOSAR

    文章目录一、总概述1 为什么使用AUTOSAR?1.1 AUTOSAR出现之前的行业现状1.2 AUTOSAR出现之后可以实现如下目标2、AUTOSAR总概述二、各层分别概述1、BSW
    发表于 12-09 07:50

    AUTOSAR的相关资料推荐

    AUTOSAR基础篇之EcuM_wto9109的博客-CSDN博客【AutoSAR】【EcuM】ECU状态管理专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。07-08...
    发表于 01-27 08:25

    介绍AUTOSAR支持的四种功能安全机制

    1、AUTOSAR的四种功能安全机制虽然AUTOSAR不是一个完整的安全解决方案,但它提供了一些安全机制用于支持安全关键系统的开发。本文用于介绍AUTOSAR支持的四种功能安全机制:内存分区
    发表于 06-10 17:33

    基于RT-Thread内核的AUTOSAR在n32g上的实现方案

    1、基于RT-Thread内核的AUTOSAR在n32g上的实现随着小米宣布造车,当下“软件定义汽车”的趋势如火如荼,autosar的全称Automotive Open System
    发表于 07-27 14:30

    AUTOSAR模式的FEE驱动程序可以与其他非AUTOSAR模式兼容吗?

    我们正在使用 RTD 非 AUTOSAR mdoe 驱动程序来开发新项目。但是我们也想用AUTOSAR模式的FEE功能模块来模拟EEPROM。我的问题是 AUTOSAR 模式的 FEE 驱动程序可以与其他非
    发表于 03-21 09:01

    面向汽车应用的AUTOSAR设计技巧

    面向汽车应用的AUTOSAR设计技巧 汽车OEM正在开发基于AUTOSAR的电子系统以应对当代汽车中日益复杂的软件。AUTOSAR简化了开发流程并使得ECU软件具有复用性。从2004年AU
    发表于 01-15 10:46 1144次阅读

    AUTOSAR入门

    一、AUTOSAR是什么AUTOSAR组织自己的介绍是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    发表于 11-05 18:20 20次下载
    <b class='flag-5'>AUTOSAR</b>入门

    AUTOSAR-MemIf的功能

    AUTOSAR的架构图中可以看出,MemIf(Memory Abstraction Interface)模块位于Memory Hardware Abstraction。 
    的头像 发表于 05-26 16:35 1316次阅读
    <b class='flag-5'>AUTOSAR</b>-MemIf的功能

    AUTOSAR UDP网络管理策略

    UdpNm,AUTOSAR UDP Network Management,基于TCP/IP协议栈,主要目的是协调网络在normal operation和bus-sleep mode之间的转换。除了
    的头像 发表于 09-27 16:51 701次阅读
    <b class='flag-5'>AUTOSAR</b> UDP网络管理<b class='flag-5'>策略</b>

    AUTOSAR OS操作系统功能特性

    汽车电子系统中的软件任务和中断。它提供了以下功能特性: 任务和中断管理:AUTOSAR OS可以创建、启动、停止和删除任务,并处理中断请求。它可以根据任务的优先级和调度策略来调度任务的执行,确保任务
    的头像 发表于 10-27 16:55 2158次阅读

    苹果调整策略:逐步摒弃年更产品发布模式

    10月8日讯,彭博社知名记者马克·古尔曼在《Power On》通讯中揭示,苹果公司正逐步转变其传统的“年度更新”发布模式,迈向更为灵活的产品发布策略
    的头像 发表于 10-08 16:46 789次阅读