AUTOSAR CAN 堆栈实施提示
AUTOSAR CAN Stack Implementation Hints
我的任务是使用最新版本的 AUTOSAR (R19-11) 为 CAN 模块创建软件堆栈。我不会使用任何配置工具。
根据我在 AUTOSAR website 上阅读的内容,这些是我必须实现的模块:CAN 驱动程序、接口、状态管理器、PDU 路由器和 AUTOSAR COM。由于我不打算使用超过 8 字节数据的帧,因此我不需要 CAN 传输协议模块。
当将PDU向下发送到堆栈时,一些模块将元数据添加到这些接收到的PDU(在本地称为SDU),然后将它们发送到下一层。我读到我们必须为这些 PDU 分配唯一的 ID。此外,我们必须有一个路由 table(在 PDU 路由器内部),它将用于根据每个 PDU 的 ID 确定目的地。
我的问题是:
- 如何分配 ID?
- ID 应该是什么样的?
- 对于给定的 CAN 帧,我是否必须根据 PDU 在网络中的当前位置分配不同的 ID?
堆? (COM、状态管理器、接口或驱动程序)
- 知道用户(应用层)可以定义任意数量的 CAN 帧,那么
PDU 路由器事先知道某个 PDU 的 ID 是什么以及它的目的地是什么?
- 从应用层开始,消息传输(或接收)是什么样的
在 CAN 驱动程序模块结束?
- AUTOSAR 将添加哪些元数据(或 PCI - 协议控制信息)
正在接收 PDU 的模块?
例如:应用发送数据0xAA。 COM 收到这个 PDU 并添加一个特定的 PCI,然后发送
它向下到 PDU 路由器等。
SDU + PCI = PDU 在每个阶段会是什么样子?
实际上,AUTOSAR 中配置工具的优势在于,您不必一直fiddle手动编写代码及其配置。
嗯,不实施 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 章。 3.4 COM 堆栈配置。
它包含句柄 ID 的概念、它们的定义、分配、甚至命名约定和一些用例。
我的任务是使用最新版本的 AUTOSAR (R19-11) 为 CAN 模块创建软件堆栈。我不会使用任何配置工具。 根据我在 AUTOSAR website 上阅读的内容,这些是我必须实现的模块:CAN 驱动程序、接口、状态管理器、PDU 路由器和 AUTOSAR COM。由于我不打算使用超过 8 字节数据的帧,因此我不需要 CAN 传输协议模块。
当将PDU向下发送到堆栈时,一些模块将元数据添加到这些接收到的PDU(在本地称为SDU),然后将它们发送到下一层。我读到我们必须为这些 PDU 分配唯一的 ID。此外,我们必须有一个路由 table(在 PDU 路由器内部),它将用于根据每个 PDU 的 ID 确定目的地。
我的问题是:
- 如何分配 ID?
- ID 应该是什么样的?
- 对于给定的 CAN 帧,我是否必须根据 PDU 在网络中的当前位置分配不同的 ID? 堆? (COM、状态管理器、接口或驱动程序)
- 知道用户(应用层)可以定义任意数量的 CAN 帧,那么 PDU 路由器事先知道某个 PDU 的 ID 是什么以及它的目的地是什么?
- 从应用层开始,消息传输(或接收)是什么样的 在 CAN 驱动程序模块结束?
- AUTOSAR 将添加哪些元数据(或 PCI - 协议控制信息) 正在接收 PDU 的模块? 例如:应用发送数据0xAA。 COM 收到这个 PDU 并添加一个特定的 PCI,然后发送 它向下到 PDU 路由器等。 SDU + PCI = PDU 在每个阶段会是什么样子?
实际上,AUTOSAR 中配置工具的优势在于,您不必一直fiddle手动编写代码及其配置。
嗯,不实施 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 章。 3.4 COM 堆栈配置。
它包含句柄 ID 的概念、它们的定义、分配、甚至命名约定和一些用例。