基于TMS320F28069的电机控制器bootloader设计

2018-03-22 01:31吴丽华
电子技术与软件工程 2018年1期
关键词:上位应用程序编程

本文采用德州仪器(TI)公司的TMS320F28069系列DSP芯片,阐述了基于CAN诊断通信的bootloader的原理,设计与实现。采用远程下发的方法,将电机控制器程序通过车载信息终端下发至电机控制器ECU中,可实现电机控制器ECU控制策略与控制参数的实时更新,提高产品开发效率,提升用户体验。

【关键词】bootloader ECU更新

1 前言

当前更新软件程序的主要方式是通过本地电脑,SD卡,USB,或者串行总线更新,这样的更新方式效率较低,而且对于整车厂来说成本较高,采用通过服务器的远程下发,然后由车载终端模块实现为各个ECU的转发更新。整个远程更新系统比较庞大也比较复杂,涉及的环节比较多,容易受到电磁干扰或者软件故障的影响,因此Bootloader的稳定性是整个更新过程中首要的因素。

本文采用基于CAN的通信方式完成了电机控制器的程序更新,采用基于ISO15765的国际通用CAN诊断协议完成数据传输,设计并实现了基于TMS320F28069系列DSP电机控制器的轻量化bootloader,并通过结合车载信息终端可实现控制参数的远程标定与控制算法的实时更新。

2 总体方案设计

2.1 系统框图

本系统组成主要由仪表,车辆信息服务器,车载信息终端和电机控制系统四部分组成,如图1所示。仪表主要是显示部分,负责车机与驾驶员的信息交互,通过仪表将程序下载过程中的下载进度或当前条件是否满足程序下载的提示显示,引导用户进行升级操作。车辆信息服务器主要由可联网的通讯计算机和4G移动通讯基站组成,主要实现车载模块数据参数的存储、上传、下发。车载信息终端主要由4G通讯模块,主控模块,存储模块三部分构成,主要实现通过车载CAN总线采集车内各个ECU数据参数,并将采集的数据上传到服务器中,方便服务器下发,或者将待更新ECU程序从服务器端下载,并将下载的程序烧写到各个ECU模块。电机控制系统主要由电机控制器ECU和电机组成,实现对电机转动的控制。

2.2 Bootloader工作原理

Bootloader又叫引导加载程序,是嵌入式系统上电复位首先加载的一部分程序,用于实现嵌入式系统应用程序或外设驱动的加载或应用程序的下载。Bootloader通常可以分为两种模式:加载模式与下载模式。嵌入式系统上电后,bootloader会进入CAN通信循环检测,通常会设置一部分等待时间,等待编程仪器(通常称作上位机)发来的编程指令,在等待时间中如果接收到上位机发来的指令,ECU尝试与上位机通过握手操作建立连接,建立连接以后,ECU向上位机发送下载确认请求,并开始等待上位机下发数据帧。上位机接收到ECU的下载确认请求后,开始执行解析应用程序代码,一页数据一页数据的进入CAN发送循环,为了让ECU接收到完整的数据,上位机将页首地址及页数据循环发送至ECU。为了保证数据的准确性, ECU只有接收到一页完整的数据并完成数据校验后,才会将所接收数据以页的形式烧写进FLASH存储区,再向上位机发送下载确认请求,让上位机继续发送下一页数据。直到上位机收到ECU的解析完成确认请求后,向ECU发送下载结束指令,ECU接收到上位机发送的下载结束的指令后,将下载到FLASH的应用程序拷贝到ECU的RAM中,开始加载应用程序,完成嵌入式系统更新;当超出等待时间或上位机发生加载指令后,bootloader进入加载模式,将FLASH中的应用程序拷贝到RAM中,加载应用程序并退出。

3 具体方案设计

3.1 硬件部分

硬件部分主要实现框图如图2所示,其中电源部分主要完成电机控制器输入电源到电机控制器的电平转换,CAN通讯部分的设计主要需考虑整车的阻抗匹配,电机控制器部分的设计主要需考虑整车的EMC性能。

3.2 软件部分

本方案软件采用三层软件架构,实现框图如图3所示,其中物理层为设备之间的数据通信提供传输媒体,为数据传输提供可靠的环境。传输层作为物理层和应用层之间的媒介,在数据传输的过程中,实现数据的传输,解包,解析,差错控制,打包等工作,将数据从应用层传到物理层。应用层根据诊断协议中具体诊断服务的服务标识符及后面所携带的参数格式及内容,为根据解析出的服务做出相应的处理策略。

