CanTp对其他模块的依赖

CanTp的连接

在AUTOSAR架构的最终版本中,CanTp将用于传输 诊断I-PDUs(例如OBD和UDS协议)和AUTOSAR COM I-PDUs。因此,CanTp模块能够同时处理多个连接(即并行处理多个分段会话)。

最大同时连接数需要被静态配置,这种配置对生成的代码的复杂性和资源消耗(CPU、ROM和RAM)有重要影响,因为必须为每次同时访问保留资源(例如Rx和Tx状态机、用于处理N-PCI数据的变量等)。

为了允许用户选择哪些I-PDUs可以同时接收(或发送),每个N-SDU标识符将通过配置的CanTp“连接通道”在内部路由。由于“连接通道”不能从外部访问,因此传输N-SDU所需的所有信息都将链接到N-SDU标识符(例如“连接通道”的编号、超时、寻址格式等)。

根据Meta Data配置,N-SDU可以作为由N_AI定义的特定连接,也可以作为通用连接,其中N_TA, N_SAN_AE在运行时变化,而N_TAtypeMType和寻址格式则是静态定义的。

CanTp的交互

CanTp的上层接口为PduR模块提供全局访问,以发送和接收数据。这种访问是通过CAN N-SDU标识符(CAN NSduId)实现的。CAN NSduId是一个常量数据结构,其包含了描述CAN N-SDU的属性。每个CAN N-SDU特定的数据结构可以包含如下属性:N-SDU类型(Tx或Rx),其寻址格式,报文的L-SDU标识符或其他对实现有用的属性。
CanTp、PduR和CanIf模块之间的交互图如下。
在这里插入图片描述

CanTp的处理模式

AUTOSAR通信栈支持轮询和事件触发模式。因此,每个通信层都可以从其下层接收信息,并通过不同的机制向其上层传播信息。对于CAN传输层(CanTp),只支持事件触发模式。

CanTp的数据一致性

为了优化通信栈,AUTOSAR限制了CAN T传输层的缓冲能力。因此,CanTp将N-SDU有效载荷直接从上层(DCM、COM或PDU路由器——在1:1 TP路由的情况下)复制到CAN driver,反之亦然。因此,为了保证数据的一致性,上层将遵循以下规则:

  • 在发送时,N-SDU数据有效载荷保持不变,从发送请求到收到发送确认。
  • 在接收时,N-SDU数据访问将被锁定,从开始接收到接收指示。

CanTp的静态配置

在运行时,CanTp模块必须具有管理传输连接所需的所有信息。因此,需要静态配置以下属性:

  • CAN N-SDU的数量
  • 每个CAN N-SDU的唯一标识符
  • 每个CAN N-SDU通信方向(Tx或Rx)
  • 每个连接的寻址格式(常规、扩展、混合11位、常规固定或混合29位),另外根据寻址格式的不同:
    • 常规: 无
    • 扩展: N_TA
    • 混合11位: N_AE
    • 常规固定: N_TA, N_SA
    • 混合29位: N_TA, N_SA, N_AE

对于使用带MetaData的N-SDU的通用连接,可以省略静态寻址信息。

  • 每个连接的寻址格式(常规,扩展或混合)与N_TA值(在扩展寻址格式的情况下),或N_AE值(在混合寻址格式的情况下)。
  • 每个CAN N-SDU标识符的关联CAN L-SDU标识符以及用于传输CAN FC N-PDU的CAN L-SDU标识符(在多帧分段会话情况下),
  • 经典CAN帧和CAN FD帧

CanTp的配置可以在编译或post-build期间执行

CanTp使用的PduR服务

CanTp使用PduR的回调函数来复制发送数据、确认发送,开始接收,复制接收数据、指示报文接收。

  • 报文接收指示:PduR_CanTpRxIndication
  • 开始接收:PduR_CanTpStartOfReception
  • 复制接收数据:PduR_CanTpCopyRxData
  • 复制发送数据:PduR_CanTpCopyTxData
  • 确认发送:PduR_CanTpTxConfirmation

CanTp使用的CanIf服务

CanTp使用CanIf的以下服务传输CAN N-PDUs:

  • CanIf_Transmit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值