admin 管理员组文章数量: 1086019
2024年4月30日发(作者:编写爬虫程序)
第37卷
第5期
V_01-37
No.5
计算机工程
2011年3月
March 2011
Computer Engineering
・工程应用技术与实现・ 文章编号:100 _-3428(2011)05—_o241— 3 文献标识码:A 中圈分类号:N945
基于CCP的ECU在线编程技术的实现
(重庆邮电大学汽车电子与嵌入式系统研究所,重庆400065)
摘要:针对车身ECU升级困难的现状,在分析IAP技术的基础上,提出一种基于CAN总线,采用CCP协议实现ECU在线升级的设计
方案,并给出在单片机XC167CI的具体实现。阐述上位机文件下载工具中对加载文件的处理方法和下位机bootloader的实现方法。实验结
果表明,该系统可以通过CAN总线实现ECU的应用代码的更新功能,且操作简单、运行稳定。
关健词:升级;在应用编程;CAN标定协议
Implementation of ECU’S Online Programming Based on CCP
JIANG Jian-chun,CHEN Hong-xia,ZHENG Tlai-xiong
(Institute of Automotive Electronics and Embedded System,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
[Abstract]For the difficulties of auto—body ECU’S software upgrade.a method of ECU’S upgrade based on CCP and CAN bus is presented after
illustrating the principle of In Application Programming(1AP1 technology.Besides.the implementation on the XC167CI is given in the paper.The
processing method of load file in the load tool and the implementation method of bootloader are expounded.Experimental result shows that the
system not only achieves he tfunction of application code upgrade but also runs stably.
[Key words]upgrade;In Application Programming(1AP);CAN Calibration Protocol(CCP)
D0I:1O.3969/j.issn.1000—3428.2011.05.082
1概述
传统的嵌入式软件开发过程中,在调试阶段,应用代码
3在线升级系统设计
在线升级系统硬件结构主要由内部安装bootloader下载
是通过调试接口(BDM、JTAG、NECS等)下载到RAM或Flash
中,开发阶段后期去掉调试接口。以后加入新控制算法或者
新功能,必须借助专用的编程器将新代码写入ECU的程序存
工具的PC机、USB—CAN接口卡、内部固化bootloader的ECU
3个部分组成。PC机提供用户的操作接VI和应用代码下载途
径。由于PC机上没有预留CAN接口,因此在PC机和ECU
储器。在车身控制系统中,新控制算法、新功能推出频率越
来越高,频繁地插拔存储器不但麻烦而且容易损坏电路板。
因此开发一套具有自举加载功能的在线升级系统很有必要。
之间需要通过USB~CAN接口卡转接。软件主要包括2个部分:
上位机的boofloader下载工具和下位机的bootloader。
随着IAP技术的出现以及Flash价格的下降,一般的ECU都
具备IAP(In Application Programming)功能和较大的Flash存
3.1 CCP协议及bootloader下载工具
CCP协议是基于主从通信模式的协议,主机通过从机的
地址配置实时建立主、从机之间的逻辑连接 l。连接建立后,
主机发送CRO(Command Receive Object)控制数据的传递。从
机执行主机命令后返回包含响应信息的DTO(Data
Transmission Object)。在线升级中使用CCP命令:CONNECT,
SET
MTA,PROGRAM,DISCONNECT,CLEAR
MEMORY,
储空间,为实现软件在线升级功能提供了必要的条件。
目前基于IAP技术的在线升级方案种类繁多复杂,适应
的领域也各不相同。文献【1】使用RS232总线和YMODEM协
议开发了用于智能终端的升级系统。文献【2】提出了用于机器
人开发平台的多用户程序在线编程方法。文献【3】通过LIN总
线实现了适用于汽车ECU的升级系统,但使用的是自定义协
—
BUILD
CHKSUM。这6个命令是根据CCP协议标准设计的,
具体的命令消息格式、应答消息格式及其含义见CCP协议
规范。
议,可扩展性不强。CCP(CAN Calibration Protoco1)协议是基
于CAN总线的匹配标定协议,具有通信可靠、传输速度快、
通用性好等优点 】,因此设计基于CCP协议的在线升级系统
既无需增加其他硬件资源又能满足实际的需求,具有一定的
现实意义。
XC167CI目标代码是HEX386文件。该文件是记录文本
行的ASCII文本文件,每一行是一条记录,该记录是十六进
制数组成的机器码或者数据常量,记录格式为:
:llaaaatt[dd・・・]cc
2 IAP和bootloader原理
为了实现IAP功能,即在运行应用代码时可进行自身代
其中,冒号是每一条记录的开始;ll是长度域,表示数据域
中数据(dd)的字节数目;aaaa是地址域,表示该条记录中数
基金项目:国家核高基科技基金资助重大项目“汽车电子控制器嵌
码的更新,需要在固件中增添一部分实现该功能的bootloader
代码。Flash存储器从结构上相应分为2个存储区,一个区存
放bootloader,一个区存放应用代码。在正常工作过程中,系
统运行在应用代码区,当有升级命令时,跳到bootloader区
通过通信总线(CAN,串口等)下载应用代码,调用IAP函数
将新的应用代码写入应用代码区,升级过程结束后系统重启。
入式软件平台研发及产业化”(2009ZX01038,002—002—2)
作者简介:蒋建春(1975一),男,讲师、博士研究生,主研方向:
汽车电子,嵌入式系统;陈洪霞,硕士研究生;郑太雄,教授、
博士
收稿日期:2010—08—18 E-mail:jschx1986@163.corn
242 计算机工程 2011年3月5日
据存放到ECU内存中的起始地址;tt是记录类型域,表示该
条记录的类型,00:数据记录,01:文件结束记录,02:扩
展段地址记录,04:扩展线性地址记录;dd是数据域,表示
一
个字节的数据,一条记录可能有多个数据字节,字节数目
在长度域中指明;CC是校验和域,表示记录的校验和。例如:
:1 0246200464C5549442050524F46494C4500464C33
其中,10是此行记录数据的字节数;2462是该记录中数据在
内存中的起始地址的低16位;00表示这是一条数据记录;
464c5549442O5O524F46494c45 0(】464C是数据;33是该条记
录的校验和。
XC167CI生成的目标文件中只使用数据记录、文件结束
记录、扩展性线性记录3种类型。不同类型记录可按以下
3种方式组织成相应的CCP命令:
(1)对于扩展线性记录,数据域是数据记录中数据存储地
址的高l6位,该值和数据记录中的地址域(数据存储地址的
低16位)值构成32位地址,组织成SET—MTA命令发送至下
位机,是下位机Flash擦除或编程的地址信息。
(2)对于数据记录,先按地址域地址由小到大进行排序,
再检查数据存储地址是否连续,若不连续出现空缺,则填充
补全。因为XC167CI的Flash存储单元未写入数据时的值是
0,所以填充记录的数据域填充0。补全数据记录后,提取出
数据域的数据依次组织成PROGRAM命令发送至下位机。
(3)对于文件结束记录,当扫描到该条记录时,表示升级
任务结束,可以直接发送断开连接命令。
3.2 bootloader实现
基于CCP协议的在线升级系统的bootloader部分主要包
括驱动装载、CCP命令解析函数、CAN驱动、IAP函数(Flash
驱动)4个部分。其中,驱动装载用于控制整个系统的工作流
程,调用CCP命令解析函数实现与上位机通信,完成应用代
码的传输,调用IAP函数进行I13代码的擦除,新代码的写入。
XC167片上集成的2 KB的PSRAM(0xE00000H-
0xE007FFH)和1 28 KB的Flash(0xC00000H~0xC1 FFFFH)用
于代码存储l 。Flash阵列由6个块组成:4个8 KB扇区,
1个32 KB扇区和1个64 KB扇区。设计中将bootloader放
在低地址的4个扇区内,即地址空问为0xC00000H-
0xC07FFFH,高地址空间0xC08000H以上存放用户代码。整
个代码空间的分布如图1所示。
0xCl FF
应用代码区
I 应用代码 I 0xC080
B
ootloader区
0xC07F
f 驱动装载 f
I 动 I
l ccI’ 议命令解析 I
I CAN ̄JJ 1
f启动代码(Startup s) f 0xC000(
图1代码空间分布
因为在执行Flash的擦除或写操作时不能同时进行读操
作,所以系统上电后,首先运行启动代码Startup.S,进行基
本的系统配置,通过JMP FAR bootloader指令进入bootloader
区的C代码段,将Flash驱动代码临时拷贝到2 KB PSRAM
中。具体实现是先将该部分代码放入独立的FLASH—CODE
段中,通过连接器的SECTIONS指令指定该段的存储地址。
通过拷贝函数将该段代码拷入指定的PSRAM空问内。拷贝
完之后初始化CCP和CAN,然后跳入用户代码区执行用户
代码,具体实现如下:
//设置Flash代码段执行物理地址为0xE00000
7PR?PFLASH%FLASH
CODE(0xE00000)
#pragma RENAMECLASS(FCODE=FLASH
CODE)SROM——PS(PFLASH)
//拷贝Flash的代码到PSRAM中
hmemcpy(SROM——PS——TRG(PFLASH),SROM——PS——SRC
(PFLASH),SROM PS LEN(PFLASH)):
void CAN
vlnit(void);//can初始化
void CCPInit(void);//CCP命令解析初始化
asm(
JMP FAR 0Xc08000H/进入用户代码区
}
3.3在线升级流程
用户通过上位机的CONNECT命令启动升级系统,系统
启动之后上位机控制数据的传输,每发送一条命令后,启动
定时器,定时时间到,若未接收到下位机ECU的反馈信息则
重发该条命令。上位机的工作流程如图2所示。
图2上位机工作蒎程
上位机根据收到命令执行相应的操作,具体过程如下:
(1 J发送带有从机地址的CONNECT命令,等待下位机的
DTO。若收到无误的DTO确认则进入(2),否则返回(1)。
(2)发送带擦除地址信息的SET—MTA命令,等待DTO。
若收到无误的DTO确认(即ACK确认)则进入(3),否则返
回(2)。
(3)发送擦除Flash的CLEAR—MEMORY命令,等待
DTO。若收到无误的DTO确认则进入(4),否则返回(3)。
(4)发送带有编程地址信息的SET—MTA命令,等待DTO。
第37卷第5期 蒋建舂,陈洪霞,郑太雄:基于CCP的ECU在线编程技术的实现 243
若收到无误的DTO确认则进入(5),否则返回(4)。
(5)发送编程PROGRAM命令,等待确认DTO。若收到
无误的DTO确认,判断已发送数据是否满1 28 Byte(一个数
据块),若结果为“是”则进入(6),否则返回(5)发送下一帧
数据。
(6)发送BUILD—CHKSUM校验命令,等待DTO。在收
到的DTO信息中无校验错的条件下,判断下一个数据是否是
文件结束记录,如果“是”则进入(7),否则进入(5)发送下一
个数据块。若收到的DTO中有校验错误信息,则进入(5)重
发出错的数据块。
(7)发送DISCONNECT命令,升级结束。
下位机工作流程如图3所示。
执行用户代码
系统蓖启 1
cr
l 命令
对数据缓冲区中数
据进行cRc校验。
准备升级
若正确则根据数据
地址信息写入Flash
中,清除缓存区,
并返回校验信息
BUILD CHKSUM
命令
保存擦赊地址信息f f 数据存入缓冲区
按照地址信息执行
保存编程的
擦除Flash操作
数据地址信息
囹3下位机工作流程
下位机根据收到的命令执行相应的操作,具体的工作流
程如下:
f1)若是CONNECT命令,检查CONNECT命令报文中从
机地址,如果是与本节点建立连接,返回给上位机包含该节
点地址确认的DTO,否则暂时和上位机断开连接直接返回。
建立连接后:
f2)若收到SET_MTA命令,如果地址信息在有效地址范
围内,保存传递的地址信息,返回确认信息DTO。否则返回
带有地址超出范围错误的DTO。
(3)若收到CLEAR—MEMORY命令,根据SET—MTA命
令传递的地址信息,擦除相应的应用代码扇区,返回确认信
息DTO。
(4)若收到PROGRAM命令,将数据保存到缓存中。返回
确认的DT0。
(5)若收到BUILD—CHKSUM命令,则对缓存中数据进行
校验,无误便写入指定的地址Flash中,清除缓冲区。返回
带校验结果的DTO。
(6)若收到DISCONNECT命令则断开连接,升级结束,
系统重启,运行新的应用代码。
4 在线升级功能验证
该方案实际测试:图4(a)是一个应用代码hex文件,
图4(b)是下载到Flash中后通过调试窗口看到内存中的数据。
通过对比2幅图可以看到,应用代码已正确地下载到指定的
内存,实现了应用代码重入功能。
文件理)编辑哩)格式喧)妻看 )帮助 )
:020000日 0日cgFn -^
:1 88g0000A55nRS冉5E6gC07001)180E6EflC081E00066
:1 0001O00F6FDEOF1D180E6E88978E6D5ggOOE6gB57
:1 0g02oogOOF8E6日 gCF6E6090OFSE6860gOgE600n7
:1gO03gogoogoE6010103E6g2(13日OE6g80目FCB54 FB
:1n0ottgggB5B51n880203E6F020821A8803g3E6F0R3
:1 0日050004fl821Q88ogg3E6Fg0B82E6F9ggggE6F81E
:1 00g60000oDOF01870192D29E0日5DC日9982B2D25C7
:1 000700gFO32DC097848AAF21BE0n日F2glEFDF0348E
:1 00080097C33OEF306F3OOFDE0154C54915g685B8B
(a)hex文件
(b)Flash中的数据
图4应用代码重入功能验证
5结束语
本文提出一种基于CAN总线,采用CCP协议实现ECU
在线升级的设计方案。该方案成功应用于XC167CI单片机应
用程序的下载,而且操作简单。基于CCP协议的在线升级思
想还可以应用到汽车上其他的ECU中,使用统一的协议,具
有较强可扩展性,最终可以实现通过网络进行ECU应用代码
升级。
参考文献
[1]姜晓梅,李祥和.基于ARM的IAP在线及远程升级技术[J1l
计算机应用,2008,28(2):519—521.
[2】殷树明,王宜怀.嵌入式系统中多用户程序在线编程技术[J1.
计算机工程,2009,35(5):37—39.
[31 l韩江洪,常安云.车身控制系统在线编程技术的研究与实
现【c】//全国第1 8届计算机技术与应用学术会议论文集.宁波:
咄版者不详],2007.
【4]冯静,王俊席,卓斌.基于CCP协议的电控发动机标定系
统CAN通信模块的研发【J1.内燃机工程,2003,24(5):33.37.
[5]Infineon Technologies AG.XC164CS一16 User’S Manual(v2.1)[Z].
2004.
编辑任吉慧
版权声明:本文标题:基于CCP的ECU在线编程技术的实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1714472321a681691.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论