3.2.1 启动方式选择

TMS320F28069支持两种工作模式,分别是emulator模式和standalone模式,其中emulator模式是芯片的仿真模式,该模式下可以支持使用TI对应的X100DS仿真器对芯片进行实时仿真。Standalone模式是系统脱离仿真器后的工作模式,由于电机控制系统需要脱离仿真器工作,因此需要使用standalone模式。同时每个模式都支持4种启动方式,分别是RAM启动,SCI启动,USB启动和获得模式(根据获得KEY)。本设计使用获得模式启动,并且使用内部Flash启动方式,这种方式采用芯片自带的内部Flash存储器,无需外挂存储器,设计简单并可有效节约成本。

3.2.2 存储器分配

根据TMS320F28069的存储器映射,将本系统的存储器分配如图4所示,其中内部FLASH的A段地址,其余部分由应用程序占用。由于上电过程中当采用Flash启动方式芯片自带的BROM会读取0x3F7FF6地址的内容,因此需要在该地址中加入一个跳转到主函数的指令。

由于bootloader在运行擦除/写入Flash时暂时无法读取内部flash指令,每个因此需要将对应的Flash擦除/写入的代码存放到一部分RAM中,所以图2中一部分RAM空间会被临时占用用于放置Flash擦除/写入的代码。

3.2.3 软件流程

(1)Bootloader编码流程。Bootloader在不同的芯片中,程序代码有所不同,是因为Bootloaser启动过程中与硬件的关联性比较大,因此将Bootloader的程序分为两个部分,使平台性的功能方便移植。其中第一部分程序与主要由芯片的硬件决定,可移植性相对比较差,这部分程序主要由汇编语言完成,主要实现的功能是:设置中断向量表、关闭看门狗、设置堆栈、初始化系统时钟、内存初始化等。第一部分完成初始化并且设置好相应的环境,就跳转到第二部分的入口,在第二部分,主要由C语言编写,主要实现通用性和平台性的功能,这样的代码也具有较好的可读性与可移植性。第二部分主要实现的功能包括:MMU初始化、中断初始化、串口初始化、网卡初始化、LCD初始化等。这部分代号主要是初始化本阶段所需要使用的硬件設备,检测系统内存映射,将操作系统内核映像文件和根文件的系统映像从FLASH加载到RAM空间,为内核设置启动参数,跳转到操作系统入口地址处执行。如图5所示。

(2)系统软件流程。软件系统的执行流程如图6所示,当系统上电后,系统首先判断是否有编程请求,如没有编程请求,则等待200ms,期间如果发生了编程请求,则进入编程状态,根据收到对应的诊断服务,对相应的存储空间进行擦除/写入,当完成擦除/写入后,bootloader会重新扫描用户入口是否有效,如有效则进入用户程序,否则系统会重新启动等待上位机的编程命令。

4 总结与展望

本文阐述了基于TMS320F28069的电机控制器bootloader的设计与实现方法。通过实验可知,通过远程服务器将诊断数据下发的方式可以实现电机控制器ECU控制策略的实时诊断与更新,极大的方便了主机厂对于模块的更新,整个过程使用方便、快捷,无需专业人员参与,节约了人力与物力成本,提升用户体验。

参考文献

[1]Q/BYDQ-A1906.4366电子控制单元(ECU) CAN烧写技术条件,2014.

[2]ISO 15765-2:2011道路车辆 控制器局域网络(CAN)诊断 第2部分:网络层服务.

[3]王琦,黄悦鹏,邢正阳等.基于CAN总线的Bootloader设计与实现[J].微型机与应用,2015,34(18):14-16.

[4]张华涛,钟佩思,李哲等,基于S3C6410的嵌入式数控系统Bootloader的设计[J].制造技术与机床,2015.

作者简介

吴丽华(1983-),男,江西省鹰潭市人。大学本科学历。主任规划工程师。研究方向为电子信息。

作者单位

比亚迪汽车工业有限公司 广东省深圳市 518118

猜你喜欢
上位应用程序编程
编程,是一种态度
编程小能手
纺织机上诞生的编程
删除Win10中自带的应用程序
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序