1.导语
做汽车标定slave基础软件以及做参数标定的同学,对ASAM MCD-2-MC(ASAP2,人话A2L文件)、ASAM MCD-1-XCP(人话xcp协议)一定非常熟悉。
常见的标定套件也是由很熟悉的供应商提供,例如ETAS的INCA+ES500系列产品、Vector的CANape+VN1600,占据了整个标定市场的85%。
这种标定方式大都基于总线的通讯方式,例如XCP on CAN/ETH等,这也是在ASAM MCD-1-XCP协议的scope里。但还一个测量、标定方式就是通过数据\地址总线或者debug口对MCU内部资源进行直接快速访问,这就是所谓的POD(plug-on device),或者ETAS的ETK技术。这种技术的出现是为了满足严苛的高性能测量需求,但同时高度依赖硬件。由于其硬件的特殊性以及应用场景的稀少,最初这是不在XCP标准定义里。
标定工具供应商盯准了这块肥肉,特别是ETAS这种厂商的特殊背景,他们开始设计属于自己的POD、接插件、转接板甚至向芯片厂商开始提出定制化需求,所以可以看到ST、IFX、Renseas等厂商出的芯片有很多我们看不懂的模块,例如EXEM\OLDA、DAM、OCDS等等。
基于此,ASAM(号称非盈利组织,结果POD这协议6500欧)在2017年专门针对POD发布了ASAM MCD-1 POD V1.0.0版本,试图打破某厂一家垄断的局面。
2.标准解析
那么这个POD v1.0具体讲了写什么呢?根据ETAS的官网描述
在某芯片外围、ECU内部还增加许多额外的电路结构以及相应配套软件,以满足并行使用,最高速率可达100Mbits/s。
因此,可以合理推测,硬件接口ASAM是没法参与了,ECU内部适配软件它可以来凑个热闹,因此ASAM MCD-1 POD就主要针对POD的适配软件提出了标准化,称之为POD Service Software(PSS),主攻POD配置、探测、初始化、同步测量和标定(VX1000的用法,这个步骤有没有很熟悉),试图通过标准化的方式来减少ECU开发对于工具供应商的依赖。
如何减少依赖?假设我换个POD,例如把Vector的更换为ETAS的POD,如果按以前各自为战的局面,适配POD的软件也要更换为ETAS的。现在有了这个标准了,如果都是按照标准开发的PSS,就能够达到POD的即插即用。不过现目前,这还只是个幻想,毕竟基于INCA的A2L都不一定能在CANape上完美适配。
那么这个标准主要是用在哪里的呢?既然是对XCP遗漏的地方进行一个补充,当然还是针对标定测量这个领域的。来看系统架构,如下图:
组件名 | 描述 |
EAP | ECU Application |
POD API | ECU App与PSS之间的接口 |
ASAM PSS | ASAM定义的所有POD需具备的功能 |
Vendor PSS | Vendor自己开发的驱动(VX1000_Driver等),但需遵守POD协议定制的API |
其中,红框内部属于ASAM组织定义的标准组件,ECU interface由其他协议定义,例如JTAG、DAP、SWD等;POD在上位机连接时有两种,一种是debugger用于调试,一种是接标定工具,用于高性能测量和标定,如VX1000与POD之间就是通过XCP on ETH。
3.标准的Use-cases
ASAM MCD-1 POD定义了POD使用上的三个要求以及POD的主要功能,分别是
-
POD的配置
-
POD的探测
-
PSS初始化
-
标定、测量
这里我将结合VX1000来进行实例说明。先上一张老图:
3.1 POD的配置
POD配置主要是为了保证该POD可以适配当前所需要的工作场景;换句话说就是为POD选取工作电压、设置debug口类型、时钟频率等等,如下图:
虽然不清楚POD里面是什么,但给人的感觉很像一个FPGA(瞎说)。
涉及到指令如下:
完成配置后,就需要进行POD Detection和 Initialization。
3.2 POD Dectection/Initialization
POD探测主要是ECU检测POD的配置信息是否符合场景需求。以VX1000为例,通过VXconfig将数据写入POD之后,POD会将一些验证信息通过ECU interface写入到ECU预定义的mailbox(共享ram),ECU会去检测是否符合场景需求。一旦满足要求就会在硬件上显示,如下:
mailbox数据定义如下:
PSS的初始化不依赖硬件,该驱动可以激活如下功能:
3.3 同步测量和标定
这个就和ASAM MCD-1 XCP里面描述的DAQ、Calibration一致了,根据A2L描述文件进行标定和测量即可。只是采用的命令和原理的标准有不同。
4.小结
总的来说,ASAM MCD-1 POD定义了PSS和EAP之间的通讯API,但有些API是vendor独立的,有些是共用的。同时,POD协议拓展了关于XCP协议关于POD指定的命令和POD配置的事件等,定义了基于POD的A2L文件demo。
微信公众号:汽车MCU软件设计