在“新三化”的背景下,车用MCU芯片正在快速升级换代,供应链本地化也催生搭配ARM内核的车规级MCU不断落地。相关的MCU产品日益丰富,逐渐覆盖雨刷、车窗、车灯等车身控制模块,以及汽车智能化所需的智能座舱、ADAS控制器等。
01
趋势
随着软件的复杂度提高,ARM内核MCU的测量标定正从低速场景过渡到高速场景,ECU内部测量信号的数量和频率越来越大。当数据吞吐量超过CAN总线带宽时,需要新的高速测量接口。针对以上需求,Vector为用户提供系统的可扩展的高速测量方案。
02
系统概述
目前主流的ARM内核的车规级MCU是使用Cortex-M系列处理器,用于安全相关的控制功能。M核的最高时钟频率通常不到400MHz,功耗相对较低。拥有复杂功能的网关控制器或者域控制器上的多核异构MCU还可能集成Cortex-A系列处理器,以满足复杂的操作系统和高性能计算的需求。不同ARM处理器及其组合可以按照处理器核心的类型适配具体的测量方案。
M核->通过SWD接口实现高速测量与标定
具有M核的MCU测量标定和传统MCU类似,通常没有以太网接口或者没有足够的资源去集成以太网驱动。但是在开发阶段,MCU的调试资源是开放的,利用SWD(Serial Wire Debug)调试协议可以实现高速数据传输。转接板VX1543B POD(Plug-On Device)兼容SWD调试接口,而且体积紧凑可以轻松集成到ECU上。对于测量标定工具CANape来说,POD使用方法和传统XCP测量没有差别,因为连接POD和标定工具之间的VX1000基础模块会将通过SWD传输的数据打包成标准的XCPonEthernet报文。VX1000详细介绍参考https://www.vector.com/vx1000。
图:VX1000系统连接
VX1543B Serial POD是一个小型的高性能电路板,直接连接到ECU中的MCU调试接口。由于尺寸小且坚固耐用,可以用于紧凑且要求苛刻的安装环境。用户可以直接将POD封装在ECU壳体内部,也可以单独封装POD并通过螺纹连接在ECU壳体外部。
POD的详细参数如下:
尺寸(长/宽/高) | 23 x 24 x 7 mm(不包含壳体封装) 53 x 27.5 x 16 mm(外壳无安装螺纹) |
重量 | 3g(不包含线束和壳体封装) |
供电 | 通过VX1000基础模块 |
功耗 | 0.8W在最高工作温度下 |
工作温度 | -40°C ~ +115°C |
表:VX1543B技术参数
A核->基于XCPonEthernet实现高速测量
与标定
集成A核的MCU通常会运行复杂的操作系统,应用数据吞吐量更大,传统的调试接口不再适用。不过这类MCU的资源丰富,可以在ECU软件里直接集成XCPonEthernet。以S32G为例,可以分别通过XCPonEthernet和POD对异构多核系统进行测量。
图:S32G的高速测量方案
03
针对SWD接口的VX1000集成详解
集成配置
1) 首先将VX1000驱动代码集成到ECU应用程序中。集成方法非常简便,Vector为用户提供相应的源代码和集成手册。VX1000驱动代码通常只在开发阶段使用,到量产阶段会被移除。用户可以通过配置文件VX1000_cfg.h对VX1000应用驱动程序的功能和行为进行配置。该文件以宏定义形式配置所有选项,默认情况下大部分都被注释掉,用户只需激活适当的宏定义,配置文件本身也带有大量功能描述。
图:VX1000集成配置流程
2) 将包括VX1000驱动代码在内的软件刷写到ECU后,用户可以将POD连接到ECU的SWD调试接口。SWD使用DAP(Debug Access Port,调试访问端口)总线访问数据。在DAP总线上有一个主设备(DP调试端口,Debug Port)和多个从设备(AP访问端口,Access Port),实际通讯仅使用两根信号线:
SWDCLK:主机发送的时钟信号。由于处理器时钟和SWD时钟之间没有关系,因此频率选择取决于主机接口。根据实际情况,最大调试时钟频率可以在20MHz~80MHz之间。
SWDIO:携带与DP调试端口交互数据的双向信号。数据由主机在SWDCLK信号的上升沿期间设置,并由DP调试端口在SWDCLK信号的下降沿期间采样。
有些MCU的调试接口是串行/JTAG调试端口(SWJ-DP),可以使用JTAG或SWD来访问DAP总线,重用TMS和TCK JTAG信号分别传输SWDIO和SWDCLK信号。只要发送特定序列数据就能从JTAG接口切换到SWD接口。
在配置工具VXconfig中,可以配置POD的工作电压和频率。SWD可以用来上传和下载数据,对应XCP中的测量和标定功能。
图:POD的配置界面
VXconfig还需要配置基础模块的参数。通常基础模块通过读取gVX1000结构体实现与ECU的握手通讯,对齐ECU的代码集成状态。在VX1000驱动程序会定义这个结构体,VX1000必须知道ECU应用程序中该结构的地址。用户可以在生成的应用程序链接器映射文件中找到该地址。
图:基础模块(Base Module)的配置界面
3) 将正确配置写入到VX1000设备后,测量标定工作遵循CANape的标准操作,基本输入是标定数据库A2L文件。A2L文件中包含和底层驱动相关的接口信息,例如IP地址和DAQ测量的通道编号等。用户可以通过ASAP2Studio手动编辑A2L文件,或者利用ASAP2 Toolset编写脚本来自动创建A2L。
4) CANape中可以根据需要具体配置测量和标定窗口。注意:测量总带宽是有限制的,详细参考3.2节。
测量性能
VX1000通过SWD接口进行DAQ测量的方法称为OLDA(Online Data Acquisition)。DAQ测量开始前,VX1000通过XCP从CANape接收DAQ配置,包括通过哪些事件(DAQ Event)测量哪些信号(DAQ Table),测量开始后MCU会按照相应的配置周期性或者按事件触发上传数据。
在测量配置初始化阶段,DAQ信息是由VX1000以传输表(DAQ Table)的形式写入MCU的数据索引表中(gVX1000结构体的一部分)。
当测量事件触发时,ARM核使用VX1000驱动程序将测量数据从RAM中的实际存储位置复制到VX1000驱动程序设置的测量缓冲区(OLDA Memory)。此后,VX1000以内存直接访问的方式(DMA)从缓冲区(OLDA Memory)中检索数据。
1)测量性能的约束部分来自MCU的ARM核性能和RAM内存资源。为了满足更高性能的测量,通常需要预留更多的测量缓冲区(OLDA Memory)和CPU负载。CPU负载的消耗是由数据拷贝产生的,通常每测量1MB/s的数据需要消耗大约3%的CPU负载。相对于在MCU中直接集成XCPonEth的方法效率更高。
2)在MCU资源充裕的情况下,测量总带宽取决于SWD的实际通讯频率。根据芯片类型和电磁兼容环境条件可以配置在20MHz~80MHz之间。以40MHz为例,有效测量带宽可以达到约2MB/s,例如1ms周期可以测量总共2000个1Byte的信号。
图:OLDA测量方式
04
结论
VX1000高速测量标定解决方案满足了基于ARM内核的车规级MCU对于测量数据不断增长的需求,提高功能开发的效率。开发人员既能够在台架测试中访问ECU内部数据,也可车载使用。