AUTOSAR图解==>AUTOSAR_TR_GeneralBlueprintsSupplement
AUTOSAR SwRecordLayout 结构与可视化
目录
- 引言
- SwRecordLayout 结构概览
- 记录布局类型
3.1 分布式数据点搜索 (Distr)
3.2 曲线 (Curve)
3.3 地图 (Map)
3.4 多维数组 (Cuboid/Cube)
3.5 值和值块 (Value/ValueBlock) - 单位和物理尺寸
- 总结
1. 引言
AUTOSAR(汽车开放系统架构)是一个开放的标准化汽车软件架构,它为汽车电子控制单元(ECU)上的软件开发提供了通用框架。AUTOSAR标准中定义了多种数据结构,用于在不同的软件组件间传递信息。其中SwRecordLayout(软件记录布局)是一种重要的数据结构定义,用于描述各种类型的数据在内存中的组织方式。
本文档主要基于《AUTOSAR_TR_GeneralBlueprintsSupplement》技术报告,对SwRecordLayout的结构和各种类型进行可视化和详细说明,帮助开发者更好地理解AUTOSAR中数据的组织方式。
2. SwRecordLayout 结构概览
SwRecordLayout定义了数据在内存中的组织结构,它可以描述各种复杂数据类型,从简单的单一值到多维数组。下图展示了SwRecordLayout的整体结构和各种类型:
SwRecordLayout的基本组成包括:
-
SwRecordLayout:定义记录布局的基本属性
- shortName:记录布局的名称
- category:记录布局的类别(如VALUE, VALUE_ARRAY等)
-
SwRecordLayoutGroup:定义记录布局的分组信息
- swRecordLayoutGroupAxis:指定轴的索引
- swRecordLayoutGroupFrom:组内元素的起始索引
- swRecordLayoutGroupTo:组内元素的结束索引
-
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记录布局的主要特点:
-
结构组成:
- N:定义轴上的采样点数量
- X:定义轴上各采样点的物理位置值
-
用途:
- 允许多条曲线引用相同的轴分布
- 只存储轴信息,不存储实际数据值
- 可以优化内存使用,避免重复存储相同的轴信息
-
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(固定内置曲线)等类型。
曲线记录布局的类型和特点:
-
Cur:
- 只定义数据值(Val),不包含采样点数量和轴值
- 需要结合Distr使用,从Distr获取轴信息
- 内存中只存储数据值
-
IntCur:
- 集成了采样点数量(N)、轴值(X)和数据值(Val)
- 完全自包含,不需要引用外部Distr
- 内存表示顺序:N, [X1, X2, …, Xn], [Val1, Val2, …, Valn]
-
FixIntCur:
- 与IntCur类似,但使用固定点插值库
- 为资源受限的系统优化
内存表示:
- Cur只存储值数组:[Val1, Val2, …, Valn]
- IntCur存储完整信息:N, [X1, X2, …, Xn], [Val1, Val2, …, Valn]
曲线记录布局广泛应用于表示传感器特性、控制映射和其他一维函数关系。例如,发动机控制中的温度补偿曲线、节气门位置与扭矩请求的关系等。
3.3 地图 (Map)
地图记录布局用于表示二维函数关系,包括Map(基本地图)、IntMap(内置地图)、IntMap3x4(特定尺寸内置地图)和FixIntMap(固定内置地图)等类型。
地图记录布局的类型和特点:
-
Map:
- 只定义数据值矩阵,不包含轴信息
- 需要结合外部定义的轴信息使用
- 内存中按行优先顺序存储所有值
-
IntMap:
- 集成了X轴和Y轴的采样点数量和值
- 包含完整的二维映射信息
- 内存表示顺序:Nx, Ny, [X轴值], [Y轴值], [数据值矩阵(行优先)]
-
IntMap3x4:
- 特定尺寸的内置地图,固定为3行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(五维立方体)。
多维数组记录布局的类型和特点:
-
Cuboid:
- 三维数据结构,有X、Y、Z三个维度
- 总共有X×Y×Z个数据点
- 内存表示采用从最高维到最低维的顺序
-
Cube_4:
- 四维数据结构,有W、X、Y、Z四个维度
- 总共有W×X×Y×Z个数据点
- 适用于需要表示四个变量间关系的场景
-
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(多维值块)。
值和值块记录布局的类型和特点:
-
Value:
- 表示单一数据值
- 没有维度或轴
- 是最简单的记录布局类型
-
ValueBlock1D:
- 一维值数组
- 类似于一维数组或向量
- 内存中线性存储N个值
-
ValueBlockMD:
- N维值数组
- 类似于Cuboid/Cube结构
- 可以包含物理尺寸和单位信息
值和值块记录布局的一个重要特性是可以关联物理尺寸和单位信息,这使得数据具有明确的物理意义,便于系统理解和处理。
应用场景:
- Value:单一校准参数,如温度阈值、时间常数等
- ValueBlock1D:一组相关参数,如PID控制器参数集
- ValueBlockMD:多维参数集,如不同工作模式下的多组配置参数
4. 单位和物理尺寸
AUTOSAR中的单位和物理尺寸定义允许SwRecordLayout中的数据具有明确的物理意义。这些定义使得不同软件组件可以正确解释数据含义,确保系统集成的一致性。
物理尺寸:
- 定义物理量的量纲
- 通过七个基本量纲(长度、质量、时间等)的幂次组合表示
- 例如:速度 = 长度^1 × 时间^(-1)
单位:
- 定义物理量的测量单位
- 可以是SI单位(带前缀)或其他单位
- 具有因子(factor)和偏移量(offset)属性,用于单位转换
单位与SwRecordLayout的关系:
- 轴可以关联物理尺寸和单位,明确轴的物理意义
- 值可以关联物理尺寸和单位,明确数据的物理意义
- 这种关联使得数据具有明确的语义,便于不同组件间的数据交换和处理
5. 总结
AUTOSAR的SwRecordLayout提供了一种灵活且强大的机制,用于定义各种复杂数据结构在内存中的组织方式。从简单的单一值到复杂的多维数组,SwRecordLayout都能提供统一的描述方式。结合物理尺寸和单位定义,SwRecordLayout不仅描述了数据的存储结构,还赋予了数据明确的物理意义。
SwRecordLayout的主要优势包括:
- 结构统一:不同复杂度的数据结构采用统一的描述方式
- 内存优化:通过分离轴信息和数据值,实现内存共享和优化
- 物理语义:结合物理尺寸和单位,赋予数据明确的物理意义
- 可扩展性:支持从简单类型到复杂多维结构的扩展
单一值到复杂的多维数组,SwRecordLayout都能提供统一的描述方式。结合物理尺寸和单位定义,SwRecordLayout不仅描述了数据的存储结构,还赋予了数据明确的物理意义。
SwRecordLayout的主要优势包括:
- 结构统一:不同复杂度的数据结构采用统一的描述方式
- 内存优化:通过分离轴信息和数据值,实现内存共享和优化
- 物理语义:结合物理尺寸和单位,赋予数据明确的物理意义
- 可扩展性:支持从简单类型到复杂多维结构的扩展
在实际的AUTOSAR开发中,合理选择和使用SwRecordLayout可以提高数据处理的效率、减少内存占用,并确保不同组件间数据交换的正确性。为了获取更多详细信息,请参考AUTOSAR官方文档,特别是《AUTOSAR_TR_GeneralBlueprintsSupplement》技术报告。