当前位置: 首页 > ds >正文

AUTOSAR图解==>AUTOSAR_TR_GeneralBlueprintsSupplement

AUTOSAR SwRecordLayout 结构与可视化

目录

  1. 引言
  2. SwRecordLayout 结构概览
  3. 记录布局类型
    3.1 分布式数据点搜索 (Distr)
    3.2 曲线 (Curve)
    3.3 地图 (Map)
    3.4 多维数组 (Cuboid/Cube)
    3.5 值和值块 (Value/ValueBlock)
  4. 单位和物理尺寸
  5. 总结

1. 引言

AUTOSAR(汽车开放系统架构)是一个开放的标准化汽车软件架构,它为汽车电子控制单元(ECU)上的软件开发提供了通用框架。AUTOSAR标准中定义了多种数据结构,用于在不同的软件组件间传递信息。其中SwRecordLayout(软件记录布局)是一种重要的数据结构定义,用于描述各种类型的数据在内存中的组织方式。

本文档主要基于《AUTOSAR_TR_GeneralBlueprintsSupplement》技术报告,对SwRecordLayout的结构和各种类型进行可视化和详细说明,帮助开发者更好地理解AUTOSAR中数据的组织方式。

2. SwRecordLayout 结构概览

SwRecordLayout定义了数据在内存中的组织结构,它可以描述各种复杂数据类型,从简单的单一值到多维数组。下图展示了SwRecordLayout的整体结构和各种类型:

在这里插入图片描述

SwRecordLayout的基本组成包括:

  1. SwRecordLayout:定义记录布局的基本属性

    • shortName:记录布局的名称
    • category:记录布局的类别(如VALUE, VALUE_ARRAY等)
  2. SwRecordLayoutGroup:定义记录布局的分组信息

    • swRecordLayoutGroupAxis:指定轴的索引
    • swRecordLayoutGroupFrom:组内元素的起始索引
    • swRecordLayoutGroupTo:组内元素的结束索引
  3. SwRecordLayoutV:定义记录布局中的值

    • baseTypeRef:值的基本类型(如sint16, uint8等)
    • swRecordLayoutVAxis:值所在的轴
    • swRecordLayoutVProp:值的属性(如COUNT, VALUE等)

AUTOSAR定义了多种SwRecordLayout类型,用于满足不同的数据组织需求:

  • Distr:分布式数据点搜索
  • 曲线类型:Cur, IntCur, FixIntCur
  • 地图类型:Map, IntMap, IntMap3x4, FixIntMap
  • 多维数组:Cuboid, Cube_4, Cube_5
  • 值和值块:Value, ValueBlock1D, ValueBlockMD

接下来,我们将详细介绍每种类型的结构和特点。

3. 记录布局类型

3.1 分布式数据点搜索 (Distr)

Distr记录布局用于描述分布式数据点搜索。该布局只定义采样点数量和轴值,不包含任何数据值。多个曲线可以使用相同的分布轴。

在这里插入图片描述

Distr记录布局的主要特点

  1. 结构组成

    • N:定义轴上的采样点数量
    • X:定义轴上各采样点的物理位置值
  2. 用途

    • 允许多条曲线引用相同的轴分布
    • 只存储轴信息,不存储实际数据值
    • 可以优化内存使用,避免重复存储相同的轴信息
  3. ARXML表示

    <SW-RECORD-LAYOUT><SHORT-NAME>Distr_s16</SHORT-NAME><CATEGORY>INDEX_INCR</CATEGORY><SW-RECORD-LAYOUT-GROUP><SW-RECORD-LAYOUT-V><SHORT-LABEL>N</SHORT-LABEL><BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR/Platform/SwBaseTypes_Blueprint/sint16</BASE-TYPE-REF><SW-RECORD-LAYOUT-V-AXIS>1</SW-RECORD-LAYOUT-V-AXIS><SW-RECORD-LAYOUT-V-PROP>COUNT</SW-RECORD-LAYOUT-V-PROP></SW-RECORD-LAYOUT-V><SW-RECORD-LAYOUT-GROUP><SW-RECORD-LAYOUT-GROUP-AXIS>1</SW-RECORD-LAYOUT-GROUP-AXIS><SW-RECORD-LAYOUT-GROUP-FROM>1</SW-RECORD-LAYOUT-GROUP-FROM><SW-RECORD-LAYOUT-GROUP-TO>-1</SW-RECORD-LAYOUT-GROUP-TO><SW-RECORD-LAYOUT-V><SHORT-LABEL>X</SHORT-LABEL><BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR/Platform/SwBaseTypes_Blueprint/sint16</BASE-TYPE-REF><SW-RECORD-LAYOUT-V-AXIS>1</SW-RECORD-LAYOUT-V-AXIS><SW-RECORD-LAYOUT-V-PROP>VALUE</SW-RECORD-LAYOUT-V-PROP></SW-RECORD-LAYOUT-V></SW-RECORD-LAYOUT-GROUP></SW-RECORD-LAYOUT-GROUP>
    </SW-RECORD-LAYOUT>
    

