0

我的任务是使用最新版本的 AUTOSAR (R19-11) 为 CAN 模块创建软件堆栈。我不会使用任何配置工具。根据我在 AUTOSAR网站上阅读的内容,这些是我必须实现的模块:CAN 驱动程序、接口、状态管理器、PDU 路由器和 AUTOSAR COM。因为我不打算使用超过 8 字节数据的帧,所以我不需要 CAN 传输协议模块。

在将 PDU 向下发送到堆栈时,一些模块会将元数据添加到这些接收到的 PDU(在本地称为 SDU),然后将它们发送到下一层。我读过我们必须为这些 PDU 分配唯一的 ID。此外,我们必须有一个路由表(在 PDU 路由器内部),用于根据每个 PDU 的 ID 确定其目的地。

我的问题是:

  • ID是如何分配的?
  • 身份证会是什么样子?
  • 对于给定的 CAN 帧,我是否必须根据 PDU 在堆栈中的当前位置分配不同的 ID?(COM、状态管理器、接口或驱动程序)
  • 知道用户(应用层)可以定义任意数量的 CAN 帧,PDU 路由器如何事先知道某个 PDU 的 ID 以及它的目的地是什么?
  • 从应用层开始到 CAN 驱动模块结束的消息传输(或接收)是什么样的?
  • 接收 PDU 的模块将添加哪些元数据(或 PCI - 协议控制信息,在 AUTOSAR 中称为)?例如:应用程序发送数据 0xAA。COM 接收到这个 PDU 并添加一个特定的 PCI,然后将其发送到 PDU 路由器等等。SDU + PCI = PDU 在每个阶段会是什么样子?
4

1 回答 1

1

实际上,AUTOSAR 中配置工具的优势在于,您不必一直在代码及其配置中手忙脚乱。

那么,不实施 CanTp 也意味着您没有客户诊断 (UDS)?顺便说一句,CAN-FD 的帧最多为 64 字节。

PduIdType 的定义在AUTOSAR_SWS_CommunicationStackTypes Ch. 8.1.1。SWS_COMTYPE_00005, SWS_COMTYPE_00006, SWS_COMTYPE_00007, SWS_COMTYPE_00014.

简而言之,它们是无符号整数,从零开始且连续,以便用作模块配置的配置索引。它们是为每个 BSW 模块创建的,所以你有一组 CanIf-PduIds、PduR-PduIds、IpduM-PduIds、Com-PduIds、SecOC-PduIds,它们也可以在 Rx 和 Tx 之间拆分(所以一组RxPduIds 从 0 开始,一组 TxPduIds 也从 0 开始)。因此,CanFrames PDU 可以在 CanIf、PduR、Com 等中具有不同的 PDU-ID,并且多路复用的帧被拆分为单独的 PDU,每个多路复用器具有不同的 PduId。

另一个要阅读的章节是AUTOSAR_TPS_EcuConfiguration Ch。3.4 COM-Stack 配置。

它包含 Handle-ID 的概念、它们的定义、分配,甚至命名约定和一些用例。

于 2020-04-17T02:43:00.950 回答