变速箱控制系统Bootloader设计与实现

2020-02-02 03:25郭帅孙晓鹏李苑玮
电子技术与软件工程 2020年17期
关键词:用户程序变速箱上位

郭帅 孙晓鹏 李苑玮

(潍柴动力股份有限公司 山东省潍坊市 261000)

Bootloader 作为引导加载程序,是变速箱控制器(TCU)应用程序在线升级不可或缺的一部分,然而大多数研究中是将Bootloader 程序与用户程序分开写入变速箱控制器芯片内,这使得变速箱控制系统的开发便捷性降低,而在工程实际应用中,往往需要简化控制系统的开发流程,减少软件的开发时间。

开发人员对Bootloader 进行了大量基础研究,发现Bootloader与芯片内存结构是强相关的,不同控制器芯片对应的Bootloader内存及协议是完全不同的。乐志国等[1]设计了基于恩智浦MC9S12XDP512 控制器芯片的Bootloader 系统,并设计了上位机操作系统,实现了软件在线编程;刘矗等[2]使用自定义的CAN总线传输协议,设计了基于恩智浦16 位微控制器的通用CAN Bootloader,实现该类控制器芯片的通用化设计;戚长城等[3]设计了基于恩智浦MC9S12G128 的Bootloader 系统,仿照电脑U 启动的模式,将Bootloader 目标代码存储于U 盘中,节省了控制器的内存空间。虽然这些研究从不同角度,阐述了基于各类控制器芯片的研究方法,但这仅将Bootloader 程序作为个体进行研究,没有将用户程序和Bootloader 进行融合考虑,不能体现Bootloader 技术在变速箱控制系统开发中的优势,不能满足变速箱控制器应用程序的开发效率。

本文采用自定义的CAN 数据传输协议,设计一套融合用户程序和Bootloader 程序的Bootloader 系统,使用Flash 加载执行的方法对TCU 的Bootloader 进行设计,将周立功USBCAN-II 智能CAN 接口卡作为连接硬件,通过VB6.0 开发上位机系统,同时搭建一个基于恩智浦MC9S12XEP100 单片机的硬件平台,并对所设计的Bootloader 系统进行功能测试。

1 Bootloader原理

Bootloader 是嵌入式控制器上电后运行的第一段程序,它根据指令对数据升级和应用程序执行两个功能进行选择[4,17]。所设计的变速箱控制系统Bootloader 以CAN 总线技术为基础,分为变速箱控制器Bootloader 程序和上位机Bootloader 程序两部分。

2 变速箱控制器Bootloader设计

通常,Bootloader 严重依赖硬件,不同控制器之间Bootloader无法做到完全移植,所以对于嵌入式系统而言,不同主控芯片的硬件平台Bootloader 的实现也各不相同,但是其思路和框架是基本一样的[6]。本文设计的变速箱控制系统的Bootloader 主要有:Bootloader 初始化流程、CAN 通信模块设置、FLASH 擦写模块设计、重建用户程序中断向量、融合Bootloader 程序和用户程序。

图1:Bootloader 初始化流程

图2:MSCAN 初始化流程

图3:程序融合流程

图4:升级程序成功界面

图5:Bootloader 硬件平台

图6:用户程序的S19 文件

2.1 Bootloader初始化流程

一般在没有Bootloader 的系统中,程序上电后,经过底层初始化,会直接跳转到用户程序的main 函数内执行,而有Bootloader的系统上电后,首先要根据指令状态,在用户程序和Bootloader 之间进行选择。通常,进入Bootloader 程序的情况一般有三种:在复位时,对特定通信口的关键字检测;在复位时,对特定硬件IO 检测;在运行时,对特定通信口的关键字检测。由于第一种方法属于超时机制,需要编写代码实现,比较复杂,第三种方法需要特定的协议栈做支持,所以选择第二种简便有效的方式。

Bootloader 初始化流程如图1所示。单片机的P 端口第0 引脚(PP0)接按键,系统复位后,获取复位中断地址处引导加载程序首地址,检测到指令按键按下,则执行Bootloader 程序;否则,检测用户程序复位中断地址,防止控制器内只有Bootloader 程序而没有用户程序的情况发生。

2.2 CAN通信模块设置

通信模块负责变速箱控制器与上位机间的指令交互,以及数据升级过程中数据文件的传输。本文通讯程序采用CAN 通信的方式,通过对MC9S12XEP100 单片机CAN 通讯模块的寄存器进行配置[7,8],实现正常的指令交互和数据传输。

MSCAN 初始化流程如图2所示。为了提高数据传输的效率,根据CAN 通信协议,选取合适的时钟源,本文设计的TCU 选取振荡器作为时钟源,经过预分频器分频处理得到的CAN 通信波特率为250Kbps;为了保证数据传输的准确性,设置CAN 通信滤波的代码和掩码,选取扩展帧并设置相应滤波器,使TCU 仅接收上位机发送的CAN 报文。

2.3 FLASH擦写模块设计

MC9S12XEP100 单片机在Flash 擦写过程中,对时钟和晶振有严格的要求。节点使用的晶振必须足够高,才能保证对Flash 扇区的正常操作。FLASH 总线时钟是外部振荡器时钟经过时钟分频寄存器(FDIV)分频得到的,晶振时钟的分频寄存器需要合理设置,太高太低,都会导致对内存的操作产生问题。所以对于恩智浦EP100 微控制器来说,将外部晶振设为16MHz,FDIV 设为0x0F。

MC9S12XEP100 单片机的写入操作以8 个字节为基础,并且只能以8 个字节对齐的方式进行写入;在擦除时,最小单位为扇区,每个扇区大小为256 字节,不能擦除一个字节或者小于一个扇区的内容[9]。