在实际应用中,多条曲线可以引用同一个Distr记录布局,这样可以共享相同的X轴值,但每条曲线具有自己的Y值。

3.2 曲线 (Curve)

曲线记录布局用于表示一维函数关系,包括Cur(基本曲线)、IntCur(内置曲线)和FixIntCur(固定内置曲线)等类型。

在这里插入图片描述

曲线记录布局的类型和特点

  1. Cur

    • 只定义数据值(Val),不包含采样点数量和轴值
    • 需要结合Distr使用,从Distr获取轴信息
    • 内存中只存储数据值
  2. IntCur

    • 集成了采样点数量(N)、轴值(X)和数据值(Val)
    • 完全自包含,不需要引用外部Distr
    • 内存表示顺序:N, [X1, X2, …, Xn], [Val1, Val2, …, Valn]
  3. FixIntCur

    • 与IntCur类似,但使用固定点插值库
    • 为资源受限的系统优化

内存表示

  • Cur只存储值数组:[Val1, Val2, …, Valn]
  • IntCur存储完整信息:N, [X1, X2, …, Xn], [Val1, Val2, …, Valn]

曲线记录布局广泛应用于表示传感器特性、控制映射和其他一维函数关系。例如,发动机控制中的温度补偿曲线、节气门位置与扭矩请求的关系等。

3.3 地图 (Map)

地图记录布局用于表示二维函数关系,包括Map(基本地图)、IntMap(内置地图)、IntMap3x4(特定尺寸内置地图)和FixIntMap(固定内置地图)等类型。

在这里插入图片描述

地图记录布局的类型和特点

  1. Map

    • 只定义数据值矩阵,不包含轴信息
    • 需要结合外部定义的轴信息使用
    • 内存中按行优先顺序存储所有值
  2. IntMap

    • 集成了X轴和Y轴的采样点数量和值
    • 包含完整的二维映射信息
    • 内存表示顺序:Nx, Ny, [X轴值], [Y轴值], [数据值矩阵(行优先)]
  3. IntMap3x4

    • 特定尺寸的内置地图,固定为3行4列
    • 针对常见尺寸优化的特殊实现
  4. FixIntMap

    • 使用固定点插值库的内置地图
    • 为资源受限系统优化的实现

地图索引定义

  • AXIS 1:对应X轴(水平方向)
  • AXIS 2:对应Y轴(垂直方向)
  • 内存采用行优先存储:[Val(1,1), Val(1,2), …, Val(1,n), Val(2,1), …]

地图记录布局在汽车控制系统中非常重要,常用于表示双变量函数,如发动机点火提前角与转速和负荷的关系、燃油喷射量与多因素的映射关系等。

3.4 多维数组 (Cuboid/Cube)

多维数组记录布局用于表示三维或更高维度的数据结构,包括Cuboid(三维立方体)、Cube_4(四维立方体)和Cube_5(五维立方体)。

在这里插入图片描述

多维数组记录布局的类型和特点

  1. Cuboid

    • 三维数据结构,有X、Y、Z三个维度
    • 总共有X×Y×Z个数据点
    • 内存表示采用从最高维到最低维的顺序
  2. Cube_4

    • 四维数据结构,有W、X、Y、Z四个维度
    • 总共有W×X×Y×Z个数据点
    • 适用于需要表示四个变量间关系的场景
  3. Cube_5

    • 五维数据结构,有V、W、X、Y、Z五个维度
    • 总共有V×W×X×Y×Z个数据点
    • 适用于高度复杂的多变量关系建模

多维数组的索引定义

  • AXIS 1:X轴
  • AXIS 2:Y轴
  • AXIS 3:Z轴
  • AXIS 4:W轴(仅Cube_4和Cube_5)
  • AXIS 5:V轴(仅Cube_5)

多维数组记录布局主要用于表示复杂的多变量函数关系,例如发动机控制中依赖于多个参数(如转速、负荷、温度、海拔等)的校准映射表。随着维度增加,数据量呈指数级增长,因此高维数组通常只用于确实需要多参数精确控制的场景。

3.5 值和值块 (Value/ValueBlock)

值和值块记录布局用于表示单一值或值的集合,包括Value(单一值)、ValueBlock1D(一维值块)和ValueBlockMD(多维值块)。

在这里插入图片描述

值和值块记录布局的类型和特点

  1. Value

    • 表示单一数据值
    • 没有维度或轴
    • 是最简单的记录布局类型
  2. ValueBlock1D

    • 一维值数组
    • 类似于一维数组或向量
    • 内存中线性存储N个值
  3. ValueBlockMD

    • N维值数组
    • 类似于Cuboid/Cube结构
    • 可以包含物理尺寸和单位信息

值和值块记录布局的一个重要特性是可以关联物理尺寸和单位信息,这使得数据具有明确的物理意义,便于系统理解和处理。

应用场景

  • Value:单一校准参数,如温度阈值、时间常数等
  • ValueBlock1D:一组相关参数,如PID控制器参数集
  • ValueBlockMD:多维参数集,如不同工作模式下的多组配置参数

4. 单位和物理尺寸

AUTOSAR中的单位和物理尺寸定义允许SwRecordLayout中的数据具有明确的物理意义。这些定义使得不同软件组件可以正确解释数据含义,确保系统集成的一致性。

在这里插入图片描述

物理尺寸

  • 定义物理量的量纲
  • 通过七个基本量纲(长度、质量、时间等)的幂次组合表示
  • 例如:速度 = 长度^1 × 时间^(-1)

单位

  • 定义物理量的测量单位
  • 可以是SI单位(带前缀)或其他单位
  • 具有因子(factor)和偏移量(offset)属性,用于单位转换

单位与SwRecordLayout的关系

  • 轴可以关联物理尺寸和单位,明确轴的物理意义
  • 值可以关联物理尺寸和单位,明确数据的物理意义
  • 这种关联使得数据具有明确的语义,便于不同组件间的数据交换和处理

5. 总结

AUTOSAR的SwRecordLayout提供了一种灵活且强大的机制,用于定义各种复杂数据结构在内存中的组织方式。从简单的单一值到复杂的多维数组,SwRecordLayout都能提供统一的描述方式。结合物理尺寸和单位定义,SwRecordLayout不仅描述了数据的存储结构,还赋予了数据明确的物理意义。

SwRecordLayout的主要优势包括:

  1. 结构统一:不同复杂度的数据结构采用统一的描述方式
  2. 内存优化:通过分离轴信息和数据值,实现内存共享和优化
  3. 物理语义:结合物理尺寸和单位,赋予数据明确的物理意义
  4. 可扩展性:支持从简单类型到复杂多维结构的扩展

单一值到复杂的多维数组,SwRecordLayout都能提供统一的描述方式。结合物理尺寸和单位定义,SwRecordLayout不仅描述了数据的存储结构,还赋予了数据明确的物理意义。

SwRecordLayout的主要优势包括:

  1. 结构统一:不同复杂度的数据结构采用统一的描述方式
  2. 内存优化:通过分离轴信息和数据值,实现内存共享和优化
  3. 物理语义:结合物理尺寸和单位,赋予数据明确的物理意义
  4. 可扩展性:支持从简单类型到复杂多维结构的扩展

在实际的AUTOSAR开发中,合理选择和使用SwRecordLayout可以提高数据处理的效率、减少内存占用,并确保不同组件间数据交换的正确性。为了获取更多详细信息,请参考AUTOSAR官方文档,特别是《AUTOSAR_TR_GeneralBlueprintsSupplement》技术报告。

http://www.xdnf.cn/news/5828.html

相关文章:

  • 知网AI检测对抗智能体,降AI率不再单独花钱!
  • ESP32 web服务导致的lwip “pbuf_free: p->ref > 0问题
  • 【001】renPy android端启动流程分析
  • 内存对齐(Memory Alignment)
  • 4399(简易版) GOC小游戏
  • [python] 面向对象的三大特性-封装及新式类
  • Autoregressive Distillation of Diffusion Transformers
  • IOP|2025第二届机电一体化、机器人与控制系统国际会议(MRCS2025)
  • 电流互感器使用全攻略
  • Hugging Face汉化教程及注册使用详解
  • python-74-Nacos技术之单机模式安装Nacos并使用Python操作Nacos
  • 【Ansible】之inventory主机清单
  • 用 openssl 测试 tls 连接
  • Redis+Caffeine构造多级缓存
  • 多模态链式思考推理:让大模型更像人类一样思考
  • C——五子棋小游戏
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
  • cursor 出现问题 为客户解决问题
  • 大模型科研能力评价参考平台上线,推动技术创新与发展
  • Koa知识框架
  • 机器学习——集成学习基础
  • 信息安全模型全解:从机密性到完整性的理论基石
  • Scala安装教程
  • 通用RAG:通过路由模块对多源异构知识库检索生成问答思路
  • C++ asio网络编程(5)简单异步echo服务器
  • 自动发电控制是一次调频还是二次调频?
  • 运行Spark程序(二)RDD基本概念和创建
  • 【Vue】Composables 和 Utils 区别
  • SysAid On-Prem XML注入漏洞复现(CVE-2025-2776)
  • 图形化编程平台的破局之道:从工具同质化到生态差异化