AUTOSAR COM解析

模块简介

COM是AUTOSAR服务层的模块,介于PDUR和RTE之间,如下架构图所示:

COM的主要功能如下:

  1. 为RTE或者ASW提供面向信号的数据接口;
  2. 通讯控制;
  3. 按不同的发送方式发送信号;
  4. 监控接收的信号,信号超时;
  5.  提供发送成功的通知;
  6. 提供初始值和信号更新指示;
  7. 大小端转换;
  8. IPDU和信号之间的打包盒解析;
  9. 支持大数据和动态长度的数据类型。

认识各种PDU

PDU由SDU和PCI构成:SDU(Service Data Unit)服务数据单元是需要传递的数据;PCI(Protocal Control Information)协议控制单元是数据传递所需的信息,比如包含源和目标信息,PCI在传输端由协议层添加,在接收端再次移除。

  1. I-PDU:Interaction Layer Protocal Data Unit。交互层协议数据单元,对应ISO七层模型的表示层。I-PDU承载着信号。
  2. N-PDU:Networt Layer PDU。网络层协议数据单元,对应ISO七层模型的网络层。TP层和IF层之间交互使用,如单帧、多帧、首帧、流控帧。
  3. L-PDU:Data Link Layer PDU。数据链路层协议数据单元,对应ISO七层模型的数据链路层。IF层和driver层之间交互使用。

需求及其对应的软件实现解读

1、支持多种不同阶段的配置

需求:COM需要支持在不同的编译阶段配置,即配置参数需要能够在不同的编译阶段更改:

  1. Pre-Compile-Time:通常的方式,生成的代码、预处理的指令等。
  2. Link Time:模块外的常数,模块编译完成后还能够再修改。
  3. Post-Build-Time:和2类似,模块外可加载的常量数据,但是数据在特定内存段,可以在整个工程编译完成后修改。比如直接刷新此内存区域即可。

软件实现:ComEnableSignalGroupArrayApi(待补充)

2、为PDUR提供接收指示函数

COM的唯一下层模块是PDU Router,当PDUR接收到I-PDU后,COM应该提供一个函数被PDUR调用,函数名为:Com_RxIndication。

软件实现:

void Com_RxIndication (
PduIdType RxPduId,
const PduInfoType* PduInfoPtr
)

RxPduId:接收PDU的ID;

PduInfoPtr:包含接收到的PDU的长度,以及指向PDU元数据的buffer的指针。

3、为PDUR提供发送确认函数

当PDUR发送I-PDU成功到网络后,应该调用COM提供的发送确认函数,函数名为:Com_TxConfirmation。

软件实现:

void Com_TxConfirmation (
PduIdType TxPduId,
Std_ReturnType result
)

TxPduId:发送成功的PDU的ID;

<think>好的,我现在需要帮助用户查找关于AUTOSAR源码的解析或学习资料,包括教程、架构分析和开发指南。首先,我得回顾一下用户提供的引用内容,看看有没有相关的信息可以利用。 用户提到了引用[1],里面提到了AP AUTOSAR应用的方法论和示例代码,这可能对开发指南有帮助。引用[2]和[3]提到了使用PRQA的静态分析工具来确保代码质量,这可能和源码解析相关。引用[4]则提供了Arctic Core的官网和源码获取链接,这应该是比较直接的资源。 接下来,我需要整理这些信息,看看如何分门别类地呈现给用户。用户可能需要具体的源码解析,比如模块结构和代码示例,所以需要提到Arctic Core的源码获取途径。然后,架构分析方面可能需要区分CP和AP的不同,并引用现有的文档资源。开发指南方面,可以结合编码规范、工具链使用以及集成测试等内容。 另外,用户可能对实际项目案例和社区资源感兴趣,比如GitHub上的开源项目或论坛讨论。同时,静态代码分析工具如PRQA的QA·C++也是重要的,需要提及如何通过这些工具来理解源码结构。 需要注意的是,用户可能没有直接访问某些官网的权限,或者需要更多的中文资料,所以可能需要推荐一些中文书籍或翻译的指南。此外,确保提供的链接是可访问的,或者给出替代的获取方式,比如通过邮件申请源码。 最后,生成的相关问题需要围绕用户的需求展开,比如如何获取源码、架构差异、开发工具推荐等,这样用户可以根据问题进一步深入查找信息。</think>根据AUTOSAR标准实现和源码解析需求,结合官方文档和行业实践,整理以下结构化学习路径: ### 一、源码获取与分析路径 1. **Arctic Core开源实现** - 源码仓库:通过Mercurial访问`http://my.arccore.com/hg`(需注册账号) - 构建系统:参考`http://dev.arccore.com/public/userdoc/UD441x/Makesystem_23789620.html` - 模块解析示例: ```c /* BSW模块典型结构 */ #include <Com.h> void Com_SendSignal(Com_SignalIdType SignalId) { PduInfoType pduInfo; /* 信号路由处理 */ Com_Rb_WriteSignal(SignalId, &pduInfo); } ``` 该代码展示了通信栈的信号发送流程[^4] 2. **官方验证源码** - 自适应平台验证代码使用C++14标准开发 - 包含100+个服务接口定义(ara::core, ara::com等) - 通过`qa-c++`工具进行MISRA C++合规性检查[^2][^3] ### 二、架构解析要点 $$ \begin{array}{|c|c|c|} \hline \text{层级} & \text{经典平台(CP)} & \text{自适应平台(AP)} \\ \hline 操作系统 & OSEK/VDX & POSIX OS \\ 通信机制 & CAN/LIN & SOME/IP \\ 执行单元 & 固定任务 & 动态进程 \\ 代码规范 & MISRA C & AUTOSAR C++14 \\ \hline \end{array} $$ ### 三、开发指南资源 1. **官方文档体系** - AP方法论:`AP AUTOSAR方法论文档(AUTOSAR_EXP_APP方法论)` - 通信协议:`SOME/IP规范(AUTOSAR_SWS_SOMEIPProtocol)` - 安全机制:`加密服务规范(AUTOSAR_SWS_Cryptography)` 2. **中文参考资料** - 《AUTOSAR规范与车用控制器软件开发》机械工业出版社 - 《基于AUTOSAR汽车电子基础软件》北京理工大学出版社 - 翻译指南:`AUTOSAR编码指南(中文版)`含200+条C++开发规则[^3] ### 四、工具链配置建议 1. **开发环境** - 建模工具:ETAS ISOLAR-A/B - 代码生成:EB tresos Studio - 调试工具:Lauterbach Trace32 2. **静态分析** ```mermaid graph LR A[源码] --> B{PRQA QA·C++} B --> C[MISRA检查] B --> D[AUTOSAR规则集] B --> E[复杂度分析] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值