COM 模块详解

上图选自 [AUTOSAR Layered Software Architecture] R21-11
为了严谨科学,也为了保护原作者版权,事先声明,本节会用到 autosar 官方文档的部分图片。
文档名称:AUTOSAR Layered Software Architecture,链接
版本:R21-11

选自上述文档的 Page 102。
这个图和上面所说的内容就对应起来了。也证明了 PduR 存在的意义,他不是单独为 Com 服务的,而且有了 PduR 的抽象,方便可以对路由路径修改。
为什么说 ComM 不需要管理所有的模块,如图橙色箭头所示,只需要管理总线协议,就可以实现对相关总线的使能、监控。 网络管理和业务所需的报文数据是分开的,因此如果通过底层通信协议之上的业务模块来网络管理的话,例如 Com,就会导致业务数据和网络管理的数据耦合都需要从底层总线经由 PduR 到达 Com,在交给 ComM,产生了耦合。很有可能存在紧急业务数据,例如弹出安全气囊的信号,因为网络管理报文的收发、处理导致带来延迟,哪怕可能1、2ms,对驾驶者、乘客而言肯定是不希望看到的情况。网络管理和业务数据分开,属于垂直方向的解耦(不是专业术语,重点会意就行) 。
Com 涉及到的总线协议理论上应该是包括 CAN、CANFD、TP(TP 总线具体是什么有待研究,COM 官方文档中提及到的大报文使用的就是 TP 总线)(这里不确定全不全,有待补充,欢迎讨论,交流,希望懂的大佬不吝赐教)。实际 COM 官方文档中提到的只有 CAN 和 TP。关于总线协议可以看这篇文章 CAN\CANFD\FlexRay\LIN 一文深度解析常见通信协议。
这个图像看起来很乱,简洁一些如下:

暂时我们只看通信协议栈,不看网络管理(网络管理暂不介绍,以后可能会开网络管理专栏。)
他不是漂不漂亮的问题,他真的是那种,很少见的那种……(稍微皮一下)
这里提到的不明白的名词,直接去这篇文章里 ctrl + F,【AUTOSAR-CP-CAN-2】AUTOSAR COM。
本节 Autosar 官方文档的部分图片引用自文档 Specification Of Communication。



下面英文的大意:这里信号网关路由信号到 Tx 方向的 PDU 时,需要字节序转换和符号扩展,以便在 TMS (发送模式选择)时的输入是正确的。在接收端,字节序转换仅在接收总线的字节序和当前 CPU 序不同时有必要;在发送端,字节序转换仅在接收总线的字节序和当前发送总线的字节序不同时才有必要。
本节 Autosar 官方文档的部分图片引用自文档 Specification Of Communication。

图片注解:
配置解释:
这部分按理说属于 RTE,因为 Com 模块规范只描述了 Com 的功能和逻辑,上层模块 RTE 如何使用 Com 的功能和 Com 模块中配置的信号完全是由上层决定。 这部分内容应参考 AUTOSAR System Template 第 5.2 节 Data Mapping。
它用于将 SW 组件端口(ports)的 VariableDataPrototypes(变量类型) 或 ClientServerOperations(客户端服务端的操作) 映射到 SystemSignals。
SystemSignals 代表通信系统中对驻留在不同 ECU 上的软件组件之间交换的数据的视角。 系统信号允许以扁平结构表示这种通信,即,为连接的 SWC 实例发送和接收的每个数据元素定义了一个系统信号。如下图所示。DBC 中定义的信号,是在物理层中实实在在发送传递的信号,而 system signal 则可以理解为一个 RTE 提供给 APPL 层的信号的概念,这个信号如何配置,如何映射到 DBC 中的信号上是在 RTE 完成的,RTE 会封装信号的发送和接收函数(Com_SendSignal、Com_ReceiveSignal),会将封装好的函数提供给上层 APPL 层中的 SWC 使用。

假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总