AutoSAR系列讲解(入门篇)4.3-BSW的Communication功能


一、架构与术语解释


BSW中以后每一节我都会放上一张模块图,所以就先上图:
由于汽车上一般都使用CAN总线,图中的bus大家可以就当成CAN来看待,如果使用的是LIN或者其他的,也相应的换成其总线看待就行。后续在实践篇中将会有一节来做communication的实验,但是基础内容大家也都需要掌握理解才行,不然到了后来实验,可能大家都不知道博主在干啥(虽然我后续尽量讲的详细一点吧)。所以BSW中的这些章节可能较为苦涩难懂,但是希望大家能耐着性子先浏览一遍先,在脑子中有个大致的印象,后续实验课再回头来看,就会轻松不少
 

 模块详解:

  • COM:从应用层传下来数据首先就进入这里,应用层无需关心收发的数据是通过什么总线传输的,应用只需要将它传输给COM即可。这些收发的数据是由用户的DBC文件或者ARXML文件已经定义好了的(这些文件一般OEM整车厂在整车设计的时候就做出来了,里面有总线的网络拓扑图,每个传输的数据应该走什么总线都有定义,所以应用层是无需关心的,只需要优雅的将数据和COM交换即可)。同样,COM上传的数据也是很单纯的数据,里面没有这个数据是什么总线上传的这样无意义的信息,应用层关心的是这个数据的实际意义和数据大小。所以COM主要就起了一个信号接口和网关的作用。
  • PDU Router: PDU------Protocol DataUnit,协议数据单元。这个模块的功能就是将COM下发的信号数据分配到相应的协议总线上去;或者将不同的协议变成同一信号上传给COM。
  • IPDU Mux: 用于解析一些特殊的协议,比如CANFD或者用户自定义的一些协议。就是起了一个统一CAN ID,不同信号Layout的作用。
  • CAN Tp:分包数据传输与错误检测,一般来说只有在诊断的时候才会使用。
  • CAN Interface:与硬件已经无关了,与硬件相关的是下面两个Driver做的工作,这个Interface主要可以配置收发队列;组帧(FlexRay);管理时间触发总线的调度表(LIN,FlexRay)。
  • CAN Driver: 就是MCAL中对主芯片上CAN模块的驱动封装。
  • Trcv Driver:Trcv------Transceiver的缩写,就是收发器驱动的意思。如果是外置CAN收发器,这里就要用到Trcv
  • Driver这个驱动,而非CAN Driver。


感觉这么简单的罗列一下上面的术语,可能大家还是看不懂,下面就简单的发送和接收流程做一个解释(CAN这东西太庞大,这里一时也讲不完,就拿最简单的方式来说明一下)


二、发送流程

  • 1. 应用层Send一个数据进COM
  • 2. COM写信号进PDU Buffer中
  • 3. PDU被PDU

        Router立刻发送或按周期发送(每个PDU都有一个独立的ID),之后PDU
        Router辨认总线种类,并把PDU发向不同的下级模块

  • 4. Interface根据不同的通道,把报文写入不同的队列
  • 5. Driver根据报文的优先级立刻发送报文


三、接收流程


中断或者循环接收(这里假设为中断):

  • 1. 硬件接收报文
  • 2. 由Driver发出Rx中断(函数),之后通过RxIndication,数据被传递到Interface
  • 3. 传递到PDU Router
  • 4. 传递到COM(如果SWCs使用Data
  • ReceptionTrigger,就通知RTE;否则暂存到Buffer中)
  • 5. 信号被RTE读取,然后应用层读取

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1837.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云私有云平台运维面试

文章目录 概述JD 岗位描述一面二面三面HR面 概述 根据会议将面试问题进行总结,很多问题感觉当时没回答好,这是为啥呢?应该还是不熟练吧,或者不善于表达。将次经历分享出来,大家多练练。 JD 岗位描述 私有云平台运维…

使用 JCommander 解析命令行参数

前言 如果你想构建一个支持命令行参数的程序,那么 jcommander 非常适合你,jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具,可以通过注解的方式快速实现命令行参数解析。 这篇教程会通过介绍 jcommadner ,快速的创建一…

Rabbit MQ的基本使用

目录 1. MQ是什么,有哪些作用? 2. 主要的MQ框架有哪些? 3. RabbitMQ安装 4. RabbitMQ中的主要概念 5. 消息队列的核心概念 6. 一个简单的生产者和消费者示例 6.1 消息发送者模块 6.1.1 引入必要的依赖 6.1.2 项目配置文件 6.1.3 启动…

【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

前言 大家好,我是秋意零。 在上一篇中,我们讲解了 StatefulSet 的拓扑状态;我们发现,它的拓扑状态,就是顺序启动/删除、Pod 名称编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 …

uniapp打包app后,微信授权登录

官方文档:App端OAuth(登录鉴权)模块 关键配置项说明: 1、appid 微信开放平台申请应用的AppID值。 2、appSecret(HBuilderX3.4.18 不再提供此参数的可视化配置) 微信开放平台申请应用的AppSecret值。 找到manifest.json文件&am…

网络安全 | 密码基础知识介绍

概述 密码介绍 安全问题 保密性:对发送的消息进行获取完整性:对发送的消息进行篡改身份伪造:对发送的主体身份进行篡改,a发的消息,篡改为b发的行为抵赖:对发送的消息进行否认,丧失行为的可追…

SQL 优化(三):使用覆盖索引

摘要 今天跟大家分享一个比较常见的 SQL 优化手段——使用覆盖索引。需要特殊说明的是,MySQL 支持多种存储引擎,对索引的支持也不同,这里我们只关注 InnoDB 引擎的 BTree 索引 InnoDB 的索引实现 在介绍覆盖索引之前,我们先简单…

【MySQL】MVCC是如何解决快照读下的幻读问题的

文章目录 LBCC当前读 MVCC隐藏列undo logRead View 总结 我们从上文中了解到InnoDB默认的事务隔离级别是repeatable read(后文中用简称RR),它为了解决该隔离级别下的幻读的并发问题,提出了LBCC和MVCC两种方案。其中LBCC解决的是当…

SAP 区分工单BOM物料是手工删除 还是 Teco后自动关闭需求

SAP 区分工单BOM物料是手工删除 还是 Teco后自动关闭需求 首先 resb表删除标识XLOEK 都为 ‘X’,无法通过其它字段直接区分 1先从前台界面区分 手工删除的,组件界面颜色正常,状态为-REL 删除 Teco自动关闭需求的,颜色不一样&am…

MAC电脑使用技巧

Mac打开根目录 /user下的文件 mac 上怎么显示隐藏的/user文件夹,有两种方法可选~~~ 1,Finder界面是,最上方,通过“前往”进入“电脑”或文件夹 先进入到需要显示隐藏文件的文件夹下 接着按Command苹果键F,在窗格上会显示搜索栏 然…

OpenCV(图像处理)-基于Python-轮廓查找

轮廓查找 1. 轮廓2.轮廓查找2.1 findContours()2.2 drawContours()2.3 contourArea()和arcLength()2.4 多边形逼近与凸包approxPolyDP()convexHull()2.5 外接矩形minAreaRect()boundingRect() 1. 轮廓 一个图像中具有相同颜色或强度(灰度图)的连续点所组…

springboot配置https

本身不是一个挺难的东西,但是也踩了很多坑,终于是可以了,在此记录一下。 就两步生成证书和springboot配置。 目录 1.生成证书2.springboot配置3.启动验证注意事项 1.生成证书 这里采用java自带的keytool进行生成。 注意jdk环境,…