网站源码怎么预览,网站建设业务员怎么做,想见你一个网站怎么做,图跃网站建设点击订阅专栏不迷路 文章目录 一、概述二、OSI模型与AUTOSAR层级关系三、I-PDU、N-PDU、L-PDU及其关系3.1. L-PDU3.2. N-PDU3.3. I-PDU 四、数据流4.1. 普通数据流4.2. 诊断数据流4.3. 动态PDU数据流4.4. 安全通信数据流4.5. XCP数据流 返回总目录 一、概述
在学习Autosar通信… 点击订阅专栏不迷路 文章目录 一、概述二、OSI模型与AUTOSAR层级关系三、I-PDU、N-PDU、L-PDU及其关系3.1. L-PDU3.2. N-PDU3.3. I-PDU 四、数据流4.1. 普通数据流4.2. 诊断数据流4.3. 动态PDU数据流4.4. 安全通信数据流4.5. XCP数据流 返回总目录 一、概述
在学习Autosar通信栈时我们会遇到多种PDU相关的缩写如L-PDU、N-PDU、I-PDU和SDU等。理解这些缩写及其相互关系对于掌握通信部分至关重要。L-PDU代表传输层的协议数据单元N-PDU对应网络层I-PDU则是交互层的协议数据单元而SDU是各层之间传递的服务数据单元。它们之间的关系呈现出数据从上到下的封装过程并与OSI七层模型相对应帮助我们更清晰地理解数据在通信中的流动。接下来我们将附上一张Autosar通信示意图以便大家形成宏观印象。 二、OSI模型与AUTOSAR层级关系
OSI通信模型包括七层分别是物理层数据链路层网络层传输层会话层表示层及应用层各层对应的作用如下表
OSI七层模型主要功能应用层为应用程序提供网络服务如文件传输、电子邮件等表示层数据格式转换、加密解密、压缩解压等会话层建立、管理和终止会话传输层提供端到端的可靠数据传输如TCP、UDP协议网络层负责数据包的路由和转发如IP协议数据链路层数据帧的封装、传输和差错检测如以太网协议物理层定义物理介质的电气、机械等特性传输比特流
Autosar的分层架构没有完全按照OSI的七层模型定义可以将Autosar的模型大致分为数据链路层、网络层、交互层如下所示 由上图我们可以看出每个层级都会包含PCI和data StructurePDU PCI data StructureSDU data Structure。
PCI、SDU、PDU又都是啥呢可以看下下边的解释
缩写全称含义与其他的关系SDUService Data Unit服务数据单元上层传递的数据带有传输请求下层接收后提取并传递给上层的数据是PDU的一部分是PDU的数据部分如果SDU中的数据超过 PDU数据域的大小则会将PDU分成 首帧连续帧的形式 发送数据PCIProtocol Control Information协议控制信息将SDU在特定协议层实例间传递所必需的信息包含源和目标等信息发送端添加接收端移除含有源地址和目的地址信息等控制信息可以理解为CAN数据帧中的控制域。PDUProtocol Data Unit协议数据单元包含SDU和PCI发送端从上层传递到下层下层将其视为SDU包含SDU和PCI每个PDU相当于CAN协议中的一帧
根据PDU对应的不同层级PDU又可以分为以下几种
Autosar层级OSI模型层级L-PDU传输层Transport LayerN-PDU网络层Network LayerI-PDU会话层Session LayerSDU应用层Application Layer
三、I-PDU、N-PDU、L-PDU及其关系
L-PDU、N-PDU、I-PDU三者的关系如下所示 3.1. L-PDU
是对应链路层的协议数据单元通常将接口层如 CanIf、FlexrayIf 等视为链路层更准确地说是由 Driver 和 Interface 共同构成链路层其中 Driver 作为链路层可能更为合适因为 Interface 是抽象模块与硬件并非强绑定关系例如以太网中 MAC 层为链路层且与芯片平台强相关。L-PDU 由 ID、数据长度及数据组成以 CAN 通信为例CAN Driver 在接收总线上传来的信号电平后生成 L-PDU然后 L-PDU 传输至 CANIf。 data Structure即需要发送的信息用一个结构体表示结构体里包括数据存储起始位置指针及数据长度。
typedef P2VAR(uint8, TYPEDEF, COM) SduDataPtrType;
typedef uint16 PduLengthType; typedef struct
{SduDataPtrType SduDataPtr; // 指向SDU数据的指针PduLengthType SduLength; // SDU的长度
} PduInfoType;PCI即协议控制信息PCI由传输侧的协议层添加并且在接收侧再次移除。对应到实际的开发PCI可以理解为头部信息比如CanTp在发送数据的时候会添加SF、CF、FF、FC信息等data Structure就是要发送的信息用一个结构体表示结构体里会有数据存储起始位置指针数据长度。
3.2. N-PDU
N-PDU是对应网络层的协议数据单元通常将传输层如CanTp、FlexrayTp等视为网络层。N-PDU在TP层与If层之间传输由N_AI、N_PCI和N_Data组成并且根据N_PCI类型的不同可分为单帧、首帧、连续帧和流控帧等。
N_AI N_AI参数用于识别网络层的对等通信实体主要确定信息发送者的源地址N_SA、接收者的目标地址N_TA、功能/物理寻址类型N_TAtype以及可选择的地址扩展N_AE。在接收到的N_SDU中N_AI信息包括N_SA、N_TA、N_TAtype和N_AE应被复制并包含在N_PDU中。如果消息数据MessageData和Length过长需进行分段传输则N_AI需要在每个N_PDU中重复。
N_PCI N_PCI 其实就是PCI不同层的叫法是协议控制信息其中包含帧类型PCItype像单帧SF、首帧FF、连续帧CF和流控帧FC等都是典型的 PCI 信息。它由传输侧的协议层添加在接收侧则会被移除。在大数据收发时组包过程中会将其移除而拆包过程中又会将其加上。
3.3. I-PDU
I-PDU是对应交互层表示层的协议数据单元。交互层涉及多个模块可参照相关图示XX_If以上模块间的信息交互依靠I-PDU来实现而XX_If与XX_Tp模块的交互则依赖N-PDU。
在数据传输方面小数据传输通常使用XX_If大数据传输一般会用到XX_Tp。例如在诊断的多帧传输场景下XX_Tp层会缓存多个N-PDU直至完整接收一个I-PDU后再通过PduR将其传送给DCM存在I-PDU n * N-PDUn为大于1的正整数的关系。
四、数据流
4.1. 普通数据流
CAN driver –(LPDU)– CanIf –(IPDU)– PDU Router –(IPDU)– COM –(Signals)– RTE
CAN driver接收、发送函数配置通道、波特率、port口等
CanIf对驱动层的封装、给上层一些通知函数DLC、ID到PDU的转换
PDU Router传递数据到对应的上层模块配置路由表
COMIPDU分解成signals提供接口接收、发送信号/帧
4.2. 诊断数据流
CAN driver –(LPDU)– CanIf –(NPDU)– CanTp –(IPDU)– PDU Router –(IPDU)– DCM
CanTp根据ISO15765进行拆包、组包配置时间参数、回调函数等
DCM为上层提供UDS服务、OBD服务
4.3. 动态PDU数据流
在普通数据流的基础上在PudR和COM之间增加IpduM模块 PDU Router –(IPDU)– IPDU Multiplexer –(IPDU)– PDU Router
IpduM发送/接收动态的IPDU可以配置动态IPDU的DLC、静态段、动态段
4.4. 安全通信数据流
在普通数据流的基础上在PudR和COM之间增加 SecOC模块 PDU Router –(IPDU)– SecOC –(IPDU)– PDU Router
SecOCSecurity Onboard Communication安全通信报文的加解密、验证、拆包组包
4.5. XCP数据流
CAN driver –(LPDU)– CanIf ---- XCP
XCP标定、测量功能
參考文档AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf