吐血整理-AUTOSAR 存储

1 简介

AUTOSAR分层架构中的存储器堆栈由以下模块组成,它为上层应用层和基础软件提供基本的内存管理服务。

  • 非易失性存储器管理器- NVM(服务层)
  • 存储器接口- MemIf(ECU抽象层)
  • Flash EEPROM模拟-FEE(ECU抽象层)
  • EEPROM抽象- EA (ECU 抽象层)
  • Flash 驱动程序——Fls(MCAL 层)
  • EEPROM 驱动程序——Eep(MCAL 层)。

图 AUTOSAR 中的内存堆栈

2 服务类型

NvM 模块为应用程序或基础软件提供基本的同步和异步【读/写/比较】服务。

  • 同步服务:同步服务是一种阻塞式服务调用,其中程序轮询服务是否完成,只有在服务完成时才返回执行。

  • 异步服务:异步服务是一种非阻塞服务调用,其中对服务的请求被放置在队列中,并且通过在块配置期间配置的回调例程通知上层服务完成。

3 Memory block类型

基于强制或可选内存对象的数量,如 NV 块、RAM 块、ROM 块和管理块,存储器堆栈有不同类型的 NvM 块可以配置为,

  • 原生块Native Blocks

  • 冗余块Redundant Blocks

  • 数据集块Dataset Blocks

NV 块是一个基本对象,它包含一个【块头、数据和一个可选的 CRC 字段】。RAM 和 ROM 块是配置的 NV 块的副本。RAM 块(可选)用于向非易失性存储器读/写数据。ROM 块(可选)用于在发生故障时恢复 NV 块的默认值。 管理块至少包含NV块的状态和长度;它可以包含更多字段。管理块中的状态字段指定 NV 块是否包含有效数据,长度字段指定 NV 块中数据的长度。

图 NV块

3.1 Native Blocks

Native Block 是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 1

RAM 块(强制)– 1

ROM 块(可选)– 1

管理块(必填) – 1

3.2 Redundant Blocks

冗余块是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 2

RAM 块(强制)– 1

ROM 块(可选)– 1

管理块(必填) – 1

3.3 Dataset Blocks

数据集块是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 1 到 255

RAM 块(强制)– 1

ROM 块(可选)– 1 到 n(其中“n”可以根据配置而变化)

管理块(必填) – 1

4 单/多块请求和处理

从应用程序发出单/多块请求时触发的基本模块流程:

4.1 单块请求

单块请求是一种只有一个 NvM 块必须写入或从 NvM 存储器读取的请求。基本的单块请求是 NvM_ReadBlock 和 NvM_WriteBlock。单块调用是系统正常运行期间最常用的服务。

4.1 多块请求

多块请求是请求将多个 NvM 块写入到 NvM 内存或从 NvM 内存读取的请求。该块可以配置为在 NvM 块配置期间用于多块服务。基本的多块调用是 NvM_ReadAll 和 NvM_WriteAll。多块调用主要用于系统启动和系统关闭期间。启动期间使用多块调用将所有最后写入的数据从 NvM 恢复到 RAM,并在关闭期间将数据从 RAM 内存存储到 NvM。

4.3 单/多块的请求处理

单块调用:当应用软件组件或基本软件模块提出单块服务请求时,该请求由 NvM 接收。NvM 模块将此请求转发给 MemIf,其中包含数据引用和硬件的块ID,在写入请求的情况下必须写入数据。在读取请求的情况下,NvM 会传递必须回读数据的块引用和块ID。MemIf 将此请求转发到层,根据 NvM 传递的设备标识符,该层可以是FEE(Flash EEPROM 仿真)或 Ea(EEPROM 抽象)。如果请求传递给FEE模块,FEE模块将其转发给 Fls 驱动程序以服务请求,或者如果请求传递给 Ea 模块,Ea 模块将此请求转发给 Eep 驱动程序。

