AUTOSAR内存协议栈详解

汽车ECU开发 2022-09-25 15:39


MemStack 以NvM (Non-Volatile RAM Manager)模块向User提供各种非易失存储器的数据管理,NvM模块自身是独立于硬件的,但所有的功能都是直接访问硬件的,包括内部/外部的 EEP,或者是内部/外部的Flash 模拟的EEP。NVRAM 管理器处理对非易失性数据的并发访问,并提供可靠性机制,如单个数据元素的校验和保护。


MemService 由NvM MemIf EA Eep Fee Fls组成,支持对Flash 和Eeprom的数据集成管理,本文主要通过介绍NvM MemIf Fee EA 等模块来认识MemStack。




NvM 模块


Memory Service 通过将数据元素抽象成Block 进行统一管理,NvM所有的功能都是以Block为单元。NvM管理的Block包含:


  • Ram Block : 位于 RAM 中, 存放应用待读/待写的数据
  • Rom Block : 位于 PFlash 中,存放 Block 默认数据, 用于数据读取失败后恢复默认数据
  • Administrative Block:位于 RAM 中,保存所有Data Block 的错误/状态/Crc 等信息
  • NV Block: 位于非易失性存储器中, 用于保存非易失数据


1. Block 分类


NvM 包 含 3 种 Block 类 型 :
  • NVM_BLOCK_NATIVE
  • NVM_BLOCK_REDUNDANT
  • NVM_BLOCK_DATASET。


每种类型的 Block 都由 NV Block、 RAM Block、 ROM Block 及 Administrative Block 等基本存储对象组成。


NVM_BLOCK_REDUNDANT 类型的 Block 包含两个 NV Block, 且两 NV Block 中保存的数据互为备份, 提高了数据安全性。


NVM_BLOCK_DATASET 类型的 Block 可根据需求配置多个 NV Block 或 ROM Block 并通过索引选择操作对象, 提高了系统的灵活性。


各类型 Block 存储结构如下图




2. Block 数据结构


虽然NvM中存在这么多类型的Block,但是在存储介质中实际存在的只有NV Block, Ram Block 和Rom 都不参与实际的写入过程。


一般来说NV Block 由Block Header + Block Data +Block CRC组成,其中Block Header会包含Block ID,用于写入/读取时校验




3. Block 任务分发


NvM 对NV Block的操作是独立于硬件,在NvM模块中无法直接写入对应的存储介质中。NvM通过识别Block的配置参数,确定当前操作的Block的下属模块,再将任务下发给MemIf模块。


当前操作的Block完成Job后,即可进行下一个Job操作。下面以NvM 操作Fee的Block为例




3.1. Block 任务队列以及Block 优先级


3.1.1. 任务队列


NvM 对Block进行读写操作,对于存储介质来说都是异步的。因此对于NvM是可以同时发起多个Block的读写操作(NvM_ReadAll/ NvM_WriteAll)。但是对于存储介质来说,当前操作的Block没有完成,无法接收下一个操作任务。因此NvM通过任务队列,同时结合回调函数或者轮询当前操作Job的状态(可配置),完成对多Block的任务管理。




3.1.2. 优先级 & Immdieta Job


NvM 提供两种任务队列, 一种为 FCFS(First Come First Serve ) 队列即先发出的请求会先被执行, 另一种为优先级队列即高优先级的请求会先被执行。启用 NvMJobPrioritization 时, NvM 使用优先级队列。Block 的优先级范围为 0…255,数值越小优先级越高。禁用 NvMJobPrioritization 时, NvM 使用 FCFS 队列。



NvM Block 可以通过将优先级设置成 Immdieta,该Block 可以越过FCFS 原则,进行优先处理。




4. Block 虚拟地址映射


NvM 通过 32 位的虚拟地址访问 Fee 及 Ea 模块, 16 位为 Block 地址偏移, 16 位为 Block Number。Block Number 分为 Block Base Number 及 Data Index 两部分, 二者的位数占比由配置 NvMDatasetSelectionBits 决定。Block Base Number 为(16–NvMDatasetSelectionBits)位, Data Index 为 NvMDatasetSelectionBits 位。当NvMDatasetSelectionBits 配置为 2 时, Block Number 如下图所示。



