基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5
 
ArcCore中Communication Service中各层都有许多ID的配置,如Can driver中有CanObjectId,
CanIf中有CANIF_ID,CanTp中又有CANTP_ID,其他的PDUR_ID, COM_ID等等,纷繁复杂。
 
先来看看各层的配置:
Can Driver:
 
CanIf:
CanTp:
CanTp中最为明显,各种ID齐上场,眼花缭乱,很难理清楚各个ID之间的关系。这些ID又被当做参数传递给上层或者下层,或者被当做数组索引号来索引数组,配置时很难一一对应起来。
有没有什么办法简化呢?
 
Communication各层次交互图如下:
 
跟踪代码可以发现,除了Can driver之外,其他各层之间的API,都是用PduId为参数指代要操作的PDU。虽然这些PduId在每一层都有自己的对应关系,但在各层之间指代的是同一个PDU类型,如COM -> PDUR -> CANTP -> CANIF -> CAN DRV,每一层有自己的ID,但是指代其实是同一个Pdu类型。
 
所以可以打通各层的PduId,统一使用,各层的配置数组索引号根据统一的PduId编号进行映射,在内部使用该映射即可。
CanIf: PduId_to_CanIfPduConfig_Index_Map;
CanTp: PduId_to_CanTpNSdu_Index_Map;
PduR: PduId_to_RoutingPath_Index_Map;
这些里面的PduId都是统一定义的,各层对应到各自的配置索引号,以供使用。
如:
 
 
CanId & PduId
另外一个需要注意的是,要区分Can Id和 PduId。
CanId: 实际发送接收时使用的ID;编号为某PduId的Pdu最终通过Can发送时使用的CanId。
PduId: Pdu类型的编号,用以指代一个Pdu类型。

ArcCore重构-打通Can各层ID配置的更多相关文章

  1. ArcCore重构-目标文件结构化

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5   基本问题 3. 编译系统中所有代码文件通过搜索路径(VPATH)中搜索,存在名称污染问题,需加入路径信息:   ...

  2. u3d 模型ID配置

    换模型为什么要改代码 0.0 你没有逻辑ID->模型的配置么. 做2个配置.. 分别是角色的ID对应模型路径. 然后是里面的动画名对应真实动画名. 比如 ID=1 path = "xx ...

  3. ArcCore重构-生成%_offset.h文件

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题   ArcCore中,需要生成asm_offset.h和arch_offset.h这两个头文件,定义着代 ...

  4. ArcCore重构-头文件引用问题的初步解决

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5   基本问题 1. 头文件引用混乱,所有头文件通过从搜索路径(-I)中引用,存在名称污染问题,需加入路径信息:   ...

  5. 使用Cloudrea Manager在CDH集群中添加kafka服务节点,更改borker.id配置后无法启动

    需要保证meta.properties文件中的broker.id和cloudrea manager的web页面上kafka配置的broker.id一致,最好让server.properties中的br ...

  6. .NET CORE 下 MariaDB DBfirst 生成model层 并配置连接参数

    1.首先新建一个类库,然后通过NuGet安装下面三个包 2.然后在程序包管理器控制台中运行以下代码(ps:记得默认项目选择刚才新建的项目,同时设置为启动项) server 是服务器地址 databas ...

  7. 全面!总结BQ系列阻抗跟踪电量计化学Chemical ID配置和Golden学习方法

    BQ系列阻抗跟踪电量计SOC最高能达到1%,功能强大,应用起来也比较复杂.不仅要配置好参数,匹配好化学ID,并且进行好Golden学习和相关测试.本文就讲述ID匹配,Golden学习和测试的终极方法流 ...

  8. 自增build ID配置

    本文转载出自:http://blog.sina.com.cn/s/blog_13ec67adc0102wimg.html   Build在plist文件中的key是“CFBundleVersion”, ...

  9. ArcCore重构-Platform_Types.h实现辨析

    AUTOSAR定义了一系列PlatformTypes,如uint8/uint16/uint32等等基本类型. It contains all platform dependent types and ...

随机推荐

  1. rsync客户端一键安装rsync脚本(源码)

    客户端 read -np "请输入源码rsync的URL 地址 包名(以空格为分隔符,别带/):" URL DZ BM yum remove -y rsync &>& ...

  2. 解决MySQL 8.0数据库出现乱码的问题

    1.在MySQL 8.0的安装目录下创建一个my.ini文件(保存为utf8格式),然后写入以下内容: [mysql] # 设置mysql客户端默认编码 default-character-set=u ...

  3. 一、Spring的控制反转(IOC)学习

    一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...

  4. u-boot: Not enough room for program headers, try linking with -N

    在编译u-boot的时候出现了以下错误: arm-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try link ...

  5. python小游戏-pygame模块

    一.tkinter模块的GUI 基本上使用tkinter来开发GUI应用需要以下5个步骤: 导入tkinter模块中我们需要的东西. 创建一个顶层窗口对象并用它来承载整个GUI应用. 在顶层窗口对象上 ...

  6. Excel函数有门槛,是编程

    Excel的公式体系,最简单的就是输入“=1+1”.“=2*3”.看起来没有门槛,但实质上是函数式编程,Range写Formula,Power Query写M语言,VBA里写Function.通过菜单 ...

  7. [hdu3068 最长回文]Manacher算法,O(N)求最长回文子串

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意:求一个字符串的最长回文子串 思路: 枚举子串的两个端点,根据回文串的定义来判断其是否是回文 ...

  8. [hdu5389 Zero Escape]数根的性质,DP

    题意:把n个数(1-9)放到A集合和B集合里面去,使得A集合里面的数的数根为a,B集合里面的数的数根为b,也可以只放在A或B任一个集合里面.求方法总数.比如A={2,4,5},则A的数根为[2+4+5 ...

  9. Mysql 常用函数(14)- lower 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html lower 的作用 将所有字符串更改为小写,然后返 ...

  10. Java -> 构造器(构造方法)

    构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.当 ...