3.1由DBC创建Nm、CanNM
ETAS工具可根据DBC文件,自动配置生成Nm、CanNm模块。但是关键的一点是要生成NM、CanNM模块DBC文件中必须有NM类型的报文。
还有一点,即使DBC文件中有Nm的报文,但是因为报文的类型在导入时没有设置成Nm,那也不会生成Nm模块。
最后一点,如果已经导入过DBC文件,要再次导入的话,最好把之前导入后生成的DBC_SysDesc.arxml文件先删除掉。否则会经常出现新的内容导入后不正常的情况。
3.2重新导入DBC文件
重新导入DBC文件前,记得要先删除之前生成的DBC*.arxml文件。
按以下步骤导入DBC文件:
导入DBC在AR Explorer选项下生成如下的元素:
3.3自动生成Com Stack配置
有一点非常重要,要使用自动生成配置前,需要先完成SWC的创建,SWC到ECU的mapping等基础工作。否则是无法自动生成ComStack的。这一部分的内容可参考这个文档:http://10.8.9.137/svn/dilink/Dept_Doc/MCU组/04_Tech Doc/autosar培训资料/ETAS Autosar最小系统配置
上一步骤已经导入DBC文件,ETAS工具可以根据DBC文件自动生成Com stack配置。按如下步骤操作,完成Com Stack配置。
点击完成后,生成如下的Com Stack配置:
3.4ComM、Nm、CanNm、CanSM的关系
3.4.1 ComM
3.4.1.1ComM的状态
对于SWC层面,它直接访问的模块是ComM。Nm、CanNm、CanSM对于SWC是不可见的,它们是为了配合ComM的工作而存在。
SWC对于通信关注的是能不能通信的问题,因此ComM有两个状态来表示能否通信:COMM_FULL_COMMUNICATION,COMM_NO_COMMUNICATION。SWC通过Request FullCommnunication, 或者Request NoCommunication来使能和关闭通信。
其实ComM还有另一个状态:COMM_SILENT_COMMUNICATION,这个状态由ComM内部来控制。它会获取Nm的状态,如果NM处于PrepareBusSleep, 则ComM会切换到COMM_SILENT_COMMUNICATION状态。
处于COMM_FULL_COMMUNICATION状态时,ComM模块允许数据的发送与接收;处于COMM_NO_COMMUNICATION状态时,ComM要阻止数据发送与接收。
当有用户有多个请求时,如同时有切换到COMM_FULL_COMMUNICATION和COMM_NO_COMMUNICATION时,优先级高的获胜,即最终切换到COMM_FULL_COMMUNICATION模式。
3.4.1.2关机同步变量ComMNmVariant
ComMNmVariant有4种设置:LIGHT, LINSLAVE, PASSIVE and FULL。
只有FULL和PASSIVE才能保证关机时所有网络是同步关闭的。
3.4.1.3ComM与其他模块的关系图
3.4.2 NM、CanNM
一个系统中可能存在着多种NM设备,比如Can、Lin、Ethnet, ComM模块需要与这些设备进行通信,但是它不能与具体的设备通信,比如它不能直接调用CanNm的API,因为直接调用的话就与CanNm耦合在一起了。ComM模块是适配所有NM的,也就是说不管系统用的是CanNm还是UDP Nm, ComM都不受影响。
为了实现这个目的,系统在ComM与各种Nm设备之间插入层。因此NM层就是为了适配ComM与各种设备的Nm而存在的。
那NM是如何实现适配的呢?
更多详细信息,请查看下面的文章。