用户通过 Block ID 访问 NvM 的 Block, 而 NvM 通过下列计算方式访问 Fee/Ea 的 Block:

NvM Block Base Number = NvM Block ID << NvMDatasetSelectionBits

Ea Block Number/Fee Block Number = NvM Block Base Number + Data Index


下图展示了在 NvMDatasetSelectionBits 配置为 2 时, NvM Block 及 Fee Block 的关联关系及 Fee Block在 NV Memory 上的排布。



注意


  • 不管是FEE还是EA,NvM的Block的地址映射都是NvM Block ID与 Fee/EA Block ID的映射,实际的写入地址都是由FEE/EA决定的
  • Fee Block在NV Memory 的排布顺序,与Block ID无关,只与写入的先后顺序有关
  • Fee Block ID不一定是连续的,但是NvM Block ID是连续的,因为两者的ID映射关系,因此允许Fee Block ID不连续


5. 数据校验&Redunant


NvM 提供了多种校验方式
  • 校验Block Header中的Block ID
  • 校验 根据Block Header 以及Block Data 计算的CRC
当数据校验发生错误时,NvM存在以下几种方式去修复故障
  • Read Retry

NvM配置参数中NVM_MAX_NUM_OF_READ_RETRIES 定义了最大的尝试次数



  • 读取Redunant Block的备份数据

如果Block 属性是Redunant Block,那么当Read Block发生错误时,将会从备份Block读取数据恢复数据



  • Rom Block

当以上措施都失效时,Rom Block中的默认数据,可以将数据恢复到默认状态




MemIf 模块


Memory Abstraction Interface (MemIf)作为接口抽象层, 为 NvM 提供访问 Fee/Ea 模块的函数,NvM借此抽象成硬件无关的模块。

MemIf 通过Device Id将Fee 与EA 的相关接口抽象成MemIf接口供NvM访问



1. Device & Api管理


MemIf 可以同时管理EA 和FEE,通过NvM Block 的 DeviceId 配置属性,进行识别,在访问对应的Device Api

EA 的Device ID 0

Fee 的Device ID 1



Fee 模块


Fee(Flash Eeprom Emulation), 顾名思义就是Flash 模拟Eeprom. 那么为何不直接使用Eeprom,或者说Flash为什么需要模拟Eeprom.


Flash 与 EEP 都属于非易失存储器(Non-Valatile Memory),主要存在以下几点区别


  • 成本

同样的存储空间,EEP比Flash贵上许多,因此一般MCU上Flash空间要比EEPROM 空间大


  • 擦写方式

Flash 以Page为单位,擦除的时候 必须按照Page 为单位擦住,同时写入的时候,只能写1,也就是由0->1,因此如果要改写某个Page的一个Byte,那么必须先将Page的内容全部读到Ram,然后改写Ram中对应的变量,然后擦除该Page,最后把Ram修改后的值写入到Page,也就是需要以下三步:


读->改->写


Eeprom 支持按照Byte直接修改Fee,就是将Flash的写入操作,通过软件的模拟成EEP.



1. 模拟EEP写入方式


Fee 通过 Fls 模块操作 DataFlash, DataFlash 具有如下物理特性:


  • 按页写入, 写数据需为物理页的整数倍, 否则需做字节补齐。
  • 写入前需确保此段空间未被写入过数据, 否则需要擦除后再写入数据。
  • 最小擦除单位为整个物理扇区。

Fee 的写入单元是Block,Fee Block 是继承自NvM Block,在NvM Block 数据的基础上加上Fee Block Header数据,形成Fee Block。


Fee 写入Block 按照先写入,地址就靠前的原则,下次写入Block 就依次往后排。这样确保每次写入都不需要擦除。



2. Fee翻页机制


Fee 通过对Flash空间整体划分为两个逻辑Sector, 一个作为Active Sector,一个作为Inactive Sector。这两个Sector 由一个或者多个物理Sector组成。


在任意时间,只能有一个Logical Sector在作为 Active Sector只有当Active Sector,如何写入下一个Block,或者达到配置的剩余空间,那么就会进行翻页操作。翻页操作一般会经历如下几个步骤


  • 将所有Block的最新数据写入到Inactive Sertor
  • 擦除Active,设置Inactive Sector为Active

