基于CAPL的CAN控制器Bootloader上位机系统设计
蔡营;王永峰;范志容;岳意娥;杨丽莎;苏芮琦
【摘 要】为了减少因拆卸控制器而导致的维护成本增加,方便车载CAN控制器进行在线程序升级,在整车网络设计时,要求所有的CAN控制器能够支持Bootloader程序刷写功能,通过诊断口即能完成程序刷写;Bootloader上位机软件能够集成数据刷写过程中的所有诊断服务请求,通过直接导人要刷写到控制器内部的数据流文件,完成程序数据在线更新功能.通过CANoe软件自带的CAPL语言实现刷机刷写上位机程序设计,提供简单明了的用户操作界面,能够很好地完成控制器程序的刷写任务.实际测试结果表明,应用CAN网络测试工具及该上位机软件,能够成功刷写程序,具有较高的有效性和可靠性.
【期刊名称】《汽车电器》
【年(卷),期】2017(000)003
【总页数】5页(P68-72)
【关键词】CAPL语言;Bootloader;上位机;测试验证
【作 者】蔡营;王永峰;范志容;岳意娥;杨丽莎;苏芮琦
【作者单位】东风汽车公司技术中心,湖北武汉430058;东风汽车公司技术中心,湖北武汉430058;东风汽车公司技术中心,湖北武汉430058;东风汽车公司技术中心,湖北武汉430058;东风汽车公司技术中心,湖北武汉430058;东风汽车公司技术中心,湖北武汉430058
【正文语种】中 文
【中图分类】U463.6
在车载CAN控制器开发的过程中,需要多次向ECU中烧录更新程序。传统软件的更新方法是通过BDM调试接口进行程序下载,该方法的数据下载速度慢,并且在控制器已安装到整车上后,拆解控制器非常不便利,增加了系统维护成本。为了更快、更便捷地完成各控制器的软件升级,在整车网络设计时,要求所有的控制器具备在线数据刷写能力,在不需要拆解控制器的情况下,通过整车诊断口完成程序升级。Bootloader是在主程序运行前的一段小程序,主要完成应用数据下载和更新任务。Bootlaoder上位机程序为软件升级提供一个简单的操作窗,即数据监控窗口。本文根据控制器的Bootloader数据刷写流程,利用CA
Noe带CAPL编程语言,完成控制器Bootloader数据刷写上位机程序,实现车载控制器软件在线刷写功能。
1.1 CANoe 软件简介
CANoe是由德国Vector Informatik公司推出的一款总线开发专业工具,在CAN总线系统的设计、建模、仿真、开发、测试及验证当中有着广泛应用,能够为客户提供强大且完整的CAN总线网络开发仿真分析解决方案。目前,CANoe在全球各汽车整车厂及零部件厂中使用广泛。CANoe具有开放式的架构,能解决复杂的任务,并适用于特殊的应用。它为整个分布式网络的仿真和分析,提供了基于图像和文本的建模和评估窗口(evaluation windows)。针对监控和控制任务,以及生产装配过程,创建直观的用户控制平台。同时,还集成了用于测试的“Test Feature Set”和用于诊断的“Diagnostic Feature Set”。CANoe提供针对生产周期中所有阶段的专业功能,包括模型创建、仿真、功能测试、诊断和分析。
1.2 CAPL 简介
CAPL全称为Communication Access Program ming L anguage,即CAN总线访问编程语言,是一种面向事件的编程语言,它的语法与C语言基本类似。在CANoe软件中,集成了CAPL编程环境,通过CAPL编程能够对系统环境进行仿真和添加模拟节点,实现模拟节点与实际节点间通信,测试新节点的功能性和可靠性;另一方面,通过CAPL对网络上的数据通信进行分析优化,实现用1个网关程序来连接2种不同的总线,保证不同类型总线之间的数据通信。CAPL程序与数据库结合起来,通过调用数据库中的信号、消息、环境变量和实际测试环境联系起来,从而能够实时监测总线上的数据通信、接受总线上的控制信息,使得模拟面板上的控件进行动作;也能够通过总线发出控制信息,控制外部环境动作,从而支持开发全仿真、半实物仿真、测试分析全实物系统3个仿真阶段,对节点的仿真很重要之处就是准确地描述节点在总线上的动作。
CAPL是一种基于事件建模的语言,所支持的事件包括:总线事件、属性事件和时间事件3大类。CAPL所支持的所有事件类型、程序执行条件、语法结构等,如表1所示。
2.1 BootLoader数据刷写定义
Bootloader为引导加载程序,是嵌入式系统在上电后运行的第1段代码[1]。当CAN 控制
器进行上电复位后,会立刻执行Bootloader代码,完成CPU硬件设备的初始化以及系统所需的环境变量设置,启动控制器内核。上位机Bootloader主要用于为CAN控制器读取并下载升级程序代码,该代码一般以hex或S19文件格式存储。上位机Bootloader数据刷写的前提是控制器已实现下位机在线数据刷写功能。
2.2 CAN 控制器Bootloader 数据刷写流程
在整车网络开发过程中,为了方便控制器在线更新程序,减少人工维护成本,要求所有CAN控制器必须支持Bootloader数据刷写功能。在ISO15765-3标准中,已对Bootloader数据刷写流程进行规范化要求,在此基础上对流程进一步进行细化,对所支持的诊断服务、诊断先后顺序进行了规定。Bootloader数据刷写详细流程及涉及的诊断服务,如图1所示。
流程中所涉及的诊断服务依次如下。
1)0x10 DiagnosticSessionControl(诊断模式控制):客户端通过该诊断服务切换CAN控制器的诊断会话模式,控制器一般支持的诊断会话模式包括默认模式、编程模式、扩展模式和下线检测模式。
2)0x85 ControlDTCSeting(控制DTC设置):客户端通过该服务来开启或关闭CAN控制器故障码记录功能。
3)0x28 CommunicationControl(通信控制):客户端通过该服务来开启或者关闭CAN控制器报文发送、停发功能。
4)0x27 SecurityAccess(安全访问):通过该服务,获取CAN控制器的访问权利;只有通过安全访问后,才能对控制器进行数据写入等操作。
5)0x31 RoutineControl(例程控制):客户端通过该服务控制CAN控制器的例程、启动例程、停止例程以及请求例程结果。
6)0x34 RequestDownload(请求下载):客户端使用该服务初始化从客户端到CAN控制器的数据发送,接收到请求后,控制器会有数据接收的响应。
7)0x35 RequesUpload(请求上传):客户端使用该诊断服务初始化从CAN控制器到客户端的数据发送,接收到该诊断服务后,CAN控制器有数据上传的响应。
8)0x36 TransferData(数据传输):客户端使用该诊断服务来请求CAN控制器上传/下载数据。
9)0x37 RequestTransferExit(请求退出传输):客户端通过该诊断服务停止与CAN控制器之间的数据传输。
上位机的Bootloader程序主要用于CAN控制器读取并下载用于控制器数据更新代码的S19文件。本文中设计的CAN控制器Bootloader上位机系统采用CAPL语言,使用Vector的CANcardXL(045128)和CANcab251 opto作为CAN硬件接口,用于与下位机CAN控制器进行握手、应答、数据等[2]。
在线代码运行器
3.1 S19文件
S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称为Motorola format for EEPROM progra m ming。S-record每行最大是78个字节,156个字符,包括数据、地址、计数、类型及校验和等信息[3]。
3.2 CAN控制器Bootloader上位机系统功能及软件实现
本文中所设计的CAN控制器Bootloader上位机系统采用CAPL语言开发,提供S19文件读取控制界面,S19文件解析和CAN 通信功能。
1) S19文件读取控制界面:通过该界面,选择CAN控制器升级程序的S19文件,其代码设计如下。
//程序执行时,弹出S19文件读取图形界面
上位机读取S19文件的图形界面,如图2所示。
2)S19文件解析功能:CAN控制器Bootloader上位机S19文件解析模块,包含了S19文件读取、文件内容解析、报文发送和 通信程序。
3)CAN通信:上位机的Bootloader程序加载S19数据文件,并通过CANcard和CANcab251作为硬件接口和传输介质,通过整车诊断口与下位机的CAN控制器建立通信连接,完成刷写数据传输、校验以及模式控制等功能。整个通信过程应该遵守控制器在线数据刷写流程。部分实行代码如下所示。
为了验证CAN控制器Bootloader上位机系统的可靠性,本文将设计好的程序以及用于更新程序的S19文件,在整车上通过诊断口对控制器进行在线程序升级及测试验证。测试设备包括:带CANoe软件计算机,整车诊断口连接线束,CANoe工具(CANCase、CANCard)。控制器Bootloader程序刷写测试电路图,如图3所示。
测试方法及步骤如下:①将电脑通过CANcard和CANcab 线连接到整车的诊断接口(OBD);②整车上电到ON挡,启动CANoe ,调用CAN控制器Bootloader刷写程序;③通过面板打开S19文件读取界面,选择要升级的S19文件,点击“Start”按钮,开始升级程序;④记录整个刷写过程中的CAN数据文件,用于数据回放及测试问题分析;⑤整车下电到OFF挡后,重新上电到ON挡,进行ECU升级后的版本确认和性能核查。
测试结果表明,基于CAPL实现的CAN控制器Bootloader上位机系统在控制器在线升级测试过程中,操作简便、高效,能很好地满足控制器在线程序刷写需求。
CAN控制器Bootloader在线程序刷写功能,能够有效降低因控制器软件维护、更新所带来的拆解成本,完成实时在线程序升级。本文设计的基于CAPL编程的CAN控制器Bootloader刷写程序,能够很好地完成该项功能,但限于CAPL语言在图形界面上的短板,整个上位机
软件系统界面不够美观。如果能够利用C++或C#语言对CANoe接口的支持,采用多线程编程方式,可以对界面进一步优化和美观,开发更多过程监控窗口以及故障在线分析功能,将会进一步提高该Bootloader上位机软件的实用性,这将努力在下一版软件中实现。