当前位置: 首页 > news >正文

德州做网站建设的公司网站设计 北京店

德州做网站建设的公司,网站设计 北京店,北大青鸟学费一览表,下载微信小程序app文章包含了AUTOSAR基础软件#xff08;BSW#xff09;中PduR模块相关的内容详解。本文从AUTOSAR规范解析#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解PduR这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的… 文章包含了AUTOSAR基础软件BSW中PduR模块相关的内容详解。本文从AUTOSAR规范解析ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解PduR这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生成的与AUTOSAR规范之间可能会有些许的出入但总体的功能要点与处理流程都应该是一致的。 PduR模块的位置处于通信栈的中心位置用于上层COM或者DCM等内部模块与下层通信接口模块CanIf、LinIf或者传输协议模块LinTpCanTp之间的报文转发。具体的转发规则是根据DBC中相关网络节点的报文收发关系与导入时选择的报文类型自动生成路由表来的。PduR不仅可以路由上下层之间的报文还可以在下层的通信与传输模块之间进行路由网关模式。底层之间的报文转发对于上层模块与应用层软件可以做到完全透明PduR可以独立完成转发不需要上层模块与应用软件的参与。 目录 AUTOSAR规范解析 概述 PduR模块结构 缩略语与概念 与其他模块的依赖 功能说明 I-PDU处理 时序图 CanIf模块I-PDU接收 CanTp模块I-PDU接收  CanIf模块I-PDU发送  CanTp模块I-PDU发送  两个CanIf之间的网关路由  两个CanIf之间的网关路由并且COM也收到报文 ISOLAR-AB配置  PduR PduRGeneral PduRBswModules PduRRountingTabls 代码解析  动态配置代码 集成代码  静态代码 AUTOSAR规范解析 概述 PduR模块提供I-PDU(交互层协议数据单元)的路由服务PduR模块从上层模块接收到I-PDU之后根据PDU ID查找已经定义好的静态路由表获得其目标地址之后定向并转发到下层模块。路由是一个动词这里可以狭义的理解为一个转发的过程。而I-PDU是交互层协议单元I-PDU由数据缓冲区、长度和ID组成是PduR路由的数据单元。PduR涉及使用的模块按类型分类包括 Communication interface modules通信接口模块这些模块的接口一般使用Provider:Up或者Provider:Lo作为接口名称一部分例如ComIPduM LinIf CanIf,CanNmFrIf和FrNm。Transport Protocol modules传输协议模块这些模块的接口一般使用Provider:UpTp或者Provider:LoTp作为接口名称一部分例如J1939Tp, LinTp (part of LinIf), CanTp, FrTp, COM, DCM。 正如前文所说I-PDU的路由是基于静态定义的I-PDU ID进行的并不支持运行时的动态路由则相关模块对于PduR的位置是确定的我们分为上或者下。例如DLT、DCM、COM、IpduM为上而Canlf、Frlf、LinTp、lpduM、CanNm、FrNm则为下。lpduM被同时列为一个上模块和一个下模块是因为它有两个不同的角色(上用作与COM模块进行通信下用作与通信接口模块之间的通信)。当IpduM调用PduR模块来传输或者接收复用的I-PDU时或者当它被通过触发来提供传输数据时, IpduM都被认为是一个上层模块。IpduM调用PduR模块,提出传输确认或接收指示上层(例如COM)则被视为下层模块。 PduR模块的上下层模块关系并不是固定的下面列出常见的上下层关系 上为AUTOSAR Diagnostic Communication ManagerDCM下则为Transport Protocol modules传输层协议例如CanTP。上为AUTOSAR COM模块下为Communication Interface modules通信接口模块例如CanIf或者Transport Protocol modules传输层协议或者I-PDU MultiplexerIpduM。上为I-PDU Multiplexer下为Communication Interface modules。 PduR在AUTOSAR通信栈中位于中心的部位下图展示了它的位置。 下图更详细的包含了PduR在整个协议栈与个个模块之间的关系。 PduR模块结构 PduR模块是AUTOSAR基本软件的一部分并且是强制实例化在每一个AUTOSAR的基础软件中。PduR的详细模块结构如下图所示。 可以看出PduR模块主要由两部分组成 PDU Router routing paths路由表此项属于静态配置由工具自动生成或用户配置描述I-PDU的路由属性包含源地址路由到目的地址等信息。PDU Router Engine路由引擎根据PduR路由表执行路由操作的实际代码这里如果多帧传输CANTP使用时TP的PDU很大此时需要拆分成很多I-PDU进行传输在PduR收到全部的TP PDU之后才开始转发PDU此时会用到buffer。路由引擎包含的功能有 将I-PDU从源路由到目的地。将源I-PDU的ID转换为目标ID并将操作转化为具体模块的操作。(例如PduR_Transmit转换为 Canlf_TransmitPduR _CanlfTxConfirmation转换为Com_TxConfirmation)。 缩略语与概念 Upper Layer Modules (Up)PduR上方的模块。此层通常包括COM和诊断通信管理器(DCM)应在PduR中配置。Lower Layer Modules (Lo)PduR下面的模块。此层可包括CAN、LIN、FlexRay、以太网通信接口模块和相应的TP模块。所使用的模块应在PduR中配置。PDU Router将I-PDU从一个模块传输到另一个模块的模块。PduR模块可用于网关操作和内部路由目的。gatewaying-on-the-fly网关功能在接收到所有数据之前在两个TP模块之间开始数据转发(达到指定阈值时)的路由。如果在两个接口之间传输大量数据则希望在从源网络接收到所有数据之前能够在目标网络上开始传输。这样可以节省内存和时间。multicast operationPDU同时传输到一组接收端即1:n路由。data provision为接口模块提供数据。 直接数据提供在传输请求时直接提供要传输的数据。目标通信接口可以以两种方式工作要么直接复制数据要么延迟复制到触发传输。触发发送数据提供在发送请求中不提供要发送的数据但将通过回调函数由上层接口模块提供。last-is-best buffering一种缓冲策略其中最新的值会覆盖旧值。FIFO buffering缓冲区概念采用先进先出的策略。I-PDU IDPDU的ID。I-PDU交互层PDU。I-PDU由数据(缓冲区)、长度和I-PDU ID组成。PduR主要路由I-PDU。N-PDU网络层PDU。传输协议模块将分割I-PDU到N-PDU。L-PDU数据链路层PDU。一个或多个I-PDU(或者N-PDU)被打包成一个L-PDU。L-PDU的格式依托于某个专用总线(例如CAN帧)。SF单帧传输协议术语。FF头帧传输协议术语。CF连续帧传输协议术语。PDUProtocol Data Unit协议数据单元。BSWBasic Software基础软件。SrcLo作为I-PDU源的下层通信接口模块。SrcLo始终是一个。DstLo作为I-PDU目的地的下层通信接口模块。DstLo可以由一个到多个。SrcLoTp作为I-PDU源的下层传输协议模块。 SrcLoTp始终是一个。DstLoTp作为I-PDU目的地的低层传输协议模块。DstLoTp可以由一个到多个。Lo底层通信接口模块。Up上层模块。LoTp底层传输协议模块。 与其他模块的依赖 PduR模块依赖于所使用的通信硬件抽象层模块和所使用的通信服务层模块的API和功能。基本上PDU路由器模块所需的API函数分别由一下几类模块提供 通信接口模块 Lo_Transmit (e.g. CanIf_Transmit, FrIf_Transmit, LinIf_Transmit) Lo_CancelTransmit (e.g. FrIf_CancelTransmit) 传输协议模块 LoTp_Transmit (e.g. CanTp_Transmit, FrTp_Transmit, LinTp_Transmit) LoTp_CancelTransmit (e.g. CanTp_CancelTransmit, FrTp_CancelTransmit) LoTp_CancelReceive (e.g. CanTp_CancelReceive, FrTp_CancelReceive) 上层使用传输协议模块的模块 Up_StartOfReception (e.g. Dcm_StartOfReception) Up_CopyRxData (e.g. Dcm_CopyRxData) Up_CopyTxData (e.g. Dcm_CopyTxData) Up_TpRxIndication (e.g. Dcm_TpRxIndication) Up_TpTxConfirmation (e.g. Dcm_TpTxConfirmation) 上层使用通信接口模块的模块 Up_RxIndication (e.g. Com_RxIndication) Up_TxConfirmation (e.g. Com_TxConfirmation) Up_TriggerTransmit (e.g. Com_TriggerTransmit) 功能说明 PduR模块是一个I-PDU传输单元放置在通信接口模块和传输协议模块(下层模块)和COM和DCM(上层模块)中间的模块。从ECU角度它可以执行一下三个类别的操作 接收I-PDU到局部模块从一个下层模块路由到其他一个或多个上层模块。从局部模块传输上层请求传输I-PDU到一个或多个下层。网关功能 从接口模块接收I-PDU并经由相同或其他通信接口模块立即发送。跟上层模块没有关系。从传输协议模块接收I-PDU并经由相同或其他传输协议模块发送I-PDU。跟上层模块没有关系。 I-PDU处理 I-PDU是由静态的I-PDU ID标识的PduR模块使用静态配置表中的I-PDU ID来确定I-PDU的目标。I-PDU用于PduR的上层模块的数据交换如COM模块和DCM模块。PduR的路由操作并不修改I-PDU它只是将I-PDU转发给目标模块。在TP路由时I-PDU的传递可以在收到完整I-PDU之前开始即“动态网关”。而对于网络管理数据交换,可以绕过PduR模块实现。 I-PDU ID可以在路由表容器中配置该容器还包含了是否包含处理API。这将允许在接收I-PDU ID 的每个模块中高效实现查找表(例如PduR模块的配置包含 PduRCan_lfTxConfirmation的I-PDU ID)。 每个处理I-PDU并为I-PDU提供API的BSW模块必须包含I-PDU ID列表,这意味着每个被调用的模块将有I-PDU的查询表。COM模块调用PduR_ComTransmit (使用PduR模块列出的I-PDU IDPduR模块将调用CanIf_Transmit(使用CanIf模块配置列出的I-PDU ID) , CanIf将调用PduR_CanIfTxConfirmation(使用PduR模块配置列出的I-PDU ID)和PduR模块将调用Com_TxConfirmation(使用COM模块配置列出的I-PDU ID)。如下图所示。 PduR模块通过源模块提供的I-PDU ID(位于PduR配置中)和目标模块I-PDU ID(位于被调用的目标模块配置中的组合唯一的标识路由路径。PduR模块应根据I-PDU ID将使用目标模块提供的API并传入转换后的ID。比如COM模块将I-PDU传输给CanIf和LinIf,首先调用PduR_comtransmissionPduR模块将源IPDU ID(PDUR模块配置)转换为I-PDU ID (LinIf模块配置)和I-PDU ID(CanIf模块配置)。从COM模块接收到的PduInfoType值被复制到CanIf和LinIf模块,而不做任何更改。 如果一个传输请求中有多个下层目的模块(1:n, n1)则所有这些模块必须是类似CanIf的通信接口模块或者类似CanTp的传输协议模块而不是它们的混合。I-PDU在通信接口上分为三种传输方式 直接提供数据当上层模块调用PduR_UpTransmit函数时PDU Router模块将调用转发给Lo_Transmit函数数据在调用中由下层通信接口模块复制。触发传输数据下层通信接口模块通过使用I-PDU请求传输PduR_LoTriggerTransmitPduR模块将调用转发给PduR_UpTriggerTransmit数据由上层模块复制。当上层模块调用PduR_UpTransmit函数时PDU Router模块将调用转发给PduR_LoTransmit函数下层模块(通信接口模块)不复制数据。数据稍后将由较低的层使用卢PduR_ TriggerTransmit来获取。 PduR模块支持从一个源总线到一个或多个目的总线的I-PDU网关模式。这种模式与基于本地模块收发相比PduR模块必须同时是接收器和发送器并且在某些情况下还为I-PDU提供缓冲。 网关模式与其他的模式是分开的以便在不需要网关的情况下高效实现PduR模块。以下列表概述了I-PDU网关的功能 I-PDU可从源通信接口模块网关到一个(1:1)或多个目的通信接口模块(1:n I-PDU网关)。 对于每个目的地路由器模块可以针对I-PDU的每个目的地配置不同深度的缓冲多I-PDU则采用FIFO。在将I-PDU网关到n个目标通信接口的同时上层模块也可以接收I-PDU。使用TP传输的I-PDU可网关到一个或多个目的地TP模块其范围如下: 单帧和多帧都可以网关到多个目标TP模块或本地模块(例如DCM)。由多个N-PDUs传输的I-PDU可以“on-the-fly”地网关到目的地这意味着路由到TP模块上的I-PDU开始传输之前PduR模块不需要等待接收到完整的I-PDU。由多个N-PDUs传输的I-PDU可以网关到另一个TP模块或者由本地模块接收而不是两者同时。使用TP模块传输的I-PDUs可以被FIFO缓冲。这适用于SF和多帧的I-PDUs。I-PDU只能在通信接口模块或TP模块之间网关而不是它们的混合。例如不能从Canlf接收I-PDU并将其网关到LinTp。 时序图 PduR的时序图包括I-PDU接收发送以及I-PDU的网关路由。AUTOSAR规范接收与发送两种时序图以CanIfFrlfLinIf以及CanTP这个四个模块为示例进行了介绍。I-PDU网关则以Can到CanCan到FlexRayCAN到LIN一对一的TP模块间以及1对多的TP间网关路由以及单帧从CAN1接收路由到DCM与CAN2最后从J1939Tp到DCM与LIN的多帧路由。 本篇文章就不介绍这么多模块间路由的情况了仅介绍最常见的两种。如果只是用一些基本的功能其实各家工具一般导入DBC文件中之后默认生成的PduR模块的arxml配置已经足够使用了若需要自己定制建议使用脚本处理arxml更快捷准确。 CanIf模块I-PDU接收 CanIf调用PduR层定义的PduR_CanIfRxIndication传递数据到PduR然后PduR再调用Com_RxIndication将数据传递到COM在COM将数据Copy一下完成数据传递。 CanTp模块I-PDU接收  下面的例子介绍的是CanTp模块到DCM模块之间的诊断协议传输诊断的传输协议将报文分为单帧和多帧。下面的时序图突出多帧传输的数据可以多次传输最终一个接收确认即可。 CanIf模块I-PDU发送  下图是示例由COM发起最后CanIf模块会通过PduR回馈发送确认信息。 CanTp模块I-PDU发送  下图显示了使用传输协议API将I-PDU从DCM模块传输到CanTp模块。可以看到具体的传输开始由CanTp模块控制DCM逐步将数据一次次拷贝到CanTp。 两个CanIf之间的网关路由  下面的例子发生在两个CAN总线间的路由例如板卡上有两路CANCAN1接收数据此时传到PduRPduR直接调用CAN2的If层函数发出去然后CAN2再向PduR回复一个发送好了至此完成一次网关转发。 两个CanIf之间的网关路由并且COM也收到报文 下图显示了如何将I-PDU从CAN1网关到CAN2并由COM模块在本地接收。 ISOLAR-AB配置  PduR PduRGeneral 这是PduR模块的一些通用配置容器下面介绍一些比较难以理解的配置项 PduRMetaDataSupport启用MetaData处理支持。MetaData的大小由全局PDU定义中的配置参数MetaDataLength定义。此特性可用于高效的CAN to CAN路由其中MetaData包含CANID。PduRZeroCostOperation一旦无法实现0开销上下层模块一一对应将会上报错误。PduRFifoTxBufferSupport配置参数使能或失能PduR支持FIFO作为PDU发送缓冲区。当PDUR_GATEWAY_OPERATION设置为disabled时该参数必须设置为disabled。PduRIFGatewayOperation配置参数使能或失能从接口模块到下层接口模块的PDU Router IF Gateway功能。如果启用了PDUR_ZERO_CoST_OPERATION则必须禁用此参数。PduRMemorySize为PduR缓冲区保留的内存大小。仅用于网关操作。PduRMinimumRoutingLoModule用于最小路由的下层模块。如果PDUR_ZERO_COST_OPERATION被禁用则使用该参数否则不得使用。PduRMinimumRoutingUpRxPduId用于到下层的PDU Router接口PDUR_MINIMUM_ROUTING指定的最小路由LO模块的接收PDU标识符。如果PDUR_ZERO_COST_OPERATION被禁用则使用该参数否则不得使用。PduRSbTxBufferSupport配置参数使能或失能PduR支持单个缓冲区作为PDU发送缓冲区。如果PDUR_GATEWAY_OPERATION被禁用该参数必须被禁用。SbSignal buff) PduRBswModules 该容器包含与PduR有交集的Bsw模块。这里默认生成了COM与DCM两个上层以及CanIf和CanTp两个下层模块如下图所示。 下面我们着重介绍一下PduRBswModules模块中涉及的配置项 PduRCommunicationInterface指定这个模块是否支持通信接口APIs。PduRLowerModule是否是PduR的下层模块如果配置成为真则PduR需要实现 PduR_module nameRxIndication供此模块使用。PduR也会调用module name_Transmit。PduRRetransmission定义TP是否使用重传功能如果传输协议支持重传功能但参数设置为False则传输协议不会重传。PduRTriggertransmit触发传输功能假设设置为TRUE底层模块既可以调用下层也可以调用上层的TriggerTransmit功能。PduRTxConfirmation发送确认这个接口一般开着。PduRUseTag开了这个功能假如COM使用则使用PduR_ComCancelTransmit。使用Com替换下面两个接口的up。 PduR_UpCancelReceivePduR_UpCancelTransmitPduRBswModuleRefBsw模块的引用。 PduRRountingTabls 这个容器包含路由表信息下图为自动生成的六个路由条目他们的名称由报文名称网络名称源2目标模块构成。 点开路径可以看到自动生成的CanIf2PduR与PduR2Com的引用这些都是根据DBC自动生成的。 代码解析  动态配置代码 PduR生成的动态配置代码如下图所示。 我们针对一些常用的进行说明 PduR_PBcfg.c包含了PduR_comToLo、PduR_DcmToLo与PduR_CanIfRxToUp的结构体定义结构体包含了路由ID的对应关系。还包含了路由表等配置信息。 /* *********************************************************************************************************************** * * Product Info * Isolar version: ISOLAR-AB 4.0.2 * Product release version: RTA-BSW 3.1.0 * *********************************************************************************************************************** *//*VersionHead* This Configuration File is generated using versions (automatically filled in) as listed below.** $Generator__: PduR / AR42.4.0.1 Module Package Version* $Editor_____: 9.0 Tool Version* $Model______: 2.3.0.4 ECU Parameter Definition Version*/VersionHead*/#include PduR_PBcfg.h #include PduR_UpIf.h#include PduR_LoIf.h #include PduR_LoTp.h#include PduR_UpTp.h#include PduR_Mc.h #include PduR_Gw.h#include PduR_Gw_Cfg.h /* Generating PbCfg_c::PduR_UpIfToLo_PBcfg_c::upIf_To_Lo *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined(PDUR_CONFIG_SINGLE_IFTX_LO) #define PduR_comToLo NULL_PTR #else static CONST(PduR_RT_UpToLo,PDUR_CONST ) PduR_comToLo[] {{ CanIfConf_CanIfTxPduCfg_DV_Test_Message_1_Can_Network_CANNODE_ECAN , (PduR_loTransmitFP)PduR_RF_CanIf_Transmit, (PduR_loCancelTransmitFP)PduR_IH_CancelTransmit }, /*DV_Test_Message_1_Can_Network_CANNODE_ECAN_Com2PduR*/{ CanIfConf_CanIfTxPduCfg_Tx_Test_Message_01_Can_Network_CANNODE_ECAN , (PduR_loTransmitFP)PduR_RF_CanIf_Transmit, (PduR_loCancelTransmitFP)PduR_IH_CancelTransmit } /*Tx_Test_Message_01_Can_Network_CANNODE_ECAN_Com2PduR*/}; #endif /* PDUR_CONFIG_SINGLE_IFTX_LO *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_UpTpToLo_PBcfg_c::upTp_To_Lo *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined(PDUR_CONFIG_SINGLE_TPTX_LO) #define PduR_DcmToLo NULL_PTR #else static CONST(PduR_RT_UpToLo,PDUR_CONST ) PduR_DcmToLo[] {{ CanTpConf_CanTpTxNSdu_CanTpTxNSdu, (PduR_loTransmitFP)PduR_RF_CanTp_Transmit, (PduR_loCancelTransmitFP)PduR_RF_CanTp_CancelTransmit } /*Diag_VCU_Resp_Can_Network_CANNODE_ECAN_Phys_Dcm2PduR*/}; #endif /* PDUR_CONFIG_SINGLE_IFTX_LO *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_LoIfRxToUp_PBcfg_c::loIfRx_To_Up *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined(PDUR_CONFIG_SINGLE_IFRX) #define PduR_CanIfRxToUp NULL_PTR #else static CONST( PduR_RT_LoIfRxToUp, PDUR_CONST ) PduR_CanIfRxToUp[] { { ComConf_ComIPdu_Rx_Test_Message_01_Can_Network_CANNODE_ECAN, (PduR_upIfRxIndicationFP) PduR_RF_Com_RxIndication } /*Rx_Test_Message_01_Can_Network_CANNODE_ECAN_CanIf2PduR*/}; #endif /* PDUR_CONFIG_SINGLE_IFRX *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_LoIfDTxToUp_PBcfg_c::loIf_DTxToUp *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined(PDUR_CONFIG_SINGLE_IFTX_UP ) #define PduR_CanIfTxToUp NULL_PTR #elsestatic CONST(PduR_RT_LoIfTxToUp, PDUR_CONST ) PduR_CanIfTxToUp [] { { ComConf_ComIPdu_DV_Test_Message_1_Can_Network_CANNODE_ECAN , (PduR_upIfTxConfirmationFP) PduR_RF_Com_TxConfirmation} , /* Index: 0 SrcPdu: DV_Test_Message_1_Can_Network_CANNODE_ECAN_Com2PduR DestPdu: DV_Test_Message_1_Can_Network_CANNODE_ECAN_PduR2CanIf*/ { ComConf_ComIPdu_Tx_Test_Message_01_Can_Network_CANNODE_ECAN , (PduR_upIfTxConfirmationFP) PduR_RF_Com_TxConfirmation} /* Index: 1 SrcPdu: Tx_Test_Message_01_Can_Network_CANNODE_ECAN_Com2PduR DestPdu: Tx_Test_Message_01_Can_Network_CANNODE_ECAN_PduR2CanIf*/ }; #endif /* PDUR_CONFIG_SINGLE_IFTX_UP *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_LoIfTTxToUp_PBcfg_c::loIf_TTxToUp *//* Generating PbCfg_c::PduR_LoTpRxToUp_PBcfg_c::loTpRx_To_Up *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined ( PDUR_CONFIG_SINGLE_TPRX ) #define PduR_CanTpRxToUp NULL_PTR #else static CONST( PduR_RT_LoTpRxToUp, PDUR_CONST ) PduR_CanTpRxToUp[] {{DcmConf_DcmDslProtocolRx_Diag_ECAN_ReqFunc_Can_Network_CANNODE_ECAN_PduR2Dcm, (PduR_upTpStartOfReceptionFP) PduR_RF_Dcm_StartOfReception,(PduR_upTpProvideRxBufFP) PduR_RF_Dcm_CopyRxData,(PduR_upTpRxIndicationFP) PduR_RF_Dcm_TpRxIndication }, /*Diag_ECAN_ReqFunc_Can_Network_CANNODE_ECAN_CanTp2PduR*/{DcmConf_DcmDslProtocolRx_Diag_VCU_ReqPhsy_Can_Network_CANNODE_ECAN_PduR2Dcm, (PduR_upTpStartOfReceptionFP) PduR_RF_Dcm_StartOfReception,(PduR_upTpProvideRxBufFP) PduR_RF_Dcm_CopyRxData,(PduR_upTpRxIndicationFP) PduR_RF_Dcm_TpRxIndication } /*Diag_VCU_ReqPhsy_Can_Network_CANNODE_ECAN_CanTp2PduR*/ }; #endif /* PDUR_CONFIG_SINGLE_TPRX *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_LoTpTxToUp_PBcfg_c::loTpTx_To_Up *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h #if defined(PDUR_CONFIG_SINGLE_TPTX_UP ) #define PduR_CanTpTxToUp NULL_PTR #else static CONST(PduR_RT_LoTpTxToUp, PDUR_CONST ) PduR_CanTpTxToUp [] { { DcmConf_DcmDslProtocolTx_Diag_VCU_Resp_Can_Network_CANNODE_ECAN_Phys_Dcm2PduR, (PduR_upTpProvideTxBufFP) PduR_RF_Dcm_CopyTxData,(PduR_upTpTxConfirmationFP) PduR_RF_Dcm_TpTxConfirmation } /*Index: 0 Diag_VCU_Resp_Can_Network_CANNODE_ECAN_Phys_Dcm2PduR*/ }; #endif /* PDUR_CONFIG_SINGLE_TPTX_UP *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* Generating PbCfg_c::PduR_Mc_ComToLo_PBcfg_c::mcComToLow */ /* Generating PbCfg_c::PduR_Mc_DcmToLo_PBcfg_c::mcDcmToLow */ /* Generating PbCfg_c::PduR_Mc_IpduMToLo_PBcfg_c::MC_IpduMUp_Lo */ /* Generating PbCfg_c::PduR_Mc_TpTxToUp_PBcfg_c::xpandMcTpTxToUp */ /* Generating PbCfg_c::PduR_Cdd_PBcfg_c::Xpand_Cdd_body */ /* Generating PbCfg_c::PduR_Mc_GwToLo_PBcfg_c::DisplayPduR_mcGwToLo */ /* Generating PbCfg_c::PduR_GwIfTx_PBcfg_c::display_GwIfTx */ /* Generating PbCfg_c::PduR_GwIf_PBcfg_c::display_GwIf */ /* Generating PbCfg_c::PduR_Gw_IfBuf_PBcfg_c::PduR_gw_Buf_If_structure */ /* Generating PbCfg_c::PduR_Rpg_PBcfg_c::display_PduR_RPG*/#if defined(PDUR_MODE_DEPENDENT_ROUTING) (PDUR_MODE_DEPENDENT_ROUTING ! 0)/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.hstatic CONST (PduR_RPGInfoType, PDUR_CONST) PduR_RPGInfo[] {{NULL_PTR,PDUR_RPGID_NULL,0}, /* PDUR_RPGID_NULL */};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_8 #include PduR_MemMap.h /* Routing enable disbale flag to control routing. */ CONST(boolean, PDUR_CONST) PduR_RPG_EnRouting[] {TRUE, /*PDUR_RPGID_NULL*/};/* ------------------------------------------------------------------------ */ /* End section for constants */ #define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_8 #include PduR_MemMap.h#endif /* #if defined(PDUR_MODE_DEPENDENT_ROUTING) (PDUR_MODE_DEPENDENT_ROUTING ! 0) *//* Generating PbCfg_c::PduR_Gw_TpBuf_PBcfg_c::PduR_gw_Buf_TP_structure*//* Generating PbCfg_c::PduR_GwTp_PBcfg_c::display_GwTp *//* Generating PbCfg_c::PduR_PbConfigType_PBcfg_c::PduR_BswLoCfg *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h static CONST( PduR_LoTpConfig, PDUR_CONST ) PduR_LoTpCfg[] {{PduR_CanTpRxToUp, /* CanTp */PduR_CanTpTxToUp, /* CanTp */2, /* CanTp RxToUp Number Of Entries*/1 /* CanTp TxToUp Number Of Entries*/}};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h static CONST( PduR_LoIfDConfig, PDUR_CONST ) PduR_LoIfDCfg[] {{PduR_CanIfRxToUp, /* CanIf */PduR_CanIfTxToUp, /* CanIf */1, /* CanIf RxToUp NrEntries*/2 /* CanIf TxToUp NrEntries*/}};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h /* Generating PbCfg_c::PduR_PbConfigType_PBcfg_c::PduR_BswUpCfg *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h static CONST( PduR_UpConfig, PDUR_CONST ) PduR_UpTpCfg[] {{PduR_DcmToLo, /* Dcm */NULL_PTR, /* mcDcmToLo */1 /* Dcm */}};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h static CONST( PduR_UpConfig, PDUR_CONST ) PduR_UpIfCfg[] {{PduR_comToLo, /* Com */NULL_PTR, /* mcComToLo */2 /* Com */}};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h /* Generating PbCfg_c::PduR_Cdd_PBcfg_c::PduR_CddCfg */ /* Generating PbCfg_c::PduR_PbConfigType_PBcfg_c::PduR_BswUpToLoRxCfg *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.hCONST( PduR_RPTablesType, PDUR_CONST ) PduR_RoutingPathTables {(P2CONST( PduR_loTransmitFuncType, AUTOMATIC, PDUR_CONST )) PduR_loTransmitTable,(P2CONST( PduR_loCancelReceiveFuncType, AUTOMATIC, PDUR_CONST)) PduR_loCancelRxTable,(P2CONST( PduR_loCancelTransmitFuncType, AUTOMATIC, PDUR_CONST )) PduR_loCancelTransmitTable,(P2CONST( PduR_upIfRxIndicationFuncType, AUTOMATIC, PDUR_CONST )) PduR_upIfRxIndicationTable,(P2CONST( PduR_upIfTxConfirmationFuncType, AUTOMATIC, PDUR_CONST )) PduR_upIfTxConfirmationTable,(P2CONST( PduR_upTpCopyRxDataFuncType, AUTOMATIC, PDUR_CONST )) PduR_upTpCopyRxDataTable,(P2CONST( PduR_upTpStartOfReceptionFuncType, AUTOMATIC, PDUR_CONST )) PduR_upTpStartOfReceptionTable,(P2CONST( PduR_upTpRxIndicationFuncType, AUTOMATIC, PDUR_CONST )) PduR_upTpRxIndicationTable,(P2CONST( PduR_upTpCopyTxDataFuncType, AUTOMATIC, PDUR_CONST )) PduR_upTpCopyTxDataTable,(P2CONST( PduR_upTpTxConfirmationFuncType, AUTOMATIC, PDUR_CONST )) PduR_upTpTxConfirmationTable,(P2CONST( PduR_upIfTriggerTxFuncType, AUTOMATIC, PDUR_CONST )) PduR_upIfTriggerTxTable};/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h/*These structures are generated by the code generator tool. Respective modules function names are generatedonly if it is present in the PduR_PbCfg.c file in any one of the entries. *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.hCONST(PduR_loTransmitFuncType, PDUR_CONST) PduR_loTransmitTable[] {{PduR_RF_CanIf_Transmit_Func},{PduR_RF_CanTp_Transmit_Func} };CONST(PduR_loCancelReceiveFuncType, PDUR_CONST) PduR_loCancelRxTable[] {{NULL_PTR} };CONST(PduR_loCancelTransmitFuncType, PDUR_CONST) PduR_loCancelTransmitTable[] {{PduR_IH_CancelTransmit_Func},{PduR_RF_CanTp_CancelTransmit_Func} };CONST(PduR_upIfRxIndicationFuncType, PDUR_CONST) PduR_upIfRxIndicationTable[] {{PduR_RF_Com_RxIndication_Func} };CONST(PduR_upIfTxConfirmationFuncType, PDUR_CONST) PduR_upIfTxConfirmationTable[] {{PduR_RF_Com_TxConfirmation_Func} };CONST(PduR_upIfTriggerTxFuncType, PDUR_CONST) PduR_upIfTriggerTxTable[] {{NULL_PTR} };CONST(PduR_upTpCopyRxDataFuncType, PDUR_CONST) PduR_upTpCopyRxDataTable[] {{PduR_RF_Dcm_CopyRxData_Func} };CONST(PduR_upTpStartOfReceptionFuncType, PDUR_CONST) PduR_upTpStartOfReceptionTable[] {{PduR_RF_Dcm_StartOfReception_Func} };CONST(PduR_upTpRxIndicationFuncType, PDUR_CONST) PduR_upTpRxIndicationTable[] {{PduR_RF_Dcm_TpRxIndication_Func} };CONST(PduR_upTpCopyTxDataFuncType, PDUR_CONST) PduR_upTpCopyTxDataTable[] {{PduR_RF_Dcm_CopyTxData_Func} };CONST(PduR_upTpTxConfirmationFuncType, PDUR_CONST) PduR_upTpTxConfirmationTable[] {{PduR_RF_Dcm_TpTxConfirmation_Func} };/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h /* Generating PbCfg_c::PduR_PbConfigType_PBcfg_c::pdur_PBConfigType *//* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h CONST( PduR_PBConfigType, PDUR_CONST ) PduR_GlobalPBConfig {(P2CONST( PduR_CddConfig, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* PduR_CddCfg */(P2CONST( PduR_LoTpConfig, AUTOMATIC, PDUR_CONST )) PduR_LoTpCfg, /* Pointer to lowerlayer Tp config structure */(P2CONST( PduR_LoIfDConfig, AUTOMATIC, PDUR_CONST )) PduR_LoIfDCfg, /* Pointer to Direct lowerlayer If config structure */(P2CONST( PduR_LoIfTTConfig, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* PduR_LoIfTTCfg */(P2CONST( PduR_UpConfig, AUTOMATIC, PDUR_CONST )) PduR_UpIfCfg, /* Pointer to Upperlayer If config structure */(P2CONST( PduR_UpConfig, AUTOMATIC, PDUR_CONST )) PduR_UpTpCfg, /* Pointer to Upperlayer Tp config structure */(P2CONST( PduR_MT_UpToLo, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* mcGwToLo */(P2CONST( PduR_MT_LoIfTxToUp, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* McIfRx */(P2CONST( PduR_MT_LoTpTxToUp, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* McTpTx */(P2VAR( PduR_MS_LoTpTxToUp, AUTOMATIC, PDUR_VAR )) NULL_PTR, /* PduR_msTpTxToUp*/(P2CONST( PduR_GT_IfTx, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* gwIfTx */(P2CONST( PduR_GT_If, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* gwIf */(P2CONST( PduR_GT_Tp, AUTOMATIC, PDUR_CONST )) NULL_PTR, /* GwTp */(P2CONST( PduR_RPTablesType, AUTOMATIC, PDUR_CONST )) PduR_RoutingPathTables, /* PduR_RoutingPathTables */ #if defined(PDUR_TPGATEWAY_SUPPORT) (PDUR_TPGATEWAY_SUPPORT ! STD_OFF)(P2CONST(PduR_GwTp_SessionListType, AUTOMATIC, PDUR_CONST )) NULL_PTR, /*PduR_TpSession_Dynamic*/ #endif #if defined(PDUR_MULTICAST_TO_IF_SUPPORT) (PDUR_MULTICAST_TO_IF_SUPPORT ! 0)(P2CONST(PduR_UpIfTxConf_Config, AUTOMATIC, PDUR_CONST)) PduR_UpIfTxConf_ConfigList, #endif #if defined(PDUR_MODE_DEPENDENT_ROUTING) (PDUR_MODE_DEPENDENT_ROUTING ! 0)(P2CONST (PduR_RPGInfoType, AUTOMATIC, PDUR_CONST)) PduR_RPGInfo, /* RoutingPathGroup ConfigInfo */(P2CONST (boolean, AUTOMATIC, PDUR_CONST)) PduR_RPG_EnRouting, /* RoutingControl StatusInfo */(P2VAR (boolean , TYPEDEF , PDUR_VAR)) PduR_RPG_Status, /*RAM status for each RPG*/(PduR_RoutingPathGroupIdType) 0, /* Number of RPGs.*/ #endif(P2CONST (PduR_UpTpToLoTpRxConfig, TYPEDEF, PDUR_CONST)) NULL_PTR, /* Pointer to PduR_UpTpToLoTpRxConfig structure for supporting Cancel Receive API */ 0, /* PDUR_CONFIGURATION_ID */ 0, /*Total no of Gw Tp Routing Path*/ 0, /*Total no of Gw If Routing path*/(PduIdType) 0 /* McTpTx */ };/* ------------------------------------------------------------------------ */ /* Begin section for constants */#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h#define PDUR_START_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h CONST(PduR_ConfigType, PDUR_CONST) PduR_Config {NULL_PTR, /* Void pointer initialised with null pointer as PduR_Config will not be used in case of PDUR_VARIANT_PRE_COMPILE */NULL_PTR };#define PDUR_STOP_SEC_CONFIG_DATA_POSTBUILD_UNSPECIFIED #include PduR_MemMap.h PduR_Upxx.c包含上层接口定义由上层模块调用最终调用PduR_xx_Lo中映射的接口。 /* *********************************************************************************************************************** * * Product Info * Isolar version: ISOLAR-AB 4.0.2 * Product release version: RTA-BSW 3.1.0 * *********************************************************************************************************************** *//*VersionHead* This Configuration File is generated using versions (automatically filled in) as listed below.** $Generator__: PduR / AR42.4.0.1 Module Package Version* $Editor_____: 9.0 Tool Version* $Model______: 2.3.0.4 ECU Parameter Definition Version*/VersionHead*/#include PduR_Prv.h /* Appropriate header files are included to declare the prototypes*/ #include PduR_UpIf.h#if defined(PDUR_MULTICAST_TO_IF_SUPPORT) (PDUR_MULTICAST_TO_IF_SUPPORT 1) #include PduR_Mc.h #endif/* ------------------------------------------------------------------------ */ /* Begin section for code */#define PDUR_START_SEC_CODE #include PduR_MemMap.h/***************************************************************************************************** PduR_ComTransmit* This function is called by the COM to request a transmission.** \param PduIdType id: ID of COM I-PDU to be transmitted.* P2CONST( PduInfoType, TYPEDEF, PDUR_APPL_DATA ) ptr: Pointer to a structure with I-PDU related data that shall be transmitted:* data length and pointer to I-SDU buffer** \retval E_OK Transmit request has been accepted* E_NOT_OK Transmit request has not been accepted** \seealso PDUR202, PDUR206* \usedresources***************************************************************************************************/FUNC( Std_ReturnType, PDUR_CODE ) PduR_ComTransmit( VAR(PduIdType, AUTOMATIC) id, P2CONST( PduInfoType, TYPEDEF, PDUR_APPL_DATA ) ptr) {return ((Std_ReturnType)PduR_rComTransmit( (id) , (ptr))); }/* ------------------------------------------------------------------------ */ /* End section for code */ #define PDUR_STOP_SEC_CODE #include PduR_MemMap.h PduR_Loxx.c包含下层接口定义由下层模块调用最终调用PduR_xx_Up中映射的接口。PduR_CanTp_Lo.h/PduR_CanIf_Lo.h包含根据ID区分的不同配置下的CanIf与CanTp接口实体。 /* *********************************************************************************************************************** * * Product Info * Isolar version: ISOLAR-AB 4.0.2 * Product release version: RTA-BSW 3.1.0 * *********************************************************************************************************************** */#ifndef PDUR_CANIF_LO_H #define PDUR_CANIF_LO_H#include PduR_Prv.h/* Ensure that the function declarations in this header are located in the code section. */ #define PDUR_START_SEC_CODE #include PduR_MemMap.h/* ------------------------------------------------------------------- */#define PduR_CanIf_upIfRxIndicationFuncId(id) (PDUR_CANIF_RXIND_BASE[(id)].upRxIndicationID)/* ------------------------------------------------------------------- */ #if defined(PDUR_CONFIG_SINGLE_IFRX) #define PduR_iCanIfRxIndicationID(id) (id) #define PduR_iCanIfRxIndicationFunc(id) (PDUR_CONFIG_SINGLE_IFRX(RxIndication)) #else #define PduR_iCanIfRxIndicationID(id) (PDUR_CANIF_RXIND_BASE[(id)].upId) #define PduR_iCanIfRxIndicationFunc(id) (PduR_upIfRxIndicationTable[(PDUR_CANIF_RXIND_BASE[(id)].upRxIndicationID)].PduR_upIfRxIndicationFunc)#endif /* PDUR_CONFIG_SINGLE_IFRX */#if defined(PDUR_DEV_ERROR_DETECT) (PDUR_DEV_ERROR_DETECT ! STD_OFF) #define PduR_aCanIfRxIndication(id, ptr) PduR_dCanIfRxIndication((id), (ptr)) #else #define PduR_aCanIfRxIndication(id, ptr) PduR_iCanIfRxIndicationFunc(id)(PduR_iCanIfRxIndicationID(id), (ptr)) #endif /* PDUR_DEV_ERROR_DETECT */#define PduR_rCanIfRxIndication(id, ptr) PduR_aCanIfRxIndication((id), (ptr))/* ------------------------------------------------------------------- */#if defined(PDUR_CONFIG_SINGLE_IFTX_UP) #define PduR_iCanIfTxConfirmationID(id) (id) #define PduR_iCanIfTxConfirmationFunc(id) (PDUR_CONFIG_SINGLE_IFTX_UP(TxConfirmation)) #else #define PduR_iCanIfTxConfirmationID(id) (PDUR_CANIF_TXCONF_BASE[(id)].upId) #define PduR_iCanIfTxConfirmationFunc(id) (PduR_upIfTxConfirmationTable[(PDUR_CANIF_TXCONF_BASE[(id)].upTxConfirmationID)].PduR_upIfTxConfirmationFunc)#endif#if defined(PDUR_DEV_ERROR_DETECT) (PDUR_DEV_ERROR_DETECT ! STD_OFF) #define PduR_aCanIfTxConfirmation(id) PduR_dCanIfTxConfirmation(id) #else #define PduR_aCanIfTxConfirmation(id) PduR_iCanIfTxConfirmationFunc(id)(PduR_iCanIfTxConfirmationID(id)) #endif /* PDUR_DEV_ERROR_DETECT */#define PduR_rCanIfTxConfirmation(id) PduR_aCanIfTxConfirmation(id)/* Invalid PDU id handlers ------------------------------------------ */ #define PDUR_IH_CanIfRx_RxIndication_Func PDUR_DET_API(PduR_invId_IfRxIndication) #define PDUR_IH_CanIfTx_TxConfirmation_Func PDUR_DET_API(PduR_invId_IfTxConfirmation)/* Anything after this point will not be placed in the code section. */ #define PDUR_STOP_SEC_CODE #include PduR_MemMap.h#endif /* PDUR_CANIF_LO_H */ PduR_Com_Up.h/PduR_Com_Up.h包含根据ID区分的不同配置下的DCM与COM接口实体。PduR_CanIf.h/PduR_CanTp.h包含CanIf与CanTp直接使用的接口原型。 /* *********************************************************************************************************************** * * Product Info * Isolar version: ISOLAR-AB 4.0.2 * Product release version: RTA-BSW 3.1.0 * *********************************************************************************************************************** */#ifndef PDUR_CANIF_H #define PDUR_CANIF_H#include PduR.h#include CanIf.h #if (!defined(CANIF_AR_RELEASE_MAJOR_VERSION) || (CANIF_AR_RELEASE_MAJOR_VERSION ! PDUR_AR_RELEASE_MAJOR_VERSION)) #error AUTOSAR major version undefined or mismatched #endif #if (!defined(CANIF_AR_RELEASE_MINOR_VERSION) || (CANIF_AR_RELEASE_MINOR_VERSION ! PDUR_AR_RELEASE_MINOR_VERSION)) #error AUTOSAR minor version undefined or mismatched #endif/* Interface translation layers ------------------------------------- */ #define PduR_RF_CanIf_Transmit_Func CanIf_Transmit/* PduR_CanIfRxIndication */ extern FUNC( void, PDUR_CODE ) PduR_CanIfRxIndication( VAR(PduIdType, AUTOMATIC) id,P2CONST( PduInfoType, TYPEDEF, PDUR_APPL_DATA ) ptr ); /* PduR_CanIfTxConfirmation */ extern FUNC( void, PDUR_CODE ) PduR_CanIfTxConfirmation(VAR(PduIdType, AUTOMATIC) id);#endif /* PDUR_CANIF_H */PduR_Com.h/PduR_Dcm.h:包含DCM与COM直接使用的接口原型。PduR_Cfg_Internal.h内部使用的配置符号值。PduR_Cfg_SymbolicNames.h外部使用的符号值。 /* *********************************************************************************************************************** * * Product Info * Isolar version: ISOLAR-AB 4.0.2 * Product release version: RTA-BSW 3.1.0 * *********************************************************************************************************************** *//*VersionHead* This Configuration File is generated using versions (automatically filled in) as listed below.** $Generator__: PduR / AR42.4.0.1 Module Package Version* $Editor_____: 9.0 Tool Version* $Model______: 2.3.0.4 ECU Parameter Definition Version*/VersionHead*/#ifndef PDUR_CFG_SYMBOLICNAMES_H #define PDUR_CFG_SYMBOLICNAMES_H/* Note: Module variant generation is done here, specifically to make below macros available on the inclusion of * PduR_memmap.h header file by other modules without PduR_Cfg.h inclusion */#define PDUR_VARIANT_PRE_COMPILE (0)#define PDUR_VARIANT_POSTBUILD_LOADABLE (1)#if !defined(PDUR_CONFIGURATION_VARIANT) #define PDUR_CONFIGURATION_VARIANT PDUR_VARIANT_PRE_COMPILE #endif /* PDUR_CONFIGURATION_VARIANT *//* For PduRRoutingTable: Symbolic Name reference are generated for Tx Paths and Rx paths For TxPaths: PduRConf_PduRSrcPdu_shortname of PduRSrcPdu will be used by module which gives PduR_UpperLayerTransmit request e.g Com,Dcm,Up-Cdd PduRConf_PduRDestPdu_shortname of PduRDestPdu will be used by module which gives PduR_LowerLayerTxConfirmation callback e.g CanIf,CanTp,Low-CddFor RxPaths: PduRConf_PduRSrcPdu_shortname of PduRSrcPdu will be used by module which gives PduR_LowerLayerRxIndication callback e.g CanIf,CanTp,Low-Cdd */#define PduRConf_PduRSrcPdu_DV_Test_Message_1_Can_Network_CANNODE_ECAN_Com2PduR 0 #define PduRConf_PduRDestPdu_DV_Test_Message_1_Can_Network_CANNODE_ECAN_PduR2CanIf 0#define PduRConf_PduRSrcPdu_Diag_ECAN_ReqFunc_Can_Network_CANNODE_ECAN_CanTp2PduR 0 #define PduRConf_PduRDestPdu_Diag_ECAN_ReqFunc_Can_Network_CANNODE_ECAN_PduR2Dcm 0#define PduRConf_PduRSrcPdu_Diag_VCU_ReqPhsy_Can_Network_CANNODE_ECAN_CanTp2PduR 1 #define PduRConf_PduRDestPdu_Diag_VCU_ReqPhsy_Can_Network_CANNODE_ECAN_PduR2Dcm 1#define PduRConf_PduRSrcPdu_Diag_VCU_Resp_Can_Network_CANNODE_ECAN_Phys_Dcm2PduR 0 #define PduRConf_PduRDestPdu_Diag_VCU_Resp_Can_Network_CANNODE_ECAN_Phys_PduR2CanTp 0#define PduRConf_PduRSrcPdu_Rx_Test_Message_01_Can_Network_CANNODE_ECAN_CanIf2PduR 0#define PduRConf_PduRSrcPdu_Tx_Test_Message_01_Can_Network_CANNODE_ECAN_Com2PduR 1 #define PduRConf_PduRDestPdu_Tx_Test_Message_01_Can_Network_CANNODE_ECAN_PduR2CanIf 1#endif /* PDUR_CFG_SYMBOLICNAMES_H */集成代码  MemMap与SchM等就不在这里赘述了。 静态代码 主要介绍常见的静态代码涉及API说明具体详细完整的介绍读者可以参考《AUTOSAR_SWS_PDURouter.pdf》以及《RTA-BSWReferenceGuide.pdf》。 PduR_Init完成PduR模块初始化注意在接口模块使用之前初始化PduR模块。PduR_User:UpTransmit用于与上层模块交互的可配置接口定义接口名称根据配置生成请求发送动作。PduR_User:UpCancelTransmit用于与上层模块交互的可配置接口定义接口名称根据配置生成取消发送动作。PduR_User:LoRxIndication用于与底层通信模块交互的可配置接口定义接口名称根据配置生成接收通知函数。PduR_User:LoTxConfirmation用于与底层通信模块交互的可配置接口定义接口名称根据配置生成发送确认函数。PduR_User:LoTpCopyRxData用于与底层传输协议模块交互的可配置接口定义接口名称根据配置生成拷贝接收数据。PduR_User:LoTpRxIndication用于与底层传输协议模块交互的可配置接口定义接口名称根据配置生成接收通知函数。PduR_User:LoTpStartOfReception用于与底层传输协议模块交互的可配置接口定义接口名称根据配置生成启动接收函数。PduR_User:LoTpCopyTxData用于与底层传输协议模块交互的可配置接口定义接口名称根据配置生成拷贝发送数据。PduR_User:LoTpTxConfirmation用于与底层传输协议模块交互的可配置接口定义接口名称根据配置生成发送数据确认。 十六宿舍 原创作品转载必须标注原文链接。 ©2023 Yang Li. All rights reserved. 欢迎关注 『十六宿舍』大家喜欢的话给个更多关于嵌入式相关技术的内容持续更新中。
http://www.w-s-a.com/news/612452/