2.4 重建用户程序中断向量

为了实现程序在Bootloader 模式和用户程序模式之间转换,Bootloader 程序内需重建复位中断向量。对于恩智浦MC9S12XEP100 单片机来说,在芯片末尾地址的这两个字节的内存空间处存放的是用户程序的复位中断向量的地址[10-13]。在没有Bootloader 的程序内,上电复位后,芯片会从该地址处读取用户程序的首地址开始运行;在有Bootloader 的程序内,该地址里存放的不再是用户程序的首地址,而是引导加载程序的首地址,为了防止与Bootloader 中断地址产生冲突,用户程序的复位向量被放在了单独开辟的一块内存中,使单片机上电复位后先判断引导加载程序。

企业存在对HSE管理体系运行监督不严格、不系统、不全面的实际问题,难以实现对HSE管理体系运行的有效调控,出现了监督缺位、工作缺失等一系列问题。代表性的问题有:一是,企业没有对HSE管理体系运行的重点监督体系,出现对HSE管理体系实际运行的控制不良、监督不系统等问题,特别是对于HSE管理体系运行的细节难以达到全面控制,被表面性的日常工作所困扰而造成监督效果和功能不良等问题。二是,监督体系中没有将预防思想作为监督工作的第一原则,“以罚代管”、“以查代管”的问题频繁出现,难以确保HSE管理体系全面、系统地运行,产生了HSE管理体系运行的危害性和危险性。

复杂的Bootloader 程序自身会用到定时器中断、CAN 的接收和发送中断等,因而Bootloader 程序内需要重建中断向量表,与用户程序的中断进行区分,使两个程序的中断不至于产生冲突,即重新设置中断向量表基址寄存器(IVBR)。本文设计的Bootloader程序采用在线编程的方法改变中断函数的入口地址,将用户程序中断函数的入口地址改为所分扇区首地址,使用户程序与Bootloader程序使用不同FLASH 区间来定义中断向量表,使两段程序的中断互不影响[14,15]。这种方式虽然要在Bootloader 程序内对用户程序的中断向量表进行搬移,但是不需要更改用户程序内中断向量表的存储区间,使用户程序和Bootloader 程序的中断可以完美的融合。

表1:Bootloader 上位机协议

图7:芯片内存数据

2.5 融合Bootloader程序和用户程序

Bootloader 和用户程序融合的过程如图3所示。

图3 中,程序融合需要将用户程序作为基程序,程序融合过程中,会屏蔽用户程序中的复位中断向量,同时定位复位向量到用户程序中的内存地址的末尾,使芯片上电复位后进入模式选择状态,同时用户程序的链接库文件需要链接Bootloader 程序的S19 文件,并且要解除FLASH 保护,以便对芯片的FLASH 进行编程,最后通过BDM 下载融合程序。

3 Bootloader上位机设计

Bootloader 上位机主要作用是将编译生成的S19 文件以数据形式发送给TCU,实现变速箱控制器对内存的擦除和写入的功能。

3.1 通信协议制定

Bootloader 是基于通信方式开发实现的,因而需要有一套专属的数据传输协议。上位机与变速箱控制器的通讯协议见表1,主要功能指令有:开始Flash 擦除,Flash 擦除结束、开始Flash 编程、Flash 编程结束等。

报文ID 参考1939 协议进行自定义开发,0x1000EFD0 和0x1000EFD1 是上位机发送的命令指令和S19 数据,0x1000EFD2是TCU 反馈给上位机的刷写状态,使用户可以直观了解程序升级过程。

3.2 Bootloader上位机功能

上位机升级程序界面如图4所示。上位机与控制器连接成功后,在升级程序过程中,通过左面的人机界面的Message 窗口,可以实时更新当前上位机与控制器的运行状态;通过右面人机界面的Data窗口,可以观测当前上位机给控制器发送的程序数据;期间出现故障时,也可以方便的定位问题原因。

4 结果验证

为验证设计的Bootloader 的可靠性,搭建Bootloader 硬件平台,如图5所示,该平台以某变速箱控制系统硬件为基础,主芯片为MC9S12XEP100。将融合后程序通过BDM 写入变速箱控制器硬件平台内,上电复位之后可以正常选择进入用户程序或是Bootloader程序,无需再进行用户程序升级,实现通过一次刷写,该控制器同时含有Bootloader 程序和用户程序,图5 即为用户程序正常运行的界面。

为验证融合了用户程序的Bootloader 在程序升级方面的功能可靠性,单独选取一版用户程序,通过该Bootloader 下载进单片机内。编译后用户程序的S19 文件如图6所示,Bootloader 程序下载到控制器芯片内存中的数据如图7所示。通过将图6 和图7 内存中的数据进行对比,二者数据完全一致。

5 结论

本文基于Bootloader 程序和用户程序的融合设计了Bootloader 上位机和变速箱控制器端Bootloader,并搭建了基于MC9S12XEP100 的变速箱控制器硬件平台。通过实测试验进行了变速箱控制器融合程序功能验证,结果表明所设计的融合的Bootloader 能够快速、准确、方便地实现变速箱控制器应用程序的在线升级,可以显著提高软件开发效率,为变速箱控制器应用程序的数据更新提供有效参考。

猜你喜欢
用户程序变速箱上位
嵌入式设备远程升级方案设计
特斯拉 风云之老阿姨上位
带你走近一个你不知道的自动变速箱
基于CCS5.5的TMS320C6000程序Flash上电自举设计及三种固化方法对比
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
浅析农机用变速箱壳生产工艺的改进
以新思路促推现代农业上位
艾里逊变速箱助力日野FE系列
C8051F410单片机BootLoader的实现