翻页前



翻页后



注意,这里翻页操作时,并没有将所有的数据都由Active Sector搬运到Inactive Sector,而是将所有Block的最新数据搬运到Inactive Sector



3. Fee 初始化读取地址


Fee 提供地址管理机制,Fee 会在Ram中实施记录所有Block的当前地址和状态,在Block写入新的数据时,又会更新这个地址。这些地址主要用于Fee读取Block数据。


在Fee进行初始化之前,这些Block地址是未知的,因此需要在Fee 初始化阶段,需要从Flash 遍历得到当前Blcok的地址。


由下图可知,Fee写入是在Active Sector 中依次往下排布的,因此在最新的Block 数据往往在Active Sector的底部。




4. Fee 写入Block 管理


通过 Block 头信息中的有效标识位字段可以判断当前的扇区及 Block 是否有效。


在写任务中, 首先写入除有效标识位之外的 Block 头, 随后写入数据段, 最后写入 Block 有效标识位。


若在写任务中异常下电, Block 头中的有效标识位未成功写入, 重新上电执行完扫描任务后, 认为该 Block无效, 无法成功读取该 Block 的数据, Fee 向上层返回的结果为 MEMIF_BLOCK_INCONSISTENT。



EA 模块


由于EEP 是可以支持直接写入的,因此存储在Eep的Block地址都是固定的,Ea 模块为

EEPROM 硬件抽象层, 通过访问下层 Eep 模块提供的 API 操作 EEPROM 硬件, EEPROM 具有如下物理特

性:


  • 可按字节写入。
  • 写入前不需执行数据擦除操作。

由于 EEPROM 具有如上特性, Ea 可为每个 Block 确定具体的硬件存储地址并划分存储空间, NvM 在执行读/写等服务时, 通过 Ea 完成相应 Block 的地址映射即可操作 EEPROM 硬件中数据



1. EA 地址管理


通过获取 NvM Block 的类型、 长度等配置, Ea 按照各 Block 的长度为其分配地址空间, 从 0 地址起依次向后排列。



2. EA Block 写入管理


Ea Block 中包含块状态标识位, 该标识位会存入 Eeprom 中, 通过该字段可以判断当前 Block 是否有效。在读任务若发现标识位为无效的状态, 则直接向上层返回 MEMIF_BLOCK_INVALID 失败状态;若发现标识位不为有效/无效值, 则直接向上层返回 MEMIF_BLOCK_INCONSISTENT 失败状态。



————————————————

版权声明:本文为CSDN博主「Archieeeeee」的原创文章,转载请附上原文出处链接及本声明,已获作者转载权限。



END
往期AUTOSAR内容:
AUTOSAR资料合集,文末有资料下载!
AUTOSAR和OSEK网络管理比较
AUTOSAR MCAL的FLS模块详解
AUTOSAR Memory栈详解|视频
诊断协议栈之FiM模块详解
AUTOSAR的利与弊
谈谈SomeIP在AUTOSAR中的运用
如何高效学习AUTOSAR?
EB的AP AUTOSAR开发培训|视频
AUTOSAR 应用层模型开发|视频
ECU的上下电都在做什么
Autosar通信协议栈讲解
WdgM模块三种看门狗监控模式
AUTOSAR CanNM网络管理讲解
品一品咖喱味的AUTOSAR Dcm模块讲解
基于AUTOSAR的车载以太网通信流程简介
AUTOSAR中的多核通信模型(2)
AUTOSAR中的多核通信模型(1)
AUTOSAR COM模块介绍
AUTOSAR Dem之Debounce详解
AUTOSAR文档类别
AUTOSAR配置类
Adaptive AUTOSAR
AUTOSAR Interface
AUTOSAR CanNm介绍
AUTOSAR BswM介绍
AUTOSAR DCM介绍
AUTOSAR的故障存储策略
一文详解 AUTOSAR Dcm模块

分享不易,恳请点个【👍】和【在

汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 92浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 82浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 23浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 23浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 21浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 211浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 128浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 100浏览
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 29浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 123浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 115浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 22浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 150浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 80浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 28浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