1. UDS 与 OSI 七层网络模型
UDS是在汽车行业中的一个标准化诊断协议,ISO14229里面定义了它的各个诊断子服务。UDS一般基于CAN通讯,通过某一指定的CAN ID来发送诊断服务命令给ECU,来实现功能。
通常: 完整的UDS通讯报文由 CANID + N_PCI + SID + DATA 这几个要素组成,详见下图:
其中:
- N_PCI由CANTp或者J1939Tp模块实现,它的作用是把应用层需要发的message拆分成多个8 Bytes的message,以兼容CAN的数据长度。 CANTp属于传输层,由ISO15765定义
- SID是UDS的核心,根据ISO14229预先定义好的SID table, 可以解析出当前收到的是什么诊断请求。在AUTOSAR里面由DCM模块实现,DCM定义了当前active的SID table,属于OSI模型里的应用层
- CANID就不用说了,在CANTp将应用层的message切割好了以后,会由CANIf模块加上正确的CANID以后发送出去。CanIf属于数据链路层
【CAN不像TCP有子网络,所以没有network layer】
UDS在AUTOSAR的实现: DCM + PDUR + CANTP + CANIF
【以上为系统级的解释,面试过程中可以举一些工程上的例子,来证明自己的动手能力。例如DCM模块中Routine Control的实现和RTE接口的生成,DEM模块中DTC的生成,和RTE接口SET DTC的原理】
【个人认为,如果面的是senior岗位,最好多谈系统级的理解,工程上的问题辅助的聊一聊即可,毕竟最终公司是希望你去lead下面的engineer来实现。顺便可以从系统的角度拆分任务,吹b一下自己的组织领导力,任务分配能力】