当前位置:首页 期刊杂志

基于CAN总线电气综合控制盒Bootloader软件的设计与实现

时间:2024-07-28

李 鑫, 李艳明, 王志远, 倪永亮

(1. 驻北京地区第六军事代表室,北京 100072;2. 中国北方车辆研究所,北京 100072)

在特种无人车辆研发过程中,多样的需求使得整车的控制策略需要不断调整,因此需要对相关控制单元进行程序更新.特种无人车辆小型化、轻量化的趋势使得车上部件安装比较紧凑,通常没有足够空间通过控制器上的程序下载口更新控制器内部应用程序,需常常拆卸控制单元来更新,那是非常麻烦的事情.当前特种无人车辆底层控制单元大多采用CAN总线进行信息传递,通过CAN总线实现控制单元程序的更新,会大大提高研发效率[1-2].本研究仅针对特种无人车辆电气综合控制盒,在飞思卡尔型号为MC9S12XEP100的硬件平台上实现Bootloader软件的设计,实现无需拆卸控制单元部件,无需使用下载器,仅通过车上的CAN总线接口便可实现控制单元应用程序的更新.

1 Bootloader软件介绍及方案

1.1 软件原理

嵌入式系统是以应用为中心、以计算机为基础、软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统.在嵌入式系统中,通常没有像BIOS(Basic Input Output System,基本输入输出系统)那样的固件程序,整个系统加电后运行的第一段软件代码为引导加载程序,也就是Bootloader程序.通过这段程序,可以初始化硬件设备、建立内存空间的映射过程,从而将系统的软硬件环境设定在一个合适的状态,以便为调用操作系统内核准备好正确的环境[3-4].

Bootloader程序在单片机上电/复位后在应用程序之前运行.通过设计Bootloader程序可以实现应用程序的更新,即Bootloader程序运行后判断当前是否需要进入更新应用程序状态.如果不需要更新,就直接运行Flash中原有的程序;如果需要更新,首先擦除旧的程序,然后从CAN总线接收新的程序,同时写入Flash中.接收数据时,需要进行校验,保证接收到的数据是正确的,避免更新的程序出现错误.

1.2 软件方案

本研究设计了一套基于CAN总线且基于UDS协议的Bootloader软件,其可以基于飞思卡尔16位单片机MC9S12XEP100和CodeWarrior 5.1开发环境实现在线更新ECU应用程序.

该软件方案是由一款运行于ECU内部的嵌入式下位机软件和一款运行于PC端的上位机下载软件组成,如图1所示,上位机下载软件可以按照应用需求,对下载过程中的各类通信参数、数据校验算法和安全访问算法等内容进行设置,与ECU进行重编程通信,实现对存储在ECU中的应用程序的更新.下位机嵌入式软件运行工作于ECU内部,通过CAN总线接口设备,在重编程过程中对上位机的重编程请求和一系列指令进行响应,完整接收需要下载至ECU中的应用程序,通过存储器驱动完成对应用程序的刷写更新.上、下位机建立通信的过程应提供安全访问解锁机制,程序和数据下载完成后应提供数据一致性校验机制,以确保ECU中应用程序更新的合法性和完整性.

图1 Bootloader软件系统示意图

使用时,首先通过BDM下载器将下位机软件烧写到ECU,使下位机软件运行于ECU内部;然后配合上位机软件,将ECU应用程序通过CAN总线通信接口设备Vector VN7600刷写至ECU内部.此后更新ECU内部应用程序只需要通过控制器CAN总线接口即可实现,无需使用下载器,在车上也就无需通过拆卸控制器.

2 Bootloader软件设计

2.1 软件架构设计

该Bootloader软件借鉴软件层次化设计以增加软件的复用性、可移植性.软件架构如图2所示.

图2 Bootloader软件架构

各模块功能如表1所示.

表1 Bootloader软件模块功能简述

2.2 软件文件设计