多块调用:多块调用由 EcuM(ECU 状态管理器)模块在系统启动(NvM_ReadAll)或系统关闭(NvM_WriteAll)期间进行,以恢复上次存储的系统状态或保存当前系统状态。有两个异步多块调用 NvM_ReadAll 和 NvM_WriteAll。读取或写入配置为包含在多块调用期间的所有块,并根据放置块的内存类型触发 MemIf、Fee、Ea、Fls 和 Eep 等块。

  • 1
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用Simulink部署AUTOSAR可以实现更高效、更可靠的汽车软件开发过程。Simulink是一种功能强大的图形化建模和仿真环境,能够帮助开发人员从设计到部署整个软件开发流程。以下是使用Simulink部署AUTOSAR的一些步骤和好处: 1. 模型设计:使用Simulink,可以通过拖放模块、线连接和参数设置来设计汽车控制系统的模型。这种图形化方法使得设计过程更直观和易于理解。 2. 仿真测试:在部署前,Simulink可用于对模型进行仿真测试,以验证系统的功能和性能。通过仿真,可以及早发现和解决潜在的问题。 3. AUTOSAR生成:使用Simulink Coder可以将Simulink模型转换为AUTOSAR软件组件。这个过程会根据AUTOSAR的标准和规范生成相应的代码和配置文件。 4. 接口和集成:在生成AUTOSAR代码后,可以使用AUTOSAR开发工具将生成的代码集成到整个AUTOSAR架构中。这包括配置汽车电子控制单元(ECU)的功能和参数。 5. 硬件目标:Simulink支持多种硬件目标,如AUTOSAR支持的微控制器芯片。这使得开发人员可以基于特定硬件目标进行优化设计,以满足实际的汽车应用需求。 通过使用Simulink部署AUTOSAR,汽车软件开发人员可以实现更高效、更质量可靠的软件开发过程。它简化了设计和测试过程,并提供了与AUTOSAR标准完全兼容的代码生成。此外,Simulink还为开发人员提供了更好的可视化和仿真能力,以更好地理解和验证系统的功能。总的来说,Simulink在AUTOSAR开发中的应用,对于汽车行业来说是一个非常有价值的工具。 ### 回答2: 使用Simulink部署Autosar的过程通常包括以下步骤: 1. 配置Autosar模型:在Simulink中创建Autosar模型,并根据需求配置模型。这可能涉及到定义组件、应用程序和服务等。 2. 定义软件组件:使用Simulink对应的工具箱或Autosar建模工具,定义各个组件的功能和接口。这涉及到使用Simulink的模块化建模工具定义组件内部的功能和逻辑,以及定义组件之间的接口和通信方式。 3. 分配任务和资源:为Autosar软件架构中的每个组件分配处理器资源和任务优先级。这可以通过Simulink的Autosar模块进行设置,以确保各个组件在运行时能够按照预期方式进行调度和执行。 4. 生成Autosar描述文件:通过Simulink的Autosar模块,可以生成包含所有组件、接口、任务和资源配置信息的Autosar描述文件(ARXML)。该文件将被用于后续的编译和构建Autosar应用程序。 5. 编译生成的描述文件:使用Autosar开发工具链中的编译器和构建工具,将生成的描述文件进行编译和构建。这将生成可以在Autosar平台上运行的二进制可执行文件(例如ECU或控制器软件)。 6. 部署到目标平台:将生成的二进制可执行文件部署到目标平台(如汽车ECU)上。这一步骤可能涉及将软件加载到目标平台上,并确保其与硬件平台上的其他组件进行正确的通信和集成。 通过以上步骤,我们可以使用Simulink开发和部署Autosar应用程序。Simulink提供了强大的Autosar建模和仿真工具,可以帮助开发人员更高效地开发和部署Autosar应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

糖果Autosar

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

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

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

打赏作者

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

抵扣说明:

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

余额充值