CN105511912B - 一种基于can总线的程序下载方法 - Google Patents
一种基于can总线的程序下载方法 Download PDFInfo
- Publication number
- CN105511912B CN105511912B CN201510855873.5A CN201510855873A CN105511912B CN 105511912 B CN105511912 B CN 105511912B CN 201510855873 A CN201510855873 A CN 201510855873A CN 105511912 B CN105511912 B CN 105511912B
- Authority
- CN
- China
- Prior art keywords
- code
- program
- object code
- indexed
- application
- 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.)
- Active
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
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
本发明涉及基于CAN总线的程序下载方法,包括以下步骤:S1系统上电时判断程序更新标志变量Up_Flg是否有效和目标代码程序标志变量Code_ok是否有效,若程序更新标志变量Up_Flg无效且目标代码程序标志变量Code_ok有效则进入应用模式,否则进入BootLoad模式;BootLoad模式:S2判断在第一预定时间内是否收到FLASH驱动代码,若是则执行步骤S3,否则返回步骤S1;S3目标代码程序标志变量Code_ok置0;S4擦除应用程序目标代码;S5接收新程序代码;S6执行新应用程序。本发明基于CAN总线下载程序,可任意刷写,即使烧写进去的目标代码错误或刷写中意外中断也可以重新刷写且通过读取标志为来判断是进入BootLoad模式还是应用程序模式,使系统上电进入应用程序没有延时,达到零启动效果。
Description
技术领域
本发明涉及电动汽车的电池管理系统技术领域,具体涉及一种基于CAN总线的程序下载方法。
背景技术
目前,在电动汽车领域,通过CAN总线将程序下载到电池管理系统是常见的程序下载方式。但现有的基于CAN总线的程序下载方式,在程序烧写过程中目标代码错误或刷写过程中意外中断时,不能进入刷写模式重新刷写。电池管理系统上电后需要先判断系统进入BootLoad模式还是应用程序模式,现有技术中对系统上电后的模式判断需要一定的时间,导致系统上电进入应用程序具有一定的延迟,影响用户使用的体验效果。此外,现有的基于CAN总线的程序下载容易出现FLASH的意外操作,造成FLASH的错误改写。
发明内容
本发明的目的是克服现有技术的不足和缺陷,提供一种基于CAN总线的程序下载方法。
本发明的目的是通过以下技术方案来实现的:
一种基于CAN总线的程序下载方法,包括以下步骤:
S1系统上电时判断程序更新标志变量Up_Flg是否有效和目标代码程序标志变量Code_ok是否有效,若程序更新标志变量Up_Flg无效且目标代码程序标志变量Code_ok有效则进入应用模式,否则进入BootLoad模式;
BootLoad模式:
S2判断在第一预定时间内是否收到FLASH驱动代码,若是则执行步骤S3,否则返回步骤S1;
S3目标代码程序标志变量Code_ok置0;
S4擦除应用程序目标代码;
S5接收新程序代码;
S6执行新应用程序。
具体地,所述步骤S5包括以下步骤:
S51判断是否接收完一行代码,若接收完成则执行步骤S52,否则继续执行步骤S51;
S52更新相应行代码;
S53判断新代码是否全部接收完成,若是则执行步骤S54,否则返回步骤S51;
S54发结束标志到上位机,并跳转到目标代码。
具体地,所述步骤S6包括以下步骤:
S61’若上位机接收到结束标志,则延时第二预定时间后发送相应命令到应用层;
S61判断在第二预定时间内是否收到上位机响应命令,若是则执行步骤S62,否则执行步骤S63;
S62目标代码程序标志变量Code_ok置1,即证明更新的目标代码有效;
S63目标代码程序标志变量Code_ok保持为0,即证明更新的目标代码无效。
具体地,所述第一预定时间为多少10ms。
具体地,所述第二预定时间为1s。
本发明相比现有技术包括以下优点及有益效果:
(1)本发明基于CAN总线下载程序,可以任意刷写,即使烧写进去的目标代码错误或刷写中意外中断,也可以重新刷写,不会造成不能重新进入BootLoad模式。
(2)通过读取标志为来判断是进入BootLoad模式还是应用程序模式,使系统上电进入应用程序没有延时,达到零启动效果。
(3)FLASH驱动代码由上位机导入,若应用层未接收到上位机的FLASH驱动代码则无法改写目标程序,可防止目标程序误改写,保护目标程序的安全。
(4)程序刷写时前将目标代码程序标志变量Code_ok置0,程序刷写成功后将目标代码程序标志变量Code_ok置1,否则将目标代码程序标志变量Code_ok保持为0,在程序刷写了无效程序或死循环程序的情况下,当系统重新上电时,目标代码程序标志变量无效,可直接进入BootLoad模式,重新刷写程序。
附图说明
图1为实施例中基于CAN总线的程序下载方法的流程图;
图2为图1的步骤Stept 5的流程图;
图3为图1的步骤Stept6的流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所示,一种基于CAN总线的程序下载方法,具体过程如下:
Step1在应用层中判断程序更新标志变量Up_Flg是否有效(Up_Flg==1?)和目标代码程序标志变量Code_ok是否有效(即Code_ok==1?),若程序更新标志变量Up_Flg无效(Up_Flg==0)且目标代码程序标志变量Code_ok有效(Code_ok==1),则跳转到应用程序,进入应用模式,否则进入BootLoad模式。通过读取标志位来判断是进入BootLoad模式还是应用程序模式,使系统上电进入应用程序没有延时,达到零启动效果。
其中,BootLoad模式的具体过程如下:
Step2判断在第一预定时间内是否收到FLASH驱动代码,若是则执行步骤Step3,否则返回步骤Step1。在本实施例中,所述第一预定时间可设置为10ms,也可根据实际需要设置为其他时间长度。FLASH驱动代码由上位机导入,若应用层未接收到上位机的FLASH驱动代码则无法改写目标程序,可防止目标程序误改写,保护目标程序的安全。
Step3将目标代码程序标志变量Code_ok置0(即Code_ok=0),使目标代码处于无效。具体为擦除目标代码程序标志变量所在地址块的代码。
Step4擦除应用程序目标代码。
Stept5接收新程序代码,如图2所示,包括以下步骤:
S51判断是否接收完一行代码,若接收完成则执行步骤S52,否则继续执行步骤S51;
S52更新相应行代码;
S53判断新代码是否全部接收完成,若是则执行步骤S54,否则返回步骤S51;
S54发结束标志到上位机,并跳转到目标代码。
Step6执行新应用程序,具体包括以下步骤:
S61’若上位机接收到结束标志,则延时第二预定时间后发送相应命令到应用层的应用程序。在本实施例中,所述第二预定时间设定为1s,也可根据实际需要设定为其他时间长度。
S61判断在第二预定时间内是否收到上位机响应命令,若是则执行步骤S62,否则执行步骤S63。
S62将目标代码程序标志变量Code_ok置1(Code_ok=1),即证明更新的目标代码有效。
S63将目标代码程序标志变量Code_ok保持为0(Code_ok=0),即证明更新的目标代码无效。
所述新应用程序中设置一段代码用于接收上位机的响应命令对应的特定帧,若接收到特定帧,则将目标代码程序标志变量Code_ok重新写回去,即将Code_ok置1(Code_ok=1),代表新刷写的应用程序有效;若未接收到上位机的相应命令对应的特定帧,则将目标代码程序标志变量Code_ok保持为0(Code_ok==0),即代表新刷写的应用程序是无效程序或死循环程序,目标代码程序标志变量无法写入,在这种情况下,当系统重新上电时,目标代码程序标志变量无效,则直接进入BootLoad模式。因此,即使刷写的目标代码是错误代码或是刷写过程意外中断,也可以重新刷写,不会造成不能重新进入BootLoad模式。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (4)
1.一种基于CAN总线的程序下载方法,其特征在于,包括以下步骤:
S1系统上电时判断程序更新标志变量Up_Flg是否有效和目标代码程序标志变量Code_ok是否有效,若程序更新标志变量Up_Flg无效且目标代码程序标志变量Code_ok有效则进入应用模式,否则进入BootLoad模式;
BootLoad模式:
S2判断在第一预定时间内是否收到FLASH驱动代码,若是则执行步骤S3,否则返回步骤S1;
S3目标代码程序标志变量Code_ok置0;
S4擦除应用程序目标代码;
S5接收新程序代码;
S6执行新应用程序;
所述步骤S6包括以下步骤:
S61’若上位机接收到结束标志,则延时第二预定时间后发送相应命令到应用层;
S61判断在第二预定时间内是否收到上位机响应命令,若是则执行步骤S62,否则执行步骤S63;
S62目标代码程序标志变量Code_ok置1,即证明更新的目标代码有效;
S63目标代码程序标志变量Code_ok保持为0,即证明更新的目标代码无效。
2.根据权利要求1所述的基于CAN总线的程序下载方法,其特征在于,所述步骤S5包括以下步骤:
S51判断是否接收完一行代码,若接收完成则执行步骤S52,否则继续执行步骤S51;
S52更新相应行代码;
S53判断新代码是否全部接收完成,若是则执行步骤S54,否则返回步骤S51;
S54发结束标志到上位机,并跳转到目标代码。
3.根据权利要求1或2所述的基于CAN总线的程序下载方法,其特征在于:所述第一预定时间为10ms。
4.根据权利要求1或2所述的基于CAN总线的程序下载方法,其特征在于:所述第二预定时间为1s。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510855873.5A CN105511912B (zh) | 2015-11-28 | 2015-11-28 | 一种基于can总线的程序下载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510855873.5A CN105511912B (zh) | 2015-11-28 | 2015-11-28 | 一种基于can总线的程序下载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105511912A CN105511912A (zh) | 2016-04-20 |
CN105511912B true CN105511912B (zh) | 2017-09-12 |
Family
ID=55719919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510855873.5A Active CN105511912B (zh) | 2015-11-28 | 2015-11-28 | 一种基于can总线的程序下载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105511912B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764786A (zh) * | 2021-01-04 | 2021-05-07 | 东风商用车有限公司 | 汽车ECU Bootloader的启动方法及装置 |
CN115809078A (zh) * | 2021-09-13 | 2023-03-17 | 长城汽车股份有限公司 | 一种车辆ecu的刷写方法、车辆及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221506A (zh) * | 2007-01-12 | 2008-07-16 | 深圳市科陆电子科技股份有限公司 | 一种对电能表芯片程序进行下载更新的方法 |
CN101751279A (zh) * | 2009-12-29 | 2010-06-23 | 北京握奇数据系统有限公司 | 一种芯片及片上操作系统下载的方法 |
CN104750531A (zh) * | 2015-04-15 | 2015-07-01 | 安徽师范大学 | 一种嵌入式系统在线刷新程序的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100476726C (zh) * | 2007-08-03 | 2009-04-08 | 北京握奇数据系统有限公司 | 一种资源受限设备及数据访问方法 |
US9495250B2 (en) * | 2008-09-02 | 2016-11-15 | Fujitsu Limited | Providing code to a programmable device |
CN101872306B (zh) * | 2009-04-21 | 2013-03-20 | 京信通信系统(中国)有限公司 | 一种实现软件更新和软件备份的嵌入式系统及其实现方法 |
-
2015
- 2015-11-28 CN CN201510855873.5A patent/CN105511912B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221506A (zh) * | 2007-01-12 | 2008-07-16 | 深圳市科陆电子科技股份有限公司 | 一种对电能表芯片程序进行下载更新的方法 |
CN101751279A (zh) * | 2009-12-29 | 2010-06-23 | 北京握奇数据系统有限公司 | 一种芯片及片上操作系统下载的方法 |
CN104750531A (zh) * | 2015-04-15 | 2015-07-01 | 安徽师范大学 | 一种嵌入式系统在线刷新程序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105511912A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
Biere | Yet another local search solver and Lingeling and friends entering the SAT Competition 2014 | |
CN102947135B (zh) | 程序更新装置 | |
CN102520948B (zh) | 应用程序维护更新方法和装置 | |
CN105511912B (zh) | 一种基于can总线的程序下载方法 | |
ATE555436T1 (de) | System und verfahren zur verwendung von threadspezifischen zeichenkettengruppen | |
ATE515771T1 (de) | Verfahren zur nichtrealen zeitprogrammierung eines nichtflüchtigen speichers zum erreichen einer festeren verteilung von schwellenspannungen | |
CN102135922A (zh) | 应用程序的刷新方法和系统 | |
CN104156237A (zh) | 单片机的在线升级方法 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN106406955A (zh) | RSU设备bootloader程序升级的方法、装置 | |
CN103488536A (zh) | 任务调度方法、装置及操作系统 | |
CN111638884B (zh) | 一种插件化工程编译的方法、系统、装置和存储介质 | |
CN110687921B (zh) | 一种无人机飞行控制方法、装置及电子设备和存储介质 | |
CN105893072A (zh) | 一种芯片的固件升级方法和装置 | |
CN105354061A (zh) | 一种保护mcu工作程序的方法及系统 | |
CN103777976B (zh) | 单片机及其在线升级方法和在线升级装置 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN112486737A (zh) | 一种拟态工业控制器的组态管理方法 | |
CN103339603A (zh) | 计算机重新编程方法、数据存储介质和机动车辆计算机 | |
CN116431186A (zh) | 一种车载ecu的升级方法、装置及介质 | |
CN103677941B (zh) | 一种实现智能卡操作系统模块升级的方法及装置 | |
CN105807889A (zh) | 指令处理方法、指令处理装置和终端 | |
CN202383659U (zh) | 一种程序下载系统 | |
CN105630516A (zh) | 适用于java卡上应用软件的补丁升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |