Autosar知识:BSW生成规范-元数据处理

PDUs的元数据是由通信栈中的大量模块支持的。

它的作用是在层之间传输信息,层是由分层的体系结构抽象出来的。

第一个受支持的元数据是与CanIf相关的PDUs的CAN ID。

 

元数据由PduInfoType结构通过一个单独的指针来传输,该指针指向一个字节数组,旁边还有一个长度和一个指向PDU有效载荷的指针。

元数据的内容由EcuC定义描述全局PDU (配置位置:/ EcuC / EcucConfigSet / EcucPduCollection / PDU),使类型(MetaDataItemType),长度(MetaDataItemLength)和元数据项的排序(MetaDataItem)包含在一个特定的PDU的元数据。

元数据项的顺序和位置:

元数据由EcuC中的元数据项及其长度(MetaDataItemLength)的配置给出。

按长度排序(MetaDataItemLength)可以确保在元数据中不需要填充,从而允许元数据项在元数据数组中被密集地打包。

一个PDU总是有一个始发(产生)模块和一个最终(消耗)模块,可能还有一些中间(转发)模块。

元数据的布局在PDU中是固定的。因此,对于所有元数据模块来说,原始模块为完整的元数据分配空间,但是访问相同PDU的模块链中的每个模块只访问它们所知道的元数据项。

元数据的分配:

第一个按一定方向引用全局PDU (/EcuC/EcucConfigSet/EcucPduCollection/ PDU)的模块(生产模块)组装PDU的数据。它应该为为PDU定义的整个元数据分配空间,即使它只支持所包含的元数据项的一个子集。只有元数据项的已知子集才由 '生产模块' 初始化。

例如,元数据可以由CanIf创建,作为附加到NPDU的CAN ID。然后CanTp使用这个元数据,它从CAN ID创建一个SOURCE_ADDRESS_16、TARGET_ADDRESS_16和ADDRESS_EXTENSION_8,并将它们附加到一个N-SDU,然后PduR转发(不加修改)这个N-SDU并由DCM使用。当(由于错误的配置)将ETHERNET_MAC_64附加到N-PDU时,它将由CanIf分配,但是既不是由CanIf初始化的,也不是由CanTp访问的。

元数据对齐:

为了能够通过强制转换到适当的基类型(根据MetaDataItemType)来访问元数据项,需要根据所包含的所有元数据项的最严格的对齐要求,对生产模块分配的整个元数据数组进行对齐。

例如,由类型为SOURCE_ADDRESS_16、ADDRESS_EXTENSION_8和ETHERNET_MAC_64的元数据项组成的元数据数组必须是64位对齐的。

 

对元数据的访问:

每个引用全局PDU(包括元数据)的模块只能访问(读和/或写)它知道的元数据项。未知的元数据项应保持不变。

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Autosar官方搬运)