CCP 2.1规范发布至今已有23年,XCP 1.0规范发布以来也已经过去了19年,基于微控制器(MCU)的测量与标定已经相当成熟。但是近年来汽车电子发展迅猛,越来越多的中央域控以及HPC(High Performance Controller)采用SoC(System on Chip)作为硬件平台,AP(Adaptive Platform AUTOSAR)作为中间件,与传统单片机的运行机制有巨大差异,且目前没有对应的标定规范发布,如何对运行于AP上的应用进行标定成了大家面临的一个问题。
传统CP(Classic Platform AUTOSAR)ECU的特点是:ECU中的应用数量固定,使用C语言开发,数据的类型和数量定义清晰。代码编译链接后运行在ROM中,变量有唯一的固定地址。
AP ECU的特点是:ECU中运行的应用支持动态安装,数量不固定,使用C++语言开发。系统为应用的运行提供虚拟内存,应用的运行地址并不固定(由操作系统动态分配)。
对于CP ECU,标定工具CANape可以通过A2L文件确定各个变量的地址,通过标准的XCP协议进行参数修改和观测;但是对于AP ECU,由于并不知道变量的地址,因此无法对变量修改或测量。
Vector基于实际项目中的经验,总结如下两种AP标定方式,供大家参考。
> 集成XCP协议栈
这里将App作为一个单独的ECU来对待,每个需要标定的App都要集成一个XCP协议栈,同时要求App中的测量和标定对象有固定的地址。设置每个App的TCP/UDP Socket,使用CANape进行连接,CANape可以同时连接多个XCP Slave。
与传统标定不同,AP的App使用虚拟内存,虚拟内存的地址空间由系统为App进行分配,在App启动前,App的起始地址是未知的,而且每次App启动后的起始地址都可能不一样。如果知道App的起始地址,同时App中的测量标定对象具有固定的地址,即可确定全局地址,CANape可以根据此地址进行测量和标定。
XCP If*中有这样的函数,在App启动后,可以计算App的起始地址并传给CANape,这样CANape可以确定测量和标定对象的全局地址。Vector提供开源XCPlite代码,支持Linux 32/64位系统和Windows 32/64位系统。如需下载,请访问:https://github.com/vectorgrp/XCPlite
> SOME/IP
SOME/IP广泛应用于AP平台,利用SOME/IP协议也可以实现测量和标定。使用SOME/IP的setter服务可以设置参数的值,SOME/IP的Event Notification服务可以实现信号、结构体或对象的周期测量。相对于XCP,SOME/IP需提前将测量与标定的对象定义在数据库ARXML中。
CANape作为客户端提供SOME/IP模块,可主动订阅SOME/IP Server提供的服务。只需要选择网络,设置IP地址,加载数据库等操作,即可完成SOME/IP设备的创建。标定和测量的操作与传统方式一样,不再赘述。
END
近期举办的在线研讨会
维克多中国
微信号|Vector维克多
Bilibili | 维克多汽车技术
info@cn.vector.com
021-2283 4688

