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(包括元数据)的模块只能访问(读和/或写)它知道的元数据项。未知的元数据项应保持不变。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值