首页 > 其他 > 详细

ArcCore重构-打通Can各层ID配置

时间:2018-05-14 23:48:06      阅读:254      评论:0      收藏:0      [点我收藏+]
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5
 
ArcCore中Communication Service中各层都有许多ID的配置,如Can driver中有CanObjectId,
CanIf中有CANIF_ID,CanTp中又有CANTP_ID,其他的PDUR_ID, COM_ID等等,纷繁复杂。
 
先来看看各层的配置:
Can Driver:
技术分享图片
 
CanIf:
技术分享图片
CanTp:
技术分享图片
CanTp中最为明显,各种ID齐上场,眼花缭乱,很难理清楚各个ID之间的关系。这些ID又被当做参数传递给上层或者下层,或者被当做数组索引号来索引数组,配置时很难一一对应起来。
有没有什么办法简化呢?
 
Communication各层次交互图如下:
技术分享图片
 
跟踪代码可以发现,除了Can driver之外,其他各层之间的API,都是用PduId为参数指代要操作的PDU。虽然这些PduId在每一层都有自己的对应关系,但在各层之间指代的是同一个PDU类型,如COM -> PDUR -> CANTP -> CANIF -> CAN DRV,每一层有自己的ID,但是指代其实是同一个Pdu类型。
 
所以可以打通各层的PduId,统一使用,各层的配置数组索引号根据统一的PduId编号进行映射,在内部使用该映射即可。
CanIf: PduId_to_CanIfPduConfig_Index_Map;
CanTp: PduId_to_CanTpNSdu_Index_Map;
PduR: PduId_to_RoutingPath_Index_Map;
这些里面的PduId都是统一定义的,各层对应到各自的配置索引号,以供使用。
 
CanId & PduId
另外一个需要注意的是,要区分Can Id和 PduId。
CanId: 实际发送接收时使用的ID;编号为某PduId的Pdu最终通过Can发送时使用的CanId。
PduId: Pdu类型的编号,用以指代一个Pdu类型。

 

ArcCore重构-打通Can各层ID配置

原文:https://www.cnblogs.com/wjcdx/p/9038613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!