相关文章:

  • 网站建设制作定制免费网络短剧
  • 建设部建造师强制注销网站h5响应式网站模板下载
  • 蛋糕网站内容规划建设网站需要多少钱济南兴田德润o厉害吗
  • 企业如何建设网站呢做网站的高手
  • 为什么打开网址都是站长工具开发一款网站需要多少钱
  • 做一个网站app需要多少钱分类信息网站建设计划
  • 怎样下载建设部网站建模培训
  • 北流网站建设制作旅游网站开发目的和目标
  • 网站公司怎么做的网站建设论文二稿
  • 网站建设服务商都有哪些html项目答辩
  • 网站上传到万网主机wordpress视频防盗链
  • 西安建设商城类网站广告设计公司文案
  • 如何建设好高校网站麻辣烫配方教授网站怎么做
  • 宁波网站建设计品牌推广策略分析
  • 网站自建设需要买什么时候开始深圳市建筑市场信息公开平台
  • 平台营销型网站建设小城镇建设的网站文献
  • 燕郊个人做网站小企业网站模板
  • 网站ip需要备案新开河街做网站公司
  • 网站定制设计方案wordpress批量传图片
  • 做外贸兼职的网站设计福州网站开发私人
  • 金华建站模板目前国内有哪些网站做家具回收
  • 个人做网站还是公众号赚钱好部门网站建设和维护
  • 系列图标设计网站推荐建商城网站
  • 中牟建设工程信息网站黑龙江 哈尔滨
  • 网站设计基本结构wap自助建论坛网站
  • 专业番禺网站建设爱做网站外国
  • 深圳罗湖网站设计公司价格制作网站的公司办什么营业执照
  • 长清网站建设价格群辉NAS搭建wordpress
  • 变更股东怎样在工商网站做公示网站建设和网站优化哪个更重要
  • 西安手机网站python网站开发效率