Bootloader软件模块文件组成如图3所示.

图3 Bootloader软件模块文件组成

Bootloader软件模块文件功能如表2所示.

表2 Bootloader软件模块文件功能

2.3 处理器存储区分配设计

2.3.1 存储区分配规划

应用程序和Bootloader存放在同一个ECU中.为了保证彼此正确使用,二者的设计按照表3所示的规则进行.

表3 系统存储器分配情况说明表

2.3.2 修改burner.bbl文件

如图4所示,在burner.bbl文件中添加“%ABS_FILE%.code.s19”文件信息,具体内容参见应用程序burner.bbl中语句OPENFILE“%ABS_FILE%.code.s19”下方所有内容.在编译时,此文件信息用于生成全局地址的应用程序.s19文件.

图4 %ABS_FILE%.code.s19内容

如图5所示,在burner.bbl文件中添加“%ABS_FILE%.data.s19”文件信息,具体内容参见应用程序burner.bbl中语句OPENFILE“%ABS_FILE%.data.s19”下方所有内容.在编译时,此文件信息用于生成全局地址的标定数据.s19文件.

图5 %ABS_FILE%.data.s19内容

2.3.3 修改Project.prm文件

修改启动代码地址.在Project.prm中删掉ROM_C000(已被Bootloader占用),将ROM_C000修改为ROM_4000.

修改标定数据地址.在Project.prm中添加PageUser INTO PAGE_C0.

2.4 应用程序设计

为了保证快速、高效地进行应用程序重编程功能集成,在开始集成之前,需要在应用程序设计如下接口:

1)CAN接收回调接口.当接收到一帧CAN报文时,驱动将接收的报文传递给此接口处理.2)CAN发送确认接口.当CAN驱动发送完CAN报文后,将发送结果传递给此接口确认.3)CAN发送接口.集成后的应用程序需要向上位机发送一些响应报文,因此需要CAN报文的发送接口.4)MCU影复位接口.使用硬件看门狗溢出或非法指令等形式实现.5)RAM读写接口.Bootloader重编程请求标识及复位标识存放在内部RAM中,因此需要可支持单字节读写的RAM接口.6)检查编程条件接口.此接口用来检查本次重编程是否可以继续进行的关键,在某些条件下不能进行重编程操作,比如车速不为零,等等.

2.5 集成文件设计

为了保证应用程序能够正确地进行重编程,它需包含重编程处理文件.文件名及内容描述如表4所示.

表4 文件名及内容描述

3 测试结果和分析

对本设计的CAN总线Bootloader软件进行测试.将Bootloader软件和集成后的应用程序下载到电气综合控制盒后,通过对电气综合控制盒的功能进行测试,验证下载到控制器内部的Bootloader软件和集成后的应用程序是否完整和正确.

测试的软硬件环境及工具如表5所示,测试硬件连接关系原理如图6所示,测试环境如图7所示.

表5 软硬件环境及工具

图6 测试连接关系原框理图

图7 测试环境

首先利用软件Codewarrior 5.1和硬件BDM下载器将Bootloader下位机嵌入式软件烧写到处理器内部;然后通过上位机和硬件VN7600将集成好的应用程序通过CAN总线下载到控制器内部;接着利用软件CANoe 11.0和硬件VN7600模拟电气综合控制盒的控制指令,同时利用万用表和示波器实现对相关电压参数的测量并且对电气综合控制盒上传状态进行监控.

测试过程中,应用程序通过CAN总线下载顺利;电气综合控制盒电源灯常亮,呼吸灯闪烁,状态正常;电气综合控制盒在控制下工作正常,CAN总线上传状态数据正常.

测试结果表明,电气综合控制盒工作正常,应用程序运行正常.

4 结束语

基于CAN总线的Bootloader软件能够实现电气综合控制盒应用程序的快速更新,大大提高了研发效率,也极大地方便了电气综合控制盒应用程序的后期更新和维护.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!