AUTOSAR入门学习篇(六) 目录一、存储功能1.存储器介绍1. RAM易失存储器1、静态 RAM无需刷新即可保存数据2、动态 RAM必须周期性刷新维持电荷数据2. ROM非易失存储器1、单字节擦写修改2、区块擦写、可重复烧录3、一次性可编程4、封装成型存储载体2.AUTOSAR中的存储模块二、Fee换页1.AUTOSAR存储数据流数据流 1硬件 EEPROM 存储通路数据流 2Flash 模拟 EEPROM (Fee) 主流通路2.Flash 怎么模拟 eeprom?3.为什么要 FEE 换页4.FEE换页机制5.换页一、存储功能1.存储器介绍1. RAM易失存储器特性随时读写、访问速度快断电数据直接丢失程序运行时的变量、栈、堆、缓存、临时运算数据都存放于此。1、静态 RAM无需刷新即可保存数据SRAM通用高速内存MCU 运行内存、高速缓存主流选型CCM RAM内核独占高速内存DMA 无法访问存放高频计算数据2、动态 RAM必须周期性刷新维持电荷数据SDRAM同步时钟刷新容量大、单价低用作大块数据缓存区PSRAM硬件内置自动刷新电路软件开发无需处理刷新时序易用性高DDR 系列DDR2/DDR3/DDR4双倍数据传输速率带宽高多用于 MPU、Linux 平台2. ROM非易失存储器特性常态只读可通过指令擦写编程断电数据永久保留用来存放固件程序、固定常量、设备标定参数、日志。1、单字节擦写修改EEPROM精准改写单个字节无需整块擦除适合存储少量零散配置参数2、区块擦写、可重复烧录普通 Flash单片机标配存储介质存储 APP 固件、标定参数NOR Flash读取速度快支持芯片直接运行代码擦除速度慢、成本偏高NAND Flash大容量性价比高适合海量数据存储依赖文件系统管理SPI FlashW25Q 等串行通讯架构价格低廉普遍存放固件升级包、运行日志3、一次性可编程OTP数据只能写入一次不可篡改存储设备序列号、加密密钥、出厂校准数据4、封装成型存储载体SD 卡封装 NAND 颗粒配合文件系统实现大容量离线存储2.AUTOSAR中的存储模块Autosar的存储模块主要是针对用户存放data数据的也就是那些会经常变化需要实时存储起来的数据。比如一些故障码当ECU检测到一些故障码就需要实时存储起来在维修的时候就可以通过工具读取出来分析。AUTOSAR存储模块分层1. NvMNVRAM Manager层级BSW 服务层应用访问非易失数据的顶层唯一接口核心以 Block 为单位管理数据实现数据存储、备份、恢复、写入调度完全屏蔽底层硬件介质差异2. MemIfMemory Abstraction Interface层级存储总抽象分发层核心接收 NvM 下发指令根据数据存储载体路由分发至Ea 硬件 EEPROM 分支、Fee Flash 模拟 EEPROM 分支解耦上层业务与底层硬件实现3. 两个子抽象层EaEEPROM Abstraction封装片内 / 外挂 EEPROM 硬件操作向上提供统一标准 API隔离不同 EEPROM 芯片、通讯总线的硬件差异FeeFlash EEPROM Emulation依托 MCU 片内 Flash通过算法模拟 EEPROM 字节级改写特性解决 Flash 仅支持整块擦除的短板是车载最主流的参数落地方案4. MCAL 硬件驱动层EEPROM Drv直接操作寄存器完成真实 EEPROM 的读写、擦除硬件动作FlsFlash Drv操控片内 Flash 寄存器实现 Flash 的编程、擦除、读取底层硬件操作完整数据流应用层 → NvM → MemIf → Ea/Fee → EEPROM 驱动 / Fls 驱动 → 物理存储硬件二、Fee换页1.AUTOSAR存储数据流数据流 1硬件 EEPROM 存储通路App/RTE → NvM → MemIf → Ea → EEPROM Drv → 片内 / 外挂 EEPROM 硬件数据流 2Flash 模拟 EEPROM (Fee) 主流通路App/RTE → NvM → MemIf → Fee → Fls (Flash 驱动) → 单片机片内 Flash2.Flash 怎么模拟 eeprom?Flash 最小写入单元为 8 字节无法直接改写单个字节FEE 先将整页数据读到内存修改指定字节后再整体回写。3.为什么要 FEE 换页Flash只能整片擦除、最小操作单位是扇区 / 页无法单字节修改但项目里参数经常少量改写故障码、标定值反复擦写同一个页面会快速耗尽 Flash 擦写寿命一般 Flash 只有上万次擦写寿命。4.FEE换页机制同一个扇区内部重复更新某一 NvM 数据块 Block 时不擦除、不覆盖原有旧 Block 数据在扇区剩余空白空间写入新版本 Block 数据标记新版块为有效原有旧 Block 标记为无效上层读取数据时只检索并读取标识为有效的最新数据副本。 单个扇区空间被多版历史数据占满后触发扇区整体换页动作。5.换页原有扇区被历史无效数据占满触发换页筛选旧扇区内全部有效数据原样拷贝至空白新 Bank扇区数据迁移完成后整体擦除旧 Bank 所有内容擦除干净的旧 Bank 转为备用区等待下一次空间耗尽时轮换充当新扇区两个 Bank 循环交替使用。全程只迁移最新有效数据丢弃冗余无效副本兼顾存储空间复用、Flash 磨损均衡与数据可靠性