AUTOSAR图解==>AUTOSAR_SWS_BulkNvDataManager

BulkNvDataManager分析与设计

AUTOSAR基础软件模块详解

目录


1. 模块架构

1.1 BulkNvDataManager架构概述

BulkNvDataManager (简称BndM) 是AUTOSAR基础软件中的一个服务层模块,专门用于管理非易失性批量数据。

在这里插入图片描述

1.2 架构层次说明

  1. 应用层:包含使用BulkNvDataManager服务的应用软件组件。

    • 应用软件组件通过BndM的API接口访问非易失性数据。
    • 这些数据通常用于变体编码等需要频繁读取但很少更新的场景。
  2. 服务层:包含BulkNvDataManager模块本身。

    • BndM的主要功能是允许应用层直接从Flash中读取数据,避免使用RAM镜像。
    • 这种设计适用于需要大量非易失性数据的应用场景,提高内存利用效率。
  3. ECU硬件抽象层:包含Flash驱动。

    • BndM通过这一层访问底层Flash存储设备。
    • 当前版本仅支持带有A/B扇区切换功能的高端微控制器中的PFlash写入。
  4. 硬件层:实际的Flash存储器硬件。

1.3 架构特点与限制

  1. 数据管理特点

    • 适用于频繁读取但很少更新的数据场景
    • 直接从Flash读取数据,不需要RAM镜像
    • 针对变体编码等大量数据场景优化
  2. 当前限制

    • 仅支持带有A/B扇区切换功能的PFlash写入
    • 适用性受限于支持该特性的架构
    • 当前不支持与底层Flash驱动的并行访问同步

2. 类结构与数据模型

2.1 BulkNvDataManager类图概述

BulkNvDataManager模块的类结构定义了其配置和数据处理方式。下图展示了主要的类型定义和它们之间的关系:

在这里插入图片描述

2.2 核心数据类型说明

  1. BndM_ConfigType:模块的主配置类型

    • 包含一般配置、块描述符数组和回调函数
    • 在模块初始化时传递给BndM_Init函数
  2. BndM_BlockIdType:块ID类型

    • 用于唯一标识不同的数据块
    • 基本类型为uint16
  3. BndM_Block<BlockId.Shortname>Type:块数据类型

    • 对应每个配置的数据块的实际类型
    • 不同数据块可以有不同的类型和大小
  4. BndM_Result:操作结果枚举

    • BndM_OK:操作成功
    • BndM_NOT_OK:操作失败
    • BndM_PENDING:操作挂起,尚未完成
    • BndM_ABORTED:操作被中止

2.3 配置容器说明

  1. BndMGeneral:一般配置容器

    • BndMDevErrorDetect:开发错误检测开关
    • BndMVersionInfoApi:版本信息API开关
    • BndMFinalizeNotification:完成通知开关
    • BndMImplicitVariant:隐式变体开关
  2. BndMBlockDescriptor:数据块描述符

    • BndMBlockShortName:块短名
    • BndMBlockId:块ID
    • BndMBlockLength:块长度
    • BndMBlockIsProgrammable:块是否可编程
    • BndMSectorRange:扇区范围引用
  3. BndMCallbackBlock:块回调函数容器

    • BndMCallbackBlockRef:块引用
    • BndMModuleName:模块名称
  4. BndMCallbackGeneral:一般回调函数容器

    • BndMJobErrorNotification:错误通知回调
    • BndMJobEndNotification:任务结束通知回调

2.4 API函数概述

  1. BndM_Init:初始化BndM模块
  2. BndM_GetVersionInfo:获取版本信息
  3. BndM_GetBlockPtr:获取数据块指针
  4. BndM_WriteStart:开始写入操作
  5. BndM_WriteBlock:写入指定数据块
  6. BndM_WriteFinalize:完成写入操作
  7. BndM_WriteCancel:取消写入操作
  8. BndM_MainFunction:主函数,周期性调用

3. 操作序列

3.1 BulkNvDataManager写入操作序列

下图展示了BulkNvDataManager模块写入数据的典型交互序列:

在这里插入图片描述

3.2 序列操作详解

  1. 初始化阶段

    • 应用调用BndM_Init传入配置指针
    • BndM初始化内部数据结构和状态
  2. 读取数据阶段

    • 应用调用BndM_GetBlockPtr获取数据块指针
    • BndM返回直接指向Flash中数据的指针,无需复制到RAM
  3. 写入过程

    • 写入开始:应用调用BndM_WriteStart
    • 块写入:应用调用BndM_WriteBlock指定块ID
    • 写入完成:应用调用BndM_WriteFinalize
    • 在写入过程中,BndM会调用配置的回调函数
  4. 错误处理

    • 应用可以随时调用BndM_WriteCancel取消写入操作
    • 发生错误时会调用BndM_JobErrorNotification回调

3.3 回调函数使用

  1. 块级回调

    • xxx_BndMWriteStartFinish:写入开始后回调
    • xxx_BndMWriteBlockFinish:块写入完成后回调
    • xxx_BndMWriteFinalizeFinish:写入完成后回调
  2. 一般回调

    • BndM_JobEndNotification:任务成功完成时回调
    • BndM_JobErrorNotification:任务出错时回调

4. 总结

BulkNvDataManager是AUTOSAR基础软件中的一个专门用于管理非易失性批量数据的模块。它的特点是允许应用直接从Flash读取数据,避免使用RAM镜像,适合处理变体编码等需要频繁读取但很少更新的大量数据场景。

模块的架构清晰,包括完整的配置结构和API函数集,支持数据块的读取和写入操作。写入操作通过一系列API函数实现,包括开始、写入块和完成操作。模块也提供了相应的回调机制,便于应用层获知操作状态。

量数据的模块。它的特点是允许应用直接从Flash读取数据,避免使用RAM镜像,适合处理变体编码等需要频繁读取但很少更新的大量数据场景。

模块的架构清晰,包括完整的配置结构和API函数集,支持数据块的读取和写入操作。写入操作通过一系列API函数实现,包括开始、写入块和完成操作。模块也提供了相应的回调机制,便于应用层获知操作状态。

当前版本的BulkNvDataManager仅支持带有A/B扇区切换功能的PFlash写入,适用性受限于支持该特性的硬件架构。未来版本可能会改进其架构以支持更多类型的存储器和应用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KaiGer666

慧眼~施主!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值