CN105183501A - 防止在线程序烧写出错的方法 - Google Patents
防止在线程序烧写出错的方法 Download PDFInfo
- Publication number
- CN105183501A CN105183501A CN201510487526.1A CN201510487526A CN105183501A CN 105183501 A CN105183501 A CN 105183501A CN 201510487526 A CN201510487526 A CN 201510487526A CN 105183501 A CN105183501 A CN 105183501A
- Authority
- CN
- China
- Prior art keywords
- program
- application
- iap
- writing
- burn writing
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种防止在线程序烧写出错的方法。该防止在线程序烧写出错的方法包括:将FLASH分为BOOT区、程序标志区和应用程序区,所述应用程序区包括多个应用程序分区;在在线程序烧写状态下,执行BootLoader程序,将应用程序烧写至当前程序标志对应的应用程序分区以外的其他应用程序分区;将当前程序标志改写为完成在线烧写的应用程序分区。根据本发明的防止在线程序烧写出错的方法,能够解决现有技术中在线程序烧写容易出错的问题。
Description
技术领域
本发明涉及程序编制技术领域,具体而言,涉及一种防止在线程序烧写出错的方法。
背景技术
目前IAP烧写即在线烧写程序的方式在控制器程序升级方面已有较为广泛的应用,但是IAP烧写的可靠性方面并没有传统的ISP烧写那么好。
IAP方式通常使用于工程现场的程序升级,由于应用程序文件较大,通常都会采取较高的波特率进行传输,这样将容易出现丢帧、错帧的问题而导致烧写过程出错,由于控制器内应用程序段的flash已被擦除,控制器将无法正常工作,只能通过多次尝试甚至是更换控制器来解决,给在线程序烧写带来了诸多不便。
发明内容
本发明实施例中提供一种防止在线程序烧写出错的方法,以解决现有技术中在线程序烧写容易出错的问题。
为解决上述技术问题,本发明实施例提供一种防止在线程序烧写出错的方法,包括:将FLASH分为BOOT区、程序标志区和应用程序区,应用程序区包括多个应用程序分区;在在线程序烧写状态下,执行BootLoader程序,将应用程序烧写至当前程序标志对应的应用程序分区以外的其他应用程序分区;将当前程序标志改写为完成在线烧写的应用程序分区。
作为优选,在在线程序烧写状态下,应用程序烧写完成后,将IAP标志置位。
作为优选,在在线程序烧写状态下,应用程序烧写完成后,在完成烧写的应用程序分区读取IAP标志,如果IAP标志为置位状态,则对当前程序标志进行改写,之后将IAP标志清除。
作为优选,程序标志区包括程序标志地址和IAP标志地址,程序标志地址内存放有程序标志,IAP标志地址内存放有IAP标志。
作为优选,方法还包括:在正常运行状态下,执行BootLoader程序,并跳转至程序标志所对应的应用程序区,不对程序标志进行操作。
作为优选,在执行BootLoader程序后,如果不满足IAP功能进入条件,则对IAP标志赋值,在应用程序区读取该IAP标志赋值,不对程序标志进行操作。
作为优选,应用程序分区包括第一应用程序分区和第二应用程序分区。
作为优选,在进行在线程序烧写前,方法还包括:将在线烧写程序的应用程序进行分块;对每个待发送的应用程序块附加校验码;在接收校验码时校对校验码,并在校验错误时重新请求校验错误的应用程序块。
作为优选,校验码为16位CRC校验码。
应用本发明的技术方案,防止在线程序烧写出错的方法包括:将FLASH分为BOOT区、程序标志区和应用程序区,所述应用程序区包括多个应用程序分区;在在线程序烧写状态下,执行BootLoader程序,将应用程序烧写至当前程序标志对应的应用程序分区以外的其他应用程序分区;将当前程序标志改写为完成在线烧写的应用程序分区。BOOT程序在向应用程序跳转前先获取跳转目标地址,在跳转执行后才更改运行程序地址,能够在程序改写错误无法执行时,仍然按照原有程序执行,不会影响程序的正常控制。在程序改写顺利完成时,才会将运行程序替换为改写完成的程序,有效保证了在线程序烧写的正确性,避免出现烧写过程出错的问题,提高在线程序烧写的可靠性和成功率。
附图说明
图1是本发明实施例的防止在线程序烧写出错的方法流程图;
图2是本发明实施例的防止在线程序烧写出错方法的Flash分区图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细描述,但不作为对本发明的限定。
参见图1和图2所示,根据本发明的实施例,防止在线程序烧写出错的方法包括:将FLASH分为BOOT区、程序标志区和应用程序区,应用程序区包括多个应用程序分区;在在线程序烧写状态下,执行BootLoader程序,将应用程序烧写至当前程序标志对应的应用程序分区以外的其他应用程序分区;将当前程序标志改写为完成在线烧写的应用程序分区。在本实施例中,将会以应用程序分区包括第一应用程序分区Code1和第二应用程序分区Code2为例进行说明。
Boot区存放BootLoader程序,用于实现IAP功能,起始地址为0x00000000;程序标志区用于存放一个决定应用程序运行位置的标志,起始地址为0x00007000,程序标志区存放两个变量:程序标志(地址0x00007000)和IAP标志(地址0x00007004),也即在程序标志区的地址0x00007000处存放有程序标志,在地址0x00007004处存放有IAP标志,当执行BootLoader程序时,读取0x00007000处存放的变量则可以进入到程序标志所对应的应用程序分区,读取0x00007004处存放的变量则可以获取IAP标志的赋值。
在本实施例中,BOOT程序在向应用程序跳转前先获取跳转目标地址,在跳转执行后才更改运行程序地址,而非是先更改运行程序地址,然后在更改后的运行程序地址烧写在线程序,因此可以将正在运行的程序与正在改写的程序分割开,能够在程序改写错误无法执行时,保证系统仍然按照原有程序执行,不会影响程序的正常控制。在程序改写顺利完成时,才会将运行程序替换为改写完成的程序,有效保证了在线程序烧写的正确性,避免出现烧写过程出错的问题,提高在线程序烧写的可靠性和成功率。
在在线程序烧写状态下,应用程序烧写完成后,将IAP标志置位,此时表示Flash处于在线程序烧写状态,需要将程序标志改写成烧写完成的应用程序所在的应用程序分区,以便使控制器等固件按照在线烧写完成后更新的程序执行。
在在线程序烧写状态下,应用程序烧写完成后,在完成烧写的应用程序分区读取IAP标志,如果IAP标志为置位状态,则对当前程序标志进行改写,之后将IAP标志清除。
具体而言,在IAP烧写状态时,上电后程序先执行BootLoader程序,代码在当前程序标志对应的应用程序分区以外的其他应用程序分区烧写完毕后,将IAP标志写为0x00000001,在读取程序标志时,进行如下判断和动作:
如果程序标志区=0x00008000,也即程序标志所指向的地址为0x00008000,Code1区处于正常工作状态,此时如果需要进行在线程序改写,则将改写程序烧写在Code2区,此时在线程序烧写的过程与固件按照原有程序正常工作的过程同时进行,两者相互之间没有干涉,可以保证固件正常运行的同时实现在线程序更新,即使由于丢帧、错帧的问题导致程序烧写错误,也不会影响固件的正常运行,提高了在线程序烧写的安全性和可靠性。
在程序更新完成后,则应用程序跳转至Code2区,如果在应用程序中读取程序标志区IAP标志=0x00000001,则将程序标志改写为0x00040000,使得固件按照Code2区的程序执行,使得控制器等进行程序改写的固件可以按照在线烧写更新完成的程序执行操作。
同理,如果程序标志区=0x00040000,则跳转至Code1区;在应用程序中读取程序标志区IAP标志=0x00000001,则将程序标志改写为0x00008000。
防止在线程序烧写出错的方法还包括:在正常运行状态下,执行BootLoader程序,并跳转至程序标志所对应的应用程序区,不对程序标志进行操作。
在执行BootLoader程序后,如果不满足IAP功能进入条件,则对IAP标志赋值,在应用程序区读取该IAP标志赋值,不对程序标志进行操作。在对IAP标志赋值时,应该保证应用程序读取该IAP标志赋值后,不会对程序标志进行操作。
具体而言,在固件无需进行在线程序烧写,处于正常运行状态时,上电后程序先执行BootLoader程序,不满足IAP功能进入条件则会将IAP标志写为0x00000000,并跳转至应用程序区(Code1区/Code2区),具体判断方式为:
如果程序标志=0x00008000,则跳转至Code1区,在应用程序中读取程序标志区IAP标志=0x00000000,则不对程序标志操作;如果程序标志=0x00040000,则跳转至Code2区,在应用程序中读取程序标志区IAP标志=0x00000000,则不对程序标志操作。
在进行在线程序烧写前,方法还包括:将在线烧写程序的应用程序进行分块;对每个待发送的应用程序块附加校验码;在接收校验码时校对校验码,并在校验错误时重新请求校验错误的应用程序块。校验码例如为16位CRC校验码
将代码进行分块,方式可根据自身对烧写速率的要求结合工程工况进行,也可以结合FLASH芯片IC的扇区等多方面的因素进行。每个代码块在传输前进行16位CRC校验,并将校验码加进每块代码发送,接收方在接收代码块后以同样的公式进行CRC校验,核对校验码的正误,如果错误将重新请求该块代码块的数据,这样借助CRC校验方式防止每块代码传输过程中的丢帧、错帧,保证代码传输的准确性,进而降低在线程序烧写出错的几率。
通过在在线烧写程序执行前保证代码块传输的准确性,可以更加有效地保证进行在线烧写的程序的准确性和完整性,有效提高在线烧写程序的成功率,改善在线烧写程序的实际应用性能。
当然,以上是本发明的优选实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明基本原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (9)
1.一种防止在线程序烧写出错的方法,其特征在于,包括:
将FLASH分为BOOT区、程序标志区和应用程序区,所述应用程序区包括多个应用程序分区;
在在线程序烧写状态下,执行BootLoader程序,将应用程序烧写至当前程序标志对应的应用程序分区以外的其他应用程序分区;
将当前程序标志改写为完成在线烧写的应用程序分区。
2.根据权利要求1所述的防止在线程序烧写出错的方法,其特征在于,在在线程序烧写状态下,应用程序烧写完成后,将IAP标志置位。
3.根据权利要求2所述的防止在线程序烧写出错的方法,其特征在于,在在线程序烧写状态下,应用程序烧写完成后,在完成烧写的应用程序分区读取IAP标志,如果IAP标志为置位状态,则对当前程序标志进行改写,之后将IAP标志清除。
4.根据权利要求1所述的防止在线程序烧写出错的方法,其特征在于,程序标志区包括程序标志地址和IAP标志地址,程序标志地址内存放有程序标志,IAP标志地址内存放有IAP标志。
5.根据权利要求1所述的防止在线程序烧写出错的方法,其特征在于,所述方法还包括:
在正常运行状态下,执行BootLoader程序,并跳转至程序标志所对应的应用程序区,不对程序标志进行操作。
6.根据权利要求5所述的防止在线程序烧写出错的方法,其特征在于,在执行BootLoader程序后,如果不满足IAP功能进入条件,则对IAP标志赋值,在应用程序区读取该IAP标志赋值,不对程序标志进行操作。
7.根据权利要求1所述的防止在线程序烧写出错的方法,其特征在于,所述应用程序分区包括第一应用程序分区和第二应用程序分区。
8.根据权利要求1所述的防止在线程序烧写出错的方法,其特征在于,在进行在线程序烧写前,所述方法还包括:
将在线烧写程序的应用程序进行分块;
对每个待发送的应用程序块附加校验码;
在接收校验码时校对校验码,并在校验错误时重新请求校验错误的应用程序块。
9.根据权利要求8所述的防止在线程序烧写出错的方法,其特征在于,所述校验码为16位CRC校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510487526.1A CN105183501A (zh) | 2015-08-10 | 2015-08-10 | 防止在线程序烧写出错的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510487526.1A CN105183501A (zh) | 2015-08-10 | 2015-08-10 | 防止在线程序烧写出错的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105183501A true CN105183501A (zh) | 2015-12-23 |
Family
ID=54905599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510487526.1A Pending CN105183501A (zh) | 2015-08-10 | 2015-08-10 | 防止在线程序烧写出错的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183501A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227572A (zh) * | 2016-08-30 | 2016-12-14 | 深圳市蓝海华腾技术股份有限公司 | 一种变频器控制系统程序升级方法 |
CN106886444A (zh) * | 2017-03-27 | 2017-06-23 | 北京润科通用技术有限公司 | 一种在线编程方法及装置 |
CN108762774A (zh) * | 2018-05-22 | 2018-11-06 | 深圳市先河系统技术有限公司 | 一种固件烧录的方法及固件烧录的设备 |
CN110058865A (zh) * | 2019-03-07 | 2019-07-26 | 埃斯倍风电科技(青岛)有限公司 | 一种单片机的程序烧写及运行方法 |
CN110750247A (zh) * | 2019-10-24 | 2020-02-04 | 深圳市爱夫卡科技股份有限公司 | 胎压传感器应用程序分区方法、系统、终端及存储介质 |
CN111258600A (zh) * | 2019-11-21 | 2020-06-09 | 华立科技股份有限公司 | 镜像式嵌入式程序固件升级方法 |
CN112230967A (zh) * | 2020-11-19 | 2021-01-15 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN113885928A (zh) * | 2021-05-31 | 2022-01-04 | 荣耀终端有限公司 | 程序更新方法和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101557583A (zh) * | 2009-03-19 | 2009-10-14 | 珠海银邮光电技术发展股份有限公司 | 直放站设备嵌入式软件的远程升级与版本切换方法 |
CN101741583A (zh) * | 2008-11-20 | 2010-06-16 | 英华达(上海)电子有限公司 | 实现智能家电数据更新的方法、装置及系统 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN102945173A (zh) * | 2012-10-31 | 2013-02-27 | 青岛海信宽带多媒体技术有限公司 | 用户程序在线升级系统和升级方法 |
CN103517141A (zh) * | 2013-10-11 | 2014-01-15 | 成都三零凯天通信实业有限公司 | 基于ip机顶盒分段式数据升级方法 |
-
2015
- 2015-08-10 CN CN201510487526.1A patent/CN105183501A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741583A (zh) * | 2008-11-20 | 2010-06-16 | 英华达(上海)电子有限公司 | 实现智能家电数据更新的方法、装置及系统 |
CN101557583A (zh) * | 2009-03-19 | 2009-10-14 | 珠海银邮光电技术发展股份有限公司 | 直放站设备嵌入式软件的远程升级与版本切换方法 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN102945173A (zh) * | 2012-10-31 | 2013-02-27 | 青岛海信宽带多媒体技术有限公司 | 用户程序在线升级系统和升级方法 |
CN103517141A (zh) * | 2013-10-11 | 2014-01-15 | 成都三零凯天通信实业有限公司 | 基于ip机顶盒分段式数据升级方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227572A (zh) * | 2016-08-30 | 2016-12-14 | 深圳市蓝海华腾技术股份有限公司 | 一种变频器控制系统程序升级方法 |
CN106886444A (zh) * | 2017-03-27 | 2017-06-23 | 北京润科通用技术有限公司 | 一种在线编程方法及装置 |
CN108762774A (zh) * | 2018-05-22 | 2018-11-06 | 深圳市先河系统技术有限公司 | 一种固件烧录的方法及固件烧录的设备 |
CN110058865A (zh) * | 2019-03-07 | 2019-07-26 | 埃斯倍风电科技(青岛)有限公司 | 一种单片机的程序烧写及运行方法 |
CN110750247A (zh) * | 2019-10-24 | 2020-02-04 | 深圳市爱夫卡科技股份有限公司 | 胎压传感器应用程序分区方法、系统、终端及存储介质 |
CN111258600A (zh) * | 2019-11-21 | 2020-06-09 | 华立科技股份有限公司 | 镜像式嵌入式程序固件升级方法 |
CN112230967A (zh) * | 2020-11-19 | 2021-01-15 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN112230967B (zh) * | 2020-11-19 | 2024-03-29 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN113885928A (zh) * | 2021-05-31 | 2022-01-04 | 荣耀终端有限公司 | 程序更新方法和电子设备 |
CN113885928B (zh) * | 2021-05-31 | 2022-10-11 | 荣耀终端有限公司 | 程序更新方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183501A (zh) | 防止在线程序烧写出错的方法 | |
CN104007996B (zh) | 一种分布式控制系统的可靠固件升级实现方法 | |
US5778234A (en) | Method for downloading programs | |
US7664923B2 (en) | Method and system for updating software | |
US7991988B2 (en) | Communication device and firmware update method thereof | |
CN101557583B (zh) | 直放站设备嵌入式软件的远程升级与版本切换方法 | |
US20170228236A1 (en) | Vehicle control device, reprogramming system | |
CN103246536B (zh) | 物联定位系统的固件无线升级方法 | |
CN104750615A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN105718281B (zh) | 一种触摸屏固件升级方法及装置 | |
US20100058316A1 (en) | Updating Firmware with Multiple Processors | |
CN102662749A (zh) | 一种双Boot切换的实现方法及装置 | |
CN102063380B (zh) | 一种向非易失性存储器写入数据的方法及装置 | |
CN109558160A (zh) | 升级方法、嵌入式系统 | |
CN105677398A (zh) | 一种通用的嵌入式计算机软件在线升级方法 | |
KR101822485B1 (ko) | 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법 | |
CN102945173A (zh) | 用户程序在线升级系统和升级方法 | |
CN104820586A (zh) | 一种航天器嵌入式软件在轨维护方法 | |
CN109002310A (zh) | 固件升级方法 | |
CN105677383A (zh) | 一种智能卡数据更新方法 | |
CN103744712A (zh) | 一种应用程序的更新方法及装置 | |
CN102722408B (zh) | 一种通讯设备软件更新的方法及装置 | |
CN110851163A (zh) | 一种基于can通信的兼容多设备平台的软件更新方法 | |
CN107168750A (zh) | 一种固件升级保护方法及系统 | |
CN105183580A (zh) | 一种引导程序的存储方法、故障恢复方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151223 |