APP下载

Bootstrap功能在ECU刷写中的应用

2020-02-02刘晓波张国花许晓梦纪小娟

电子技术与软件工程 2020年18期
关键词:英飞凌波特率上位

刘晓波 张国花 许晓梦 纪小娟

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

随着汽车电子技术的发展,控制器的功能越来越复杂,软件版本迭代也越来越快。为了加快工作效率,缩短ECU 的开发时间,基于CAN 的程序数据烧录功能成为各大整车厂商对控制器的必备需求之一。传统应用中,使用ECU 内部固定的Bootloader 进行程序和数据的刷写更新,在ECU 的功能变动较大时(如应用程序的Flash 分区结构或者BootLoader 的波特率发生了变化),Bootloader可能就不满足升级需求。基于单片机内部Bootstrap 模块实现ECU程序刷写能够非常方便的解决这个问题。

1 方案概述

TC277 是英飞凌Tricore 架构的32 位高性能单片机,内部具有Bootstrap 模块,支持基于CAN 或UART 的程序刷写,本文主要介绍基于CAN 的程序刷写方法。

英飞凌Bootstrap 模块仅支持对RAM 的写操作,要编写专门的程序实现对Flash 的擦除、编程操作。编写一个运行在RAM中的程序Flashloader,该程序实现一个简易bootloader 的功能。Flashloader 使用Bootstrap 模块刷写进单片机,再通过Flashloader将程序或者数据刷写进ECU 中,FlashLoader 的编写遵循基于UDS的BootLoader 开发规范,上位机与ECU 的整个交互流程见图1。

2 刷写流程

Bootstrap 是英飞凌单片机内部的模块,当单片机复位进入Bootstrap 刷写模式后,通过特定的CAN 报文将FlashLoader 程序刷写进ECU 的RAM 中,单片机执行FlashLoader 程序,上位机通过FlashLoader 将应用程序刷写进ECU 的Flash 中。

2.1 单片机的启动模式

英飞凌单片机一般由四种启动模式:内部Flash 启动、通用Bootstrap 模式、ASC Bootstrap 模式和ABM 启动模式,启动模式的通过HWCFG 引脚在上电复位时的电平或者BMHD(启动模式索引头)的内容决定。通用启动模式下单片机自动检测是使用CAN或者UART 与上位机进行通信,ASC Bootstrap 模式仅使用UART进行通信。

表1:Init 帧格式

表2:Ack 帧格式

不同启动模式单片机的启动地址不同。内部Flash 启动时,单片机从0xA0000020 开始执行程序;ABM 启动模式时,单片机从BMHD 所包含的启动地址开始执行;通用Bootstrap 模式启动时,单片机从0xC0000000 地址开始执行程序,因此编译的FlashLoader的起始地址应该为0xC0000000。

2.2 设备连接

本文所述方案为通过CAN 线刷写ECU,ECU 与上位机间通过CAN 适配器进行连接,适配器可以是VECTOR 的CANApe、CANoe 等设备,亦可为ETAS 的ES581、ES582 等。

TC277 单片机支持4 路CAN 总线通讯,其中CAN1(P14.1&P14.0)支持Bootstrap功能。使用Bootstrap功能刷写ECU时,上位机通过CAN 适配器与ECU 的CAN1 相连接。如图2所示。

当控制器复位进入Bootstrap 模式后,单片机系统时钟由PLL Freerunning 模式切换为Prescaler 模式,系统时钟等于XTAL1&XTAL2 引脚间的时钟,因此控制器应该具备外部晶振或者时钟源,以满足Bootstrap 功能的CAN 通讯对时钟的要求,所提供时钟不低于10MHz。在外部晶振为20MHz 下,CAN 通讯最大波特率可到1000k。

2.3 Bootstrap流程

当单片机进入Bootstrap 模式后,上位机与ECU 开始通过CAN进行交互,CAN 报文分Init 帧、Ack 帧和Data 帧三种。

