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

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录

软件架构

关键知识点

第一:PDUR的缓存作用

第二:CANTP的组包拆包功能

第三:流控帧的意义

配置过程

步骤0:ECUC模块中PDU创建

步骤1:SoAD模块维持不变

步骤2:DoIP模块为Gateway功能添加Connection

​步骤3:DoIP模块为Gateway新增LA/TA/SA

​步骤4:PDUR模块为Gateway功能创建路由

步骤5:PDUR模块为数据缓存创建Buffer

步骤6:CanTp配置

步骤7:CanIf中新增Pdu配置

全文总结

软件架构

设计方案如下图:

整个数据流传递非常简单明了,这整个网络结构看下来,其实重点和难点在诊断,而不在DoIP。好好理解这张图,任何一个函数的错误调用都会影响到整体功能的实现。诊断数据流的传递如下:

为了实现这个效果,有以下三点需要重点处理的地方。

关键知识点

第一:PDUR的缓存作用

CANTP本身没有缓冲区,所以面对DoIP大量的数据传来,必须有个地方去缓存这么大的数据,否者CANTP的组包无从谈起。根据上图,CANTP的上层是PDUR,所以只能在PDUR里面做缓冲池。具体方法后文介绍。

第二:CANTP的组包拆包功能

首先是PDUR调用CANTP的函数CanTp_Transmit( )告诉CANTP当前我这边有数据来了,数据长度有多长。然后CANTP不紧不慢的按自己的吞吐量,调用PduR_CanTpCopyTxData( )去PDUR的缓冲区取数据,一次又一次,直到该缓冲区为空。

因此,为了保证数据一致性,上层应该锁定该内存区域,直到出现指示。

当发送缓冲区被锁定时,上层不能在缓冲区内写入数据。当接收缓冲区被锁定时,CAN - T传输层不能保证缓冲区的数据一致性。上层既不能读也不能写缓冲区中的数据。

在咱们DoIP转CAN这个数据流测试下来,CANTP之于诊断就像人的脊髓之于整个人的作用(脊髓能够不经大脑产生膝跳反射),大脑肯定是DCM和DEM,但CANTP也负责一些简单的诊断协议栈标准的实现,比如UDS中甚为繁琐的种种时间参数就是CanTP实现的。还有流控帧的封装发送/接收判断也是CanTP实现的(也就是CANTP之上的模块如DCM根本不会接到流控帧的任何信息)。

流控帧用于调整发送方以适应接收方的能力,

http://www.xdnf.cn/news/12813.html

相关文章:

  • 12-OPENCV ROCKX项目 人脸拍照
  • 【Blender】Blender 基础:导入导出
  • 【算法】【优选算法】优先级队列
  • Hermite 插值
  • Day47
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
  • 【CSS-6】深入理解CSS复合选择器:提升样式表的精确性与效率
  • 宝塔安装配置FRP
  • 【题解-洛谷】P10448 组合型枚举
  • 基于RAG实现下一代的企业智能客服系统
  • 2025年6月|注意力机制|面向精度与推理速度提升的YOLOv8模型结构优化研究:融合ACmix的自研改进方案
  • 当SAP系统内计划订单转换为生产订单时发生了什么?
  • 混合策略实现 doc-doc 对称检索局限性与失败案例
  • 基于算法竞赛的c++编程(21)cin,scanf性能差距和优化
  • 在 Windows 11 或 10 上删除、创建和格式化分区
  • tableau 实战工作场景常用函数与LOD表达式的应用详解
  • 操作系统进程管理解析:从 fork 到 exec 的全流程实战与底层原理
  • Python Robot Framework【自动化测试框架】简介
  • OTF字体包瘦身,保留想要的字
  • vector使用及模拟
  • python并发编程
  • 【AI系列】BM25 与向量检索
  • 并行硬件环境及并行编程
  • 【Java学习】Spring Security登录认证流程通俗版总结归纳
  • 【西门子杯工业嵌入式-4-什么是外部中断】
  • Cursor生成Java的架构设计图
  • 第二十六章 流程控制: case分支
  • 一键亮灯高级和弦触发自动鼓机:特伦斯自动挡钢琴开启音乐创作的全新时代
  • B站Miachael_ee——蓝牙教程笔记
  • 【论文解读】Toolformer: 语言模型自学使用工具