随着时间的推移,汽车制造商和技术公司致力于推动汽车技术的边界,以提高车辆的性能、安全性、效率和智能化水平。这种技术演进导致了对更多和更复杂测试设备的需求,以确保车辆在各种条件下能够安全、可靠地运行。
而随着国内新能源汽车的崛起和大量厂商测试需求的井喷,厂商需要采购大量的测试设备来完成这部分的测试目标,同时需要搭建一整套自动化测试的环境来达到更高的测试效率和一些压力测试、性能测试的目标。由于现在主机厂大多数的EE架构都是采用了域控的方案,因此除了过去通常的CAN、CANFD总线通信以外,目前大多数的厂家还需要测试车载千兆以太网1000Base-T1的数据报文的一致性。
在自动化测试的环境中,通常都会采用工控机加上板卡的组合,对台架进行数据的模拟和回环数据的断言,这套框架其中采用的硬件设备大多为Vector的VN系列设备。VN系列的设备,除了CAN,CANFD总线以外,还有LIN,车载以太网的丰富接口可以完成板卡的对接。而框架的软件部分,由于CANoe软件的证书费用昂贵,厂家通常自己使用Python作为开发语言来完成自动化。
目录/Catalog
● CANoe驱动硬件的原理是什么?
● 什么是XL 设备驱动库?
● XL 设备驱动库如何集成使用?
● 如何在Linux 系统下集成驱动库
CANoe驱动硬件的原理是什么?
图1. CANoe 软件调用框架图
CANoe具备了三种调用硬件完成仿真、处理信号的能力,其中包含了应用层的调用,交互层的调用,以及驱动层的调用,这三种调用各有特点,可以满足不同场景的使用需求:
Application应用层调用,外部调用CANoe软件,实时性低,操作性复杂,类似大型的按键精灵调用。
IL交互层(传输层)调用,和信号、数据结合绑定,需要用户自己开发dll导入CANoe,使用要求较高。
CAN Driver 驱动层调用,实时性可以保证,但是不具备信号级的仿真、解析能力,所有逻辑需要自己实现。
本次,基于自动化测试的实时性考虑,我们主要介绍XL 设备驱动库的调用。
什么是XL 设备驱动库?
XL 驱动库是Vector公司提供的可以继承VN系列硬件设备的软件驱动库。该驱动提供了一份打包的Windows 下的vxlapi.dll 文件,结合给出的头文件中的函数功能定义,就可以允许用户通过大量提供的函数和接口,来集成驱动的方式,直接在自己的软件框架或第三方框架内调用VN系列的硬件。
如图2所示,Vector的各种总线设备,都可以通过XL-Driver-Library的驱动库,集成到各种应用层软件中去。这一个驱动层即为虚拟总线接口,可以满足各种数据字节的发送和接收方法,给到上层应用层去做解包、数据处理,虚拟信号组包后发送等等事件。
图2. XL 设备驱动库的调用原理
XL 设备驱动库如何集成使用?
在XL 设备驱动库中,有非常多的通用配置方法以及总线配置方法,用户通常需要按照Vector预设好的操作流程,来完成整个硬件设备链路的调用。如图3的CAN总线仿真、数据接收流程图为例:
图3. CANoe软件调用XL-Driver-Library流程图展示
在该展示图中,可以发现,用户需要进行较多的配置去提前完成设备的通道选择,采样率配置后,才能进行CAN数据的收发。这种配置无疑是有弊端的,因为这些配置在自动化测试中,如果需要进行动态的选择和更改,就需要将整个流程重新走一遍。而这种提前设置固定采样率的方式会将所有的通道用同样的采样率去进行信号取样,这种处理方式无疑会加重CPU的计算负担。
同时,由于vxlapi.dll 是Vector编译好提供给Windows平台使用的,自动化测试常用的Linux平台中完成集成无疑大大增加了复杂度,用户只能使用虚拟机去完成设备的调用。知迪汽车为了解决该问题,采用了全新的设备以及驱动去覆盖并完成相同的功能。
如何在Linux 系统下集成驱动库
图4 展示了ZD-Box2i 作为接口板卡的形态,其中不仅包含了8路CAN/CANFD 通道,也包含了4路LIN通道,同时还兼具4个千兆/百兆以太网接口,可以用一台设备就完成更多的总线接口类型要求。
图4. ZD-Box2i 接口板卡设备
同时,考虑到测试人员调用的简易型,和已有的测试框架的集成便利性,ZD提供了自研的驱动层方案,即使用ZD-driver 来完成硬件设备ZD-Box2i的集成。同时给出了兼容XL-driver-library的方式,可以另自动化测试框架,基于现有的脚本,以及ZD-Box2i,去完成所有总线的测试需求。
图5. ZD-driver 驱动层适配和使用方式
以图6为例,图6.1为Vector软件手册中关于CAN总线循环100次发送id为0x04 报文的示例。图6.2 为知迪的驱动 ZD-Driver关于CAN总线循环100次发送id为0x04 报文的示例。由于ZD-Driver不仅可以运行在Linux平台,也可以运行在Windows平台,因此用户不需要考虑操作系统的限制,同时知迪是基于自己的驱动,在上层基于XL-driver-library的头文件做了一层使用上的封装,可以让用户在不改变现有代码逻辑的基础上,直接集成驱动和硬件设备,因此可以让用户在现有的框架下,直接切换到Linux平台去使用。
而由于XL驱动库本身的性能和设计缺陷,为了更好的使用知迪的硬件设备做集成的前提下,也更推荐直接使用ZD-driver完成硬件设备的直接驱动调用。
图6.1 XL-Driver-Library 发送100次CAN报文的方法调用
图6.2 知迪调用ZD-Drvier驱动ZD-Box2i 发送100次CAN报文的方法调用
知迪作为中德合作的国际化企业,凭借中德两地的科研优势与资源互补,已经成为车辆总线信号领域的知名技术服务伙伴,多年来为BBA等众多国际知名汽车品牌、产业生态客户提供了包括标准化产品、定制化研发、中德协同交付等服务。秉持“让研发更可靠、更高效”的愿景,知迪将持续聚焦汽车核心技术,助力汽车及出行产业的智联化技术革新与可持续发展。