首先上位机发送Init 帧给ECU,ECU 根据Init 帧自动判断总线波特率,并设置为跟上位机相同的波特率。Init 帧的格式见表1。

通过Init 帧,ECU 获得Ack 帧的ID 和稍后发送Data 帧的ID及条数。Data 帧ID 使用Byte4Byte5 的低13 位右移两位组成。ECU 通过Byte0Byte1 的0x5555 确定与上位机交互的总线波特率。

图1:Bootstrap 刷写流程

图2:ECU 与上位机连接示意

图3:FlashLoader 刷写流程

图4:上位机软件界面

当ECU 收到正确的Init 帧,并设置好波特率后,ECU 给上位机回复Ack 帧,Ack 帧格式见表2。

上位机收到Ack 帧后,开始循环发送Data 帧,Data 帧的ID为Init 帧中指定的ID,数据长度DLC 为8,数据内容为要写到ECU RAM 中的内容FlashLoader。发送Data 帧的条数由Init 帧中数据个数指定,当ECU 收到指定数据帧条数的报文后,ECU 跳转到0xC0000000 开始执行刷写进ECU 的FlashLoader。

2.4 FlashLoader

FlashLoader 是运行在ECU RAM 中的程序,它的功能是接收上位机的报文,并将程序烧录到单片机的Flash 中。它遵循UDS 协议进行设计开发,应用层遵循ISO15765-3、ISO14229 协议要求,网络层遵循ISO15765-2 协议要求,具体更新流程见图3。

整个刷写过程需要的UDS 服务有:

(1)10-诊断会话管理;

(2)27-安全访问;

(3)31-例程控制;

(4)34-请求下载;

(5)36-数据传输;

(6)37-传输退出;

(7)11-ECU 复位。在安全访问子服务中设置自定义的安全访问算法,只有获得授权的用户才能对指定Flash 区进行刷写,提升系统安全性。

2.5 上位机界面

上位机使用C#软件开发,与ECU 遵循相同的网络层与应用层通讯协议。界面见图4。

上位机工具能够读取待刷写的s19hex 文件,并转换为对应的Bootstrap 或FlashLoader 的CAN 报文,最终完成单片机RAM 和FLash 的烧录过程。

点击SetLoader 将FlashLoader 通过Bootstrap 下载至单片机,选择要烧录的区域,点击Start 通过FlashLoader 进行Flash 烧录。

3 性能分析

使用Bootstrap 功能进行ECU 的程序和数据刷写,由于FlashLoader 是现刷进ECU 的,即使应用程序的分区、通讯波特率发生变化,也可以通过更新FlashLoader 后来完成新程序的更新。该刷写方案比在ECU 中固定BootLoader 使用更灵活。

由于Bootstrap 是单片机固定功能模块,无法自定义功能,因此ECU 的刷写存在安全隐患,入侵者如果进入了Bootstrap 模式,则可以随意刷写ECU,存在一定的风险。该风险可以通过设置进入Bootstrap 的权限控制来避免。

4 结论

本文开发了基于Bootstrap 的ECU 刷写功能及上位机软件,使用此系统可以灵活的对ECU 的各个分区进行刷写,满足不同的ECU 程序刷写需求,方便快捷。对ECU BootLoader 开发人员有很大的参考借鉴意义。

猜你喜欢

英飞凌波特率上位
特斯拉 风云之老阿姨上位
基于FPGA的异步串行通信波特率容错设计
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位
英飞凌推出新款大功率光触发晶闸管 首次集成保护功能
英飞凌新一代CoolMOSTM可减少50%的开关损耗;专用EiceDRIVERTM IC可进一步节省空间和设计成本
英飞凌推出第五代1200 V thinQ!TM碳化硅肖特基二极管
C*Core芯片SCI串口波特率容限优化
计算机多设备接口波特率不匹配的研究