一、各层PDU
PDU:Protocal Data Unit,协议数据单元,由SDU和PCI组成;
I-PDU:Interaction Layer PDU,数据交互层PDU;
N-PDU:NetWork Layer PDU,网络层PDU,通常用的是TP层,给I-PDU分片段,格式为N_AI + N_PCI + N_Data;
N_AI:Address Information,包含源地址、目标地址、寻址方式
N_PCI:帧类型,共4种:单帧、首帧、流控帧、连续帧
L-PDU:Data Link Layer PDU,数据链路层PDU,由数据、长度、ID组成,几个I-PDU打包进一个L-PDU里面;
SDU:
Service Data Unit,服务数据单元的缩写,是由上层传递的数据,带有传输数据的请求。在由下层接收之后提取并传递到上层的数据也是如此;
PCI:
Protocol Control Information,协议控制信息,如单帧,首帧,流控帧,连续帧等信息。
二、数据流
普通数据流
CAN driver <--(LPDU)--> CanIf <--(IPDU)--> PDU Router <--(IPDU)--> COM <--(Signals)--> RTE
CAN driver:接收、发送函数;配置通道、波特率、port口等;配置帧ID、DLC、类型等
CanIf:对驱动层的封装、给上层一些通知函数;DLC、ID到PDU的转换
PDU Router:传递数据到对应的上层模块;配置路由表
COM:IPDU分解成signals;提供接口(接收、发送信号/帧);配置发送类型、周期、接收函数、IPDU对应signal
诊断数据流
CAN driver <--(LPDU)--> CanIf <--(NPDU)--> CanTp <--(IPDU)--> PDU Router <--(IPDU)--> DCM
CanTp:根据ISO15765进行拆包、组包;配置时间参数、回调函数等
DCM:为上层提供UDS服务、OBD服务;
动态PDU数据流
在普通数据流的基础上,在PudR和COM之间增加 PDU Router <--(IPDU)--> IPDU Multiplexer <--(IPDU)--> PDU Router
IpduM:发送/接收动态的IPDU;配置动态IPDU的DLC、静态段、动态段
安全通信数据流
在普通数据流的基础上,在PudR和COM之间增加 PDU Router <--(IPDU)--> SecOC <--(IPDU)--> PDU Router
SecOC(Security Onboard Communication):安全通信报文的加解密、验证、拆包组包;配置SecOC
XCP数据流
CAN driver <--(LPDU)--> CanIf <----> XCP
XCP:标定、测量功能;配置XCP的帧信息、周期等
控制流
ComM:状态机管理、通信控制;配置通道的休眠唤醒等
状态机管理控制流
ComM <----> CanSM <----> CanIf
CanSM(State Manager):Can通道的开启/关闭;Bus off的错误处理和恢复;配置Busoff等
网络管理控制流
ComM <----> NM <----> CanNM <----> CanIf
NM:封装每个通道的接口,统一给上层;同步各通道的网络状态;配置相关回调函数接口
CanNM:Can网络管理的整体状态机;配置时间参数、NM帧等