AUTOSAR架构下CanNM User Data的概念及配置

前言
cannm模块配置完成后,基本不需要和其他非标准autosar模块进行交互,但是user data的使用可以通过swc-->rte-->com方式使用,也可以通过cdd直接set/get user data的方式使用,在实际配置的时候还是遇到了几个困惑的问题:
(1)cannm的user data可以通过cdd和com模块同时使用吗?
(2)cannmuserdatatxpdu配置容器里面的cannmtxuserdatapduref配置参数引用的pdu和cannmtxpdu配置容器里面的cannmtxpduref配置参数引用的pdu是同一个pdu吗?
(3)dbc文件包含nm rx pdu和nm tx pdu时导入autosar配置工具后会在ecuc模块自动生成全局nm rx和nm tx的pdu(global pdu)应用参数,但是不会生成cannmtxuserdatapduref引用的配置参数,也不会生成com2cannm的路由表信息,这些该怎么配置?
(4)cannm user data数据在swc-->rte-->com-->pdur-->cannm模块间是怎样完成数据交互的?
本文就先介绍cannm user data的概念及配置,然后来回答这些问题。
正文
1.cannm user data概念
cannm发送(nm tx)帧是8字节数据帧,标准autosar can网络管理发送帧只使用了byte 0和byte 1,byte 0-byte 7用户可以根据需求自定义使用。
note: 一般用cannm发送报文的byte0-byte7存储和网络管理相关的唤醒源信息(ign,四门两盖等本地唤醒信号)。
autsosar规范两种访问cannm user data方式:
(1)cdd直接访问。cdd使用标准接口cannm_setuserdata和cannm_getuserdata来设置和获取cannm中user data数据。
(2)swc->rte->com访问。com模块中配置发送cannm user data的comipdu,ipdu中包含用户自定义的signal,swc和com signal之间进行pport-rport连接产生rte数据读写接口,swc通过rte接口write signal,com模块将signal组包到cannm user data所在的ipdu。pdur模块的路由表中有com to cannm的路由表信息,cannm_mainfunction会在准备发送cannm tx报文的时候调用pdur_cannmtriggertransmit-->com_triggertransmit以trigger方式从com模块获取到cannm user data,然后填充到cannm tx报文的byte 0-->byte 7完成user data的获取与发送。
2.cannm user data配置
2.1 cdd方式访问cannm user data
cannmglobalconfig配置容器里的cannmcomuserdatasupport配置参数需要配置为false,cannmuserdataenabled配置参数需要配置为true,不能配置cannmuserdatatxpdu这个配置容器。
nmglobalconfig配置容器里的nmcomuserdatasupport配置参数需要配置为false,nmuserdataenable配置参数配置为true。
2.2 asw方式访问cannm user data
基础知识:数据在can通信协议栈各层间都是以pdu(protocol data unit)形式传输的,为了将各层pdu关联起来,则需要定义全局pdu(global pdu)。由于全局pdu不属于任何一个标准bsw模块,所以autosar提出了一个ecuc模块来收集一些配置信息。
对于一个发送pdu_xxx,路由信息如果是从com-->pdur->canif的话,在我们导入dbc文件到autosar配置工具(isolar或davinci)的时候,配置工具会自动在ecuc产生pdu_xxx_com2pdur和pdu_xxx_pdur2canif的全局pdu引用信息,然后同时产生以下配置信息:
1)在com模块的comipdus配置容器中的具体pdu_xxx这个comipdu会引用pdu_xxx_com2pdur。
2)在pdur模块的路由容器pdurroutingpaths中会产生一个dest引用pdu_xxx_pdur2canif且src引用pdu_xxx_com2pdur的路由信息。
3)在canif模块的caniftxpducfg发报文配置容器中pdu_xxx会引用pdu_xxx_pdur2canif。
这样就自动完成发送源(src)com经过pdur(路由信息,src to dest)路由到canif(dest)的报文配置过程。
然后回到今天这个主题的关键问题:对于cannm rx pdu和tx pdu因为没有经过pdur路由的需求,而是cannmcanif经过canif收发cannm报文,这样在ecuc模块只会存在一个xxx_nm_cannm2canif和一个canif2cannm全局pdu的引用信息。但是我们要是使用com模块来访问cannm的user data时必须要要使用pdur进行路由,且在配置cannmuserdatatxpdu容器时的cannmtxuserdatapduref配置参数必须引用一个来自pdur2cannm的pdu引用,该怎么配置?
所以:需要我们手动配置ecuc,com,pdur,cannm,nm模块来实现cannm user data从com到cannm的路由,然后swc和com经过signal mapping通过rte完成数据的交互就完成了整个配置过程。
1)第一步我们需要手动在ecuc添加两条关于nm发送报文的pdu的全局引用nm_xxx_com2pdur,nm_xxx_pdur2cannm。
2)在在com模块配置一个comipu配置容器并引用ecuc中的nm_xxx_com2pdur
3)在pdur模块配置一条从com到cannm的路由信息,pdursrcpdu容器引用nm_xxx_com2pdur,pdurdestpdu容易引用nm_xxx_pdur2cannm
4)在cannm模块的cannmuserdatatxpdu容器中cannmtxuserdatapduref参数引用nm_xxx_pdur2cannm
5)配置cannm,nm模块支持com user data support
cannmglobalconfig配置容器里的cannmcomuserdatasupport配置参数需要配置为true,cannmuserdataenabled配置参数需要配置为true。
nmglobalconfig配置容器里的nmcomuserdatasupport配置参数需要配置为true,nmuserdataenable配置参数配置为true。
这样就完成了com通过pdur完成对cannm中user data的数据访问。
note: 在手动配置comipdu和cannm模块的时候还会有一些子模块需要添加,这些在具体操作的时候根据报错提示加上即可。
3.问题回答
问题1:cannm的user data可以通过cdd和com模块同时使用吗?
答:不能。配置了cannmcomuserdatasupport后就不能使用cannm_setuserdata了,也就是说cdd不能再访问cannm的user data了。
问题2:cannmuserdatatxpdu配置容器里面的cannmtxuserdatapduref配置参数引用的ipud和cannmtxpdu配置容器里面的cannmtxpduref配置参数引用的pdu是同一个pdu?
答:不是同一个ecuc模块中的pdu全局引用,ecuc模块只会自动创建nm_xxx_cannm2canif和nm_xxx_canif2cannm的全局pdu引用,nm_xxx_com2pdur和nm_xxx_pdur2cannm的pdu全局引用需要手动创建。cannmuserdatatxpdu配置容器里面的cannmtxuserdatapduref配置参数引用的是nm_xxx_pdur2cannm,cannmtxpdu配置容器里面的cannmtxpduref配置参数引用的是nm_xxx_cannm2canif。
问题3:ccan.dbc文件包含nm rx pdu和nm tx pdu时导入autosar配置工具后会在ecuc模块自动生成义全局nm_rx和nm_tx的pdu(global pdu)应用参数,但是不会生成cannmtxuserdatapduref应用的配置参数,已经不会生成comtocannm的路由表信息,这些该怎么配置?
答:通过手动配置ecuc,com,pdur,cannm,nm模块实现。详见2.2 asw方式访问cannm user data。
问题4:cannm user data数据在swc-->rte-->com-->pdur-->cannm模块将是怎样完成数据交互的?
答:com中包含发送cannm user data的ipdu,ipdu中包含用户自定义的signal,asw和com signal之间进行pport-rport连接产生rte数据读写接口,asw通过rte接口write signal,com模块将asignal组包到cannm user data所在的ipdu。pdur模块的路由表中有com to cannm的路由表信息,cannm_mainfunction会在准备发送cannm tx报文的时候调用pdur_cannmtriggertransmit-->com_triggertransmit以trigger方式从com模块获取到cannm user data,然后填充到cannm tx报文的byte 0-->byte 7完成user data的获取与发送。


一文解读动力电池回收存在的问题及发展的政策建议
金融行业迎来大模型时代,存算基建成决胜关键
满足供电需求的新型封装技术和MOSFET
如何解决掉决Keil5红叉呢
安全光幕的特点
AUTOSAR架构下CanNM User Data的概念及配置
浙江移动5G+AR电商云将引爆下一代电商革命的导火线
夜间照明技术的基本概念和相关术语解析
74ls161中文资料_74ls161计数器功能及其应用
熔断器的型号及分类
2012聚焦轻薄新技术 触控面板成主角
IC Insights:2023年半导体销售额将下降5%
思特威推出两颗高帧率面阵CMOS图像传感器新品, 赋能工业机器视觉相机应用
利用嵌入式AI算法可提高数据质量和系统可靠性
什么是zk-SNARK和zk-STARK
防止电池和PWM壁上立方体充电电源之间的短路
疑似vivo新机iQOO 7智能手机3C认证信息曝光
绷带拉伸强度测试仪的技术特征及技术参数的说明
小米9 Pro 5G版将搭载骁龙855 Plus平台起售价至少在3500元左右
成都新能源汽车租赁集聚点指日可待