目前OEM、供应商给的软件开发规范基本都是对xcp保留一路CAN。但以前遇到一个问题,当时使用的是标准CAN,对于测量周期,客户有一个需求,即要求DAQ周期为2ms,实际上在标准CAN的情况下,1ms最多可以发送标准CAN报文4帧,即一个DAQ周期最多8帧,如果选用ODT格式选用绝对地址,则总共可以发送有效数据7*8=56个bytes;这很明显对于电机类的测量是不友好的,甚至出现过因为DAQ一直把总线占着,导致系统效率降低的情况;因此xcp in CANFD/ETH慢慢普及了。
2.ETK技术
再后来,接触到了联电的客户,给我做了一个关于ETK的技术培训;先总结如下:
ETK(Emulatortastkopf) 是一种内存模拟技术,它是 ECU 中的一块特殊用途的电路模块,提供基于并行通讯的应用(与上述xcp on can/eth的串行技术有区别)。ETK 通过直接同控制单元处理器的总线进行连接,从而提供高速数据通讯,ETK 可以单独替代控制器 ECU中的标定数据也可以同时替代控制器 ECU中的标定数据和程序(执行代码)。原理如下:
值得注意的是到这里,就出现了两种不同实现方式的标定技术,且这两种互不冲突,如下:
进一步的,我们来了解ETK里面到底有什么东西,这是一张带ETK的ECU内部结构图:
很明显,由于其自带RAM和Flash,且和ECU之间是通过并行访问,因此在标定过程中几乎不会消耗CPU资源。在实际开发中,如果开发阶段ETK 的角色既要管理 Data 部分,还可以管理Code部分,则需要将代码和数据全部下载到ETK,且只需要做一次;对于只管理 Data 部分的 ETK,ECU在执行过程中从 ETK 的 WP或 RP 中访问数据,从其自身的 Flash 中读取代码。值得注意,ETK在ECU掉电后自身也有供电的。随着技术的进步和ASAM MCD-1 POD(后面聊)的诞生,ETK技术进一步进化,如下:
既然并行标定技术这么高效,为什么现在还是一个582或者591、592比较普遍呢?原因就是ETK加标定工具,太贵!一个581/2可能淘一淘小千,一个带ETK的ECU加标定工具,可以搞好多好多581了。回到正题,这个ETK技术,再结合英飞凌、瑞萨等厂家的Emulation Device;我发现这是芯片厂不想你ETAS(Bosch dad)一家独大啊,干脆在芯片设计时就将这种技术考虑进芯片内部。
所以接下来,我们就要聊VX1000高性能标定。3.VX1000高性能标定
VX1000的高性能标定实现是基于带POD的ECU,具体如下:
ECU端不需要集成xcp协议栈,ECU端只需要将debug口(NXP叫SWD,英飞凌叫DAP/JTAG)引出,与Vector针对芯片定制的POD(Plug on Device)连接,POD又与VX1000(Base Module)相连接。PC端与串行标定一样作为MC(测量/标定)master,Base Module里集成了XCP Slave协议栈,这意味着什么?Master发送的所有的关于XCP指令,都在VX1000里做出了解析,并根据ASAM MCD-1 POD协议转换成另一种数据帧通过POD->SWD,发送给ECU;M7(ECU)里虽然不集成XCP协议栈,但是根据POD协议,需要集成POD API、POD Service Software、Vendor Service Software等等。不用担心,Vector已经为我们做好了准备,如下:
而实际标定时,也是master发送download指令在slave完成解析,通过SWD直接进行修改。4.ASAM MCD-1 POD / ASAM MCD-1 XCP v1.5(Debug over XCP)
做标定的最先遇到的肯定是ASAM MCD-1 XCP,对slave开发来说,其中的各种指令更是非常熟悉。但是标定工程师不一样,他们主要是对控制算法的调参,如果采用高性能标定的方式,debug被标定工具霸占了,ECU需要debug,那这又怎么办呢?因此在2017年ASAM又提出了debug over xcp的方式,劳特巴赫、isystem相继进行调试器上的优化,如下: