CN108920168A - 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 - Google Patents
支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 Download PDFInfo
- Publication number
- CN108920168A CN108920168A CN201810619295.9A CN201810619295A CN108920168A CN 108920168 A CN108920168 A CN 108920168A CN 201810619295 A CN201810619295 A CN 201810619295A CN 108920168 A CN108920168 A CN 108920168A
- Authority
- CN
- China
- Prior art keywords
- ecu
- app
- program
- upper computer
- computer software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,对ECU升级App程序时,先在上位机软件选择好指定的ECU,发送App程序升级请求标志给ECU,满足条件的ECU接收到请求之后,向上位机软件发送ECU类型广播地址及ECU私有地址,上位机软件在加载烧写文件时,根据接收到的ECU类型广播地址,在烧写文件中查找相应的特征码,根据相应的特征码的匹配情况,来决定上位机软件是否将烧写文件的数据发送给ECU进行App程序升级。本发明方法,简单可行,操作方便快捷,程序留有跳转到App程序升级的备用入口,即使旧的App程序完全不可用,也可以将新的App程序升级到ECU,可靠性高,且直接对烧写文件和在线ECU进行匹配性校验,防止程序与ECU不匹配的情况发生。
Description
技术领域
本发明涉及一种ECU升级方法,特别涉及一种支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法。
背景技术
在汽车电子控制单元ECU的开发、调试与后期维护的过程中,需要不同频次的对ECU的程序进行升级。传统的升级方法主要是利用芯片的专用烧写器或仿真器,通过板上的仿真调试接口进行升级,然而ECU安装到某一个子系统或者整车之后,ECU已被防护和结构部件层层包裹,若再将ECU拆解出来升级App程序,不仅费时费力,而且在反复拆装的过程中,还可能增加一些不必要的安全风险。
针对同类型的多个ECU升级程序的情况,比如分布式BMS中的电池采样单元BSU,根据系统大小,一般一个系统中具有几个到十几个BSU,传统的方法需要一个一个单独升级,这样的做法比较费时,而且有时候还会由于人为操作不当等原因,在通过Bootloader对同一个通信网络中的多种ECU分别进行程序升级时,可能发生将这种ECU的程序烧写到另外一种ECU里面,出现张冠李戴的情况,从而导致系统不能正常工作,严重时系统可能出现意外的损伤。
发明内容
本发明旨在提供一种简单可行、安全稳定、操作方便快捷的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法。
本发明通过以下方案实现:
一种支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,按以下步骤进行:
S1:系统上电复位,ECU进入Bootloader启动加载程序并ECU初始化,包括初始化时钟模块、IO模块、通信模块和存储器模块,建立存储空间映射,之后从IO模块或公共EEPROM存储器中获取ECU私有地址和ECU类型广播地址;存储空间包括寄存器、EEPROM存储器区、RAM存储器区和ROM存储器区,EEPROM存储器区包括公共EEPROM存储器和App EEPROM存储器;RAM存储器区包括App数据存储器和Bootloader数据存储器;ROM存储器区包括三个App程序存储器、ECU特征码组存储区、App中断向量表重映射区、App程序程序入口地址、Bootloader程序存储器和复位中断向量表;
S2:读取公共EEPROM存储器中的相关标志,判断是否有App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S3;
S3:等待时间T,在该时间T内判断是否收到来自上位机软件的App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S4;ECU将接收到的来自上位机软件的App程序升级请求标志存储在Bootloader数据存储器中;
S4:判断ECU内是否存在App程序,若是,则执行步骤S5,否则执行骤S6;
S5:跳转到App入口函数,执行App初始化程序,并向上位机软件发送App软件版本信息,之后循环执行App主程序;在循环执行App主程序过程中,若收到来自上位机软件的App程序升级请求,则跳转执行步骤S7;
S6:ECU向上位机软件发送请求应答信息,请求应答信息包括ECU私有地址和ECU类型广播地址,上位机软件接收到请求应答信息后,上位机软件开始App程序升级并将新的App程序发送给相对应的ECU,ECU判断App程序升级是否成功,若是,则提示升级成功,清除App程序升级请求标志,否则提示错误类型,软件复位,重新进入Bootloader启动加载程序。本发明中,App程序升级成功即视为ECU升级成功;
S7:ECU根据当前系统状态判断是否允许对App程序进行升级,若是,则在公共EEPROM存储器中设置App程序升级请求标志,之后软件复位,重新进入Bootloader启动加载程序,否则仍循环执行App主程序。
所述步骤S6中,上位机软件开始App程序升级并将新的App程序发送给相对应的ECU的具体步骤为:(1)上位机软件擦除ECU中旧的App,若旧的App擦除成功,则在上位机软件中选择烧写文件,否则重新擦除ECU中旧的App;(2)上位机软件根据接收到的ECU类型广播地址,在烧写文件中查找相应的特征码,若没有找到相应的特征码或者找到的特征码与ECU类型广播地址不匹配,则给出相应的提示,并禁止App程序升级;若找到相应的特征码且相应的特征码与ECU类型广播地址相匹配,则上位机软件以行为单位将烧写文件中的数据发送给相对应的ECU;(3)ECU对接收到的每行数据进行校验,校验通过后将其写入App程序存储器中。ECU与上位机软件之间的数据传输,可通过CAN通信、TCP/IP等方式实现。在ECU将上位机软件发送的烧写文件的数据写入App程序存储器中时,会根据烧写文件的数据大小选择相应的App程序存储器,如果一个App程序存储器的空间不够,则在存满一个App程序存储器后,再将剩余的数据依次存在另一个App程序存储器中,直至数据存储完。
进一步地,ECU内App程序升级成功的判断标准为:ECU接收到的所有数据都通过校验且正确的写入App程序存储器中。
所述步骤S7中,允许对App程序进行升级的判断条件为:车速为0且总输出功率为0且ECU功能正常。
所述步骤S3中,时间T为0.1~3秒。时间T的设置,其目的为:当遇到App程序升级过程中意外掉电或新升级的App程序存在BUG而不能执行App程序升级时,为ECU提供一个备用入口,进入App程序升级。上位机软件向ECU发送App程序升级请求标志时,一般以非常短的间隔时间多次发送,持续发送数秒,以确保在时间T内,可以从容的给ECU上电复位,然后在时间T内可以收到至少一次来自上位机软件的App程序升级请求标志。
一般情况下,在同一个通信网络中,存在着多个各种功能的ECU。为了区分,为每一个ECU设置唯一的私有地址和类型广播地址,可通过ECU类型广播地址来区分ECU类型,本发明在上位机软件设置ECU选择界面,通过选择特定的ECU广播地址或者ECU私有地址,来达到同时对多个指定的同类型ECU升级App程序或者单独对某一个ECU升级App程序的目的。
在ECU的App程序的特定地址段定义与ECU类型相匹配的特征码组,程序经编译、链接后,在生成的十六进制烧写文件(S19、Bin、Hex等)中会生成与特征码组相应的地址和数据。对ECU升级App程序时,先在上位机软件选择好指定的ECU,发送App程序升级请求标志给ECU,满足条件的ECU接收到请求之后,向上位机软件发送ECU类型广播地址及ECU私有地址,上位机软件在加载烧写文件时,根据接收到的ECU类型广播地址,在烧写文件中查找相应的特征码,根据相应的特征码的匹配情况,来决定上位机软件是否将烧写文件的数据发送给ECU进行App程序升级。
本发明的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,简单可行,使用外部通信接口,而非板载仿真调试接口升级App程序,既可同时对多个同类型ECU升级App程序,也可以单独对某一个ECU升级App程序,操作方便快捷,这样可避免将数据发送错误,安全性、稳定性均较高;Bootloader的代码位于有保护功能的FLASH区域,可以防止被擦除和改写;程序留有跳转到App程序升级的备用入口即从上位机软件发送App程序升级请求标志至ECU,即使旧的App程序完全不可用,也可以将新的App程序升级到ECU,可靠性非常高。本发明直接对源程序烧写文件和在线ECU进行匹配性校验,从源头上防止程序与ECU不匹配的情况发生。
附图说明
图1为实施例1中支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法的控制流程图;
图2为实施例1中ECU存储空间示意图;
图3为实施例1中步骤S6的具体流程图;
图4为实施例1中ECU与上位机软件之间的通信网络示意图。
具体实施方式
以下结合实施例对本发明作进一步说明,但本发明并不局限于实施例之表述。
实施例1
一种支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,其控制流程图如图1所示,按以下步骤进行:
S1:系统上电复位,ECU进入Bootloader启动加载程序并ECU初始化,包括初始化时钟模块、IO模块、通信模块和存储器模块,建立存储空间映射,之后从IO模块或公共EEPROM存储器中获取ECU私有地址和ECU类型广播地址;如图2所示,存储空间包括寄存器、EEPROM存储器区、RAM存储器区和ROM存储器区,EEPROM存储器区包括公共EEPROM存储器和AppEEPROM存储器;RAM存储器区包括App数据存储器和Bootloader数据存储器;ROM存储器区包括三个App程序存储器、ECU特征码组存储区、App中断向量表重映射区、App程序程序入口地址、Bootloader程序存储器和复位中断向量表;
S2:读取公共EEPROM存储器中的相关标志,判断是否有App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S3;
S3:等待时间T,在该时间T内判断是否收到来自上位机软件的App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S4;ECU将接收到的来自上位机软件的App程序升级请求标志存储在Bootloader数据存储器中;
S4:判断ECU内是否存在App程序,若是,则执行步骤S5,否则执行骤S6;
S5:跳转到App入口函数,执行App初始化程序,并向上位机软件发送App软件版本信息,之后循环执行App主程序;在循环执行App主程序过程中,若收到来自上位机软件的App程序升级请求,则跳转执行步骤S7;
S6:ECU向上位机软件发送请求应答信息,请求应答信息包含ECU私有地址和ECU类型广播地址,上位机软件接收到请求应答信息后,上位机软件开始App程序升级并将新的App程序发送给相对应的ECU,如图3所示,具体步骤为:(1)上位机软件擦除ECU中旧的App,若旧的App擦除成功,则在上位机软件中选择烧写文件,否则重新擦除ECU中旧的App;(2)上位机软件根据接收到的ECU类型广播地址,在烧写文件中查找相应的特征码,若没有找到相应的特征码或者找到的特征码与ECU类型广播地址不匹配,则给出相应的提示,并禁止App程序升级;若找到相应的特征码且相应的特征码与ECU类型广播地址相匹配,则上位机软件以行为单位将烧写文件中的数据发送给相对应的ECU;(3)ECU对接收到的每行数据进行校验,校验通过后将其写入App程序存储器中;ECU判断App程序升级是否成功,若ECU收到的所有数据都通过校验且正确的写入App程序存储器中,则判断ECU内App程序升级成功,并提示升级成功,消除App程序升级请求标志,否则提示错误类型,软件复位,重新进入Bootloader启动加载程序;本发明中,App程序升级成功即视为ECU升级成功;
S7:ECU根据当前系统状态判断是否允许对App程序进行升级,若车速为0且总输出功率为0且ECU功能正常,则判断允许对App程序进行升级,在公共EEPROM存储器中设置App程序升级请求标志,之后软件复位,重新进入Bootloader启动加载程序,否则仍循环执行App主程序。
图4为ECU与上位机软件之间的通信网络示意图,同一个上位机软件可同时对应多个同类型的ECU。
Claims (5)
1.一种支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,
其特征在于:按以下步骤进行:
S1:系统上电复位,ECU进入Bootloader启动加载程序并ECU初始化,包括初始化时钟模块、IO模块、通信模块和存储器模块,建立存储空间映射,之后从IO模块或公共EEPROM存储器中获取ECU私有地址和ECU类型广播地址;
S2:读取公共EEPROM存储器中的相关标志,判断是否有App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S3;
S3:等待时间T,在该时间T内判断是否收到来自上位机软件的App程序升级请求标志,若是,则执行步骤S6,否则执行步骤S4;
S4:判断ECU内是否存在App程序,若是,则执行步骤S5,否则执行骤S6;
S5:跳转到App入口函数,执行App初始化程序,并向上位机软件发送App软件版本信息,之后循环执行App主程序;在循环执行App主程序过程中,若收到来自上位机软件的App程序升级请求,则跳转执行步骤S7;
S6:ECU向上位机软件发送请求应答信息,请求应答信息包括ECU私有地址和ECU类型广播地址,上位机软件接收到请求应答信息后,上位机软件开始App程序升级并将新的App程序发送给相对应的ECU,ECU判断App程序升级是否成功,若是,则提示升级成功,清除App程序升级请求标志,否则提示错误类型,软件复位,重新进入Bootloader启动加载程序;
S7:ECU根据当前系统状态判断是否允许对App程序进行升级,若是,则在公共EEPROM存储器中设置App程序升级请求标志,之后软件复位,重新进入Bootloader启动加载程序,否则仍循环执行App主程序。
2.如权利要求1所述的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,其特征在于:所述步骤S6中,上位机软件开始App程序升级并将新的App程序发送给相对应的ECU的具体步骤为:(1)上位机软件擦除ECU中旧的App,若旧的App擦除成功,则在上位机软件中选择烧写文件,否则重新擦除ECU中旧的App;(2)上位机软件根据接收到的ECU类型广播地址,在烧写文件中查找相应的特征码,若没有找到相应的特征码或者找到的特征码与ECU类型广播地址不匹配,则给出相应的提示,并禁止App程序升级;若找到相应的特征码且相应的特征码与ECU类型广播地址相匹配,则上位机软件以行为单位将烧写文件中的数据发送给相对应的ECU;(3)ECU对接收到的每行数据进行校验,校验通过后将其写入App程序存储器中。
3.如权利要求2所述的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,其特征在于:ECU内App程序升级成功的判断标准为:ECU接收到的所有数据都通过校验且正确的写入App程序存储器中。
4.如权利要求1~3任一所述的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,其特征在于:所述步骤S7中,允许对App程序进行升级的判断条件为:车速为0且总输出功率为0且ECU功能正常。
5.如权利要求1~3任一所述的支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法,其特征在于:所述步骤S3中,时间T为0.1~3秒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810619295.9A CN108920168B (zh) | 2018-06-15 | 2018-06-15 | 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810619295.9A CN108920168B (zh) | 2018-06-15 | 2018-06-15 | 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108920168A true CN108920168A (zh) | 2018-11-30 |
CN108920168B CN108920168B (zh) | 2022-03-11 |
Family
ID=64420423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810619295.9A Active CN108920168B (zh) | 2018-06-15 | 2018-06-15 | 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108920168B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828769A (zh) * | 2018-12-24 | 2019-05-31 | 同济大学 | 一种基于tcp/ip的嵌入式程序远程更新系统及方法 |
CN110231952A (zh) * | 2019-06-17 | 2019-09-13 | 合肥巨一动力系统有限公司 | 一种ecu程序备份及循环升级控制方法及装置 |
CN111679846A (zh) * | 2020-05-20 | 2020-09-18 | 北京海博思创科技股份有限公司 | 应用的更新方法和装置 |
CN113495509A (zh) * | 2020-04-03 | 2021-10-12 | 上海汽车集团股份有限公司 | 一种控制器刷写方法及装置 |
CN111679846B (zh) * | 2020-05-20 | 2024-05-28 | 北京海博思创科技股份有限公司 | 应用的更新方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009053920A (ja) * | 2007-08-27 | 2009-03-12 | Auto Network Gijutsu Kenkyusho:Kk | 車載用電子制御ユニットのプログラム管理システム |
CN103294511A (zh) * | 2013-05-31 | 2013-09-11 | 哈尔滨工业大学 | 基于CAN总线的bootloader软件的升级方法 |
CN104216745A (zh) * | 2014-08-29 | 2014-12-17 | 万向钱潮股份有限公司 | 一种半主动悬架ecu控制器软件在线升级系统与方法 |
CN104572221A (zh) * | 2015-01-30 | 2015-04-29 | 重庆邮电大学 | 一种车载ecu在线升级系统及方法 |
US20170255459A1 (en) * | 2016-03-01 | 2017-09-07 | Renesas Electronics Corporation | Embedded device and program updating method |
CN107273152A (zh) * | 2017-05-26 | 2017-10-20 | 安徽贵博新能科技有限公司 | 一种防止系统ecu软件被误升级的解决方法 |
-
2018
- 2018-06-15 CN CN201810619295.9A patent/CN108920168B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009053920A (ja) * | 2007-08-27 | 2009-03-12 | Auto Network Gijutsu Kenkyusho:Kk | 車載用電子制御ユニットのプログラム管理システム |
CN103294511A (zh) * | 2013-05-31 | 2013-09-11 | 哈尔滨工业大学 | 基于CAN总线的bootloader软件的升级方法 |
CN104216745A (zh) * | 2014-08-29 | 2014-12-17 | 万向钱潮股份有限公司 | 一种半主动悬架ecu控制器软件在线升级系统与方法 |
CN104572221A (zh) * | 2015-01-30 | 2015-04-29 | 重庆邮电大学 | 一种车载ecu在线升级系统及方法 |
US20170255459A1 (en) * | 2016-03-01 | 2017-09-07 | Renesas Electronics Corporation | Embedded device and program updating method |
CN107273152A (zh) * | 2017-05-26 | 2017-10-20 | 安徽贵博新能科技有限公司 | 一种防止系统ecu软件被误升级的解决方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828769A (zh) * | 2018-12-24 | 2019-05-31 | 同济大学 | 一种基于tcp/ip的嵌入式程序远程更新系统及方法 |
CN109828769B (zh) * | 2018-12-24 | 2022-02-18 | 同济大学 | 一种基于tcp/ip的嵌入式程序远程更新系统及方法 |
CN110231952A (zh) * | 2019-06-17 | 2019-09-13 | 合肥巨一动力系统有限公司 | 一种ecu程序备份及循环升级控制方法及装置 |
CN110231952B (zh) * | 2019-06-17 | 2023-01-24 | 合肥巨一动力系统有限公司 | 一种ecu程序备份及循环升级控制方法及装置 |
CN113495509A (zh) * | 2020-04-03 | 2021-10-12 | 上海汽车集团股份有限公司 | 一种控制器刷写方法及装置 |
CN111679846A (zh) * | 2020-05-20 | 2020-09-18 | 北京海博思创科技股份有限公司 | 应用的更新方法和装置 |
CN111679846B (zh) * | 2020-05-20 | 2024-05-28 | 北京海博思创科技股份有限公司 | 应用的更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108920168B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7991988B2 (en) | Communication device and firmware update method thereof | |
CN110231952A (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
RU2142168C1 (ru) | Способ полного перепрограммирования стираемой энергонезависимой памяти | |
CN102662701B (zh) | Cpld在线升级方法、装置及业务单板 | |
CN104850762B (zh) | 防止计算机的动作不良的方法、计算机程序以及计算机 | |
CN108920168A (zh) | 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法 | |
US7404028B2 (en) | ECU identification retention across reprogramming events | |
US20040205745A1 (en) | Method and system for identifying compatibility between firmware images | |
CN101826027A (zh) | 一种嵌入式系统及其升级方法 | |
CN104915219A (zh) | 单片机程序升级方法及装置 | |
CN109062598A (zh) | 一种安全的ota升级方法及系统 | |
CN107861745A (zh) | 一种应用程序在线升级方法、装置、设备及存储介质 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
CN108108193A (zh) | 一种安全易用的固件升级方法及系统 | |
CN110045968B (zh) | 一种stm32跨单片机烧录程序的方法 | |
CN106708584A (zh) | 程序烧录方法及装置 | |
CN109086058A (zh) | 车载程序升级系统 | |
CN106406955A (zh) | RSU设备bootloader程序升级的方法、装置 | |
CN108182078B (zh) | 一种优化的弹载设备不拆弹软件在线升级方法 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN102479121A (zh) | 独立磁盘冗余阵列实现及测试方法 | |
CN109358865A (zh) | 一种具有远程升级功能的工业车辆车联网仪表及升级方法 | |
CN112000358B (zh) | 充电桩的升级方法与智能充电桩 | |
US5794007A (en) | System and method for programming programmable electronic components using board-level automated test equipment | |
CN114168171A (zh) | 一种程序在线分段升级方法及其应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |