CN108874452A - 一种不中断控制系统运行的嵌入式软件Bootloader方法 - Google Patents
一种不中断控制系统运行的嵌入式软件Bootloader方法 Download PDFInfo
- Publication number
- CN108874452A CN108874452A CN201810570703.6A CN201810570703A CN108874452A CN 108874452 A CN108874452 A CN 108874452A CN 201810570703 A CN201810570703 A CN 201810570703A CN 108874452 A CN108874452 A CN 108874452A
- Authority
- CN
- China
- Prior art keywords
- program
- user program
- bootloader
- control
- new command
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种控制系统控制器软件的Bootloader方法,其使得控制器在更新用户程序的过程中,不中断对硬件电路和外部设备的控制。软件分为2个部分:Bootloader程序和用户程序。在软件开始运行后,首先执行Bootloader程序,其读取更新指令信息和控制信息,根据更新指令信息,判断是否更新用户程序,如是,则更新用户程序,并同时根据控制信息对外部实施控制,待更新完成后,清除存储器中的更新指令信息,然后跳转并执行更新后的用户程序;如否,则直接跳转并执行原有用户程序。在用户程序中接收外部用户对于用户程序更新指令,若没有接收到更新指令则继续执行原有程序;若接收到更新指令,则将此更新指令和当前对外部的控制信息存储进存储器,然后跳转并执行Bootloader程序。
Description
技术领域
本发明涉及自动控制技术领域,尤其涉及一种嵌入式控制系统的控制方法。
背景技术
对于某些产品来说,从研发到调试,其功能是一直在调整完善的,从量产再到售后的过程中,其功能也可能扩展升级,这就要求产品自身的设计,能够满足这样的自我更新或升级换代,即能够接收外部的指令和数据实现内部程序的更新。
在这些产品的软件设计,程序被分为引导程序(Bootloader程序)和用户程序。Bootloader程序是一段固化在微控制器中的代码,在上电或复位后,是最先运行的一段程序,完成处理器正常的初始化工作,包括时钟、串口、CAN通信等,然后等待外部指令,或者启动引导功能,进行程序升级,或者直接跳转至用户程序。用户程序是实际发挥控制功能作用的程序,它控制硬件电路和外围设备实现预定的设计功能。
Bootloader程序接收用户指令有几种方式:通过外部输入给芯片的数字量或者模拟量的变化;通过与外部通信传输的信息指令,如CAN通信或串口通信等;通过预先设定的延时,判断指定时间有无特定时间发生;通过读取预先存储的信息指令,如从内部存储器或EEPROM中读取信息。
控制系统上电后,程序内部先运行Bootloader程序,接收用户指令,判断是否要进行用户程序更新,如是,则接收外部传输的用户程序可执行文件,使其代替原有的用户程序;如否,则跳转进入用户程序执行正常的控制功能。
用户要想更新用户程序,先要进入Bootloader程序,通常的做法是,重新上电运行,这样程序自动先运行Bootloader部分,这样逻辑简单,但是需要额外的上下电操作,还可以给与用户程序特定的指令,使其再跳转回Bootloader,这样需要将升级指令存储起来,以使得运行Bootloader后,后者能够得知是否升级。
由于Bootloader程序通常只具有程序引导功能,在现有的更新用户程序的过程中,将原有的用户程序擦除,然后将新程序写入内存并重新执行。这样势必导致用户程序运行的中断,继而不能继续控制外部硬件和设备继续正常运行,而这在有些类别的控制系统是不被接受、易造成损失、或者是不友好的。
发明内容
为了解决现有技术中的问题,本发明提供了一种在Bootloader的同时能够使被控制系统不中断工作的软件控制方法,通过将用户程序中的对外控制执行功能加入Bootloader中,在Bootloader更新程序的同时,能够执行维持原有的对外设备控制能力,使得整个控制系统不至于中断运行。
本发明具体通过如下技术方案实现:
一种不中断控制系统运行的嵌入式软件Bootloader方法,所述软件分为Bootloader程序和用户程序;所述方法包括:在软件开始运行后,首先执行Bootloader程序,所述Bootloader程序读取更新指令信息和控制信息,根据更新指令信息,判断是否更新用户程序;如是,则更新用户程序,并同时根据控制信息对外部实施控制,待更新完成后,清除存储器中的更新指令信息,然后跳转并执行更新后的用户程序;如否,则直接跳转并执行原有用户程序;在用户程序中接收外部用户对于用户程序更新指令,若没有接收到更新指令则继续执行原有程序;若接收到更新指令,则将此更新指令和当前对外部的控制信息存储进存储器,然后跳转并执行Bootloader程序。
进一步地,更新用户程序的实施方法为:接收外部通信传输来的新用户程序可执行文件,将原用户程序从CODE FLASH中擦除,并将新文件写入。
进一步地,根据控制信息对外部实施控制的实施方法为:根据控制系统的具体情况,判断需要连续执行的控制类别,在原有引导功能Bootloader程序中,增加控制程序,其能够与引导功能并行执行,使芯片在执行Bootloader程序的过程中具有相应输出信号的能力。
进一步地,接收用户程序更新指令的实施方法为:用户程序在正常控制循环或中断服务程序中,增加对用外部指定指令进行判断的程序。
进一步地,获取更新指令的实施方法为以下方式中的一种或者多种的组合:通过程序从存储器中读取更新指令;读取通过外部数字量、模拟量或各种通信方式输入的更新指令;通过判断是否超过指定时间以生成更新指令。
进一步地,获取控制信息的实施方法为以下方式中的一种:从存储器中读取预先设定的控制信息;Bootloader程序中预先设定了控制信息。
进一步地,所述控制信息是由用户程序生成并存储进去的。
进一步地,Bootloader程序对上述各种方法获取的信息进行再次处理,再生成最终的信息。
进一步地,当获取更新指令的实施方法为通过判断是否超过指定时间以生成更新指令时,在获取更新指令的延时中也要执行控制指令。
本发明的有益效果是:本发明可使用户程序在更新过程中,能够在控制系统正常运行时进行,不需要断电处理,并能够连续地执行控制过程,不中断对硬件电路和外部设备的控制。
附图说明
图1是本发明的第一实施例的方法流程图;
图2是本发明的第二实施例的方法流程图。
具体实施方式
下面结合附图说明及具体实施方式对本发明进一步说明。
本发明的Bootloader程序,是指一段固化在微控制器中的代码,在上电或复位后最先运行的一段程序,其能够根据指令,启动引导功能进行用户程序更新,或者直接跳转至用户程序。
本发明的用户程序,是指微控制器中,实际发挥控制功能作用的程序,它控制硬件电路和外部设备实现预定的设计功能。
本发明的存储器,是指程序所在芯片内部的一段存储区域,或者是外部的具有存储功能的电路、器件和设备等,其能够与Bootloader程序和用户程序进行信息读写的交互,特别的,与前二者交互的存储器可以是各自独立的,即不一定是同一个存储器(如芯片FLASH、EEPROM、能够与芯片通信的PC机及其软件等)。
本发明的更新指令,是指用于判断是否进行用户程序更新的信息,它可以由用户程序生成,也可以由外部用户给定,特别地,用户程序生成的更新指令和Bootloader程序读取的更新指令可以是各自独立的,即不一定是同一个更新指令。
本发明的控制信息,是指从原有用户程序结束运行,到新用户程序开始运行的区间内,希望硬件电路和外部设备所执行的控制信息。(它可以是用户程序正在执行的控制信息,也可以是由内部程序或外部指令给定的控制信息,还可以是指定存储器设定好的控制信息)。
本发明的一种控制系统控制器软件的Bootloader方法,其使得控制器在更新用户程序的过程中,不中断对硬件电路和外部设备的控制。其软件分为2个部分:Bootloader程序和用户程序。
第一实施例如图1所示,在软件开始运行后,首先执行Bootloader程序,其读取更新指令信息和控制信息,根据更新指令信息,判断是否更新用户程序,如是,则更新用户程序,并同时根据控制信息对外部实施控制,待更新完成后,清除存储器中的更新指令信息,然后跳转并执行更新后的用户程序;如否,则直接跳转并执行原有用户程序。在用户程序中接收外部用户对于用户程序更新指令,若没有接收到更新指令则继续执行原有程序;若接收到更新指令,则将此更新指令和当前对外部的控制信息存储进存储器,然后跳转并执行Bootloader程序。
其中,更新用户程序的实施方法为:接收外部通信传输来的新用户程序可执行文件,将原用户程序从CODE FLASH中擦除,并将新文件写入,具体方法步骤根据控制芯片型号的不同进行针对性实施。
其中,根据控制信息对外部实施控制的实施方法为:根据控制系统的具体情况,判断需要连续执行的控制类别,在原有引导功能Bootloader程序中,增加控制程序,其能够与引导功能并行执行,使芯片具有相应输出信号的能力(如增加配置GPIO、PWM、CAN、串口通信)。
其中,接收用户程序更新指令的实施方法为:用户程序在正常控制循环或中断服务程序中,增加对用外部指定指令进行判断的程序,指令可以通过数字量、模拟量或通过各种通信方式进行输入。各种通信方式一般可为CAN通信,SCI串口通信等,也可以通过添加无线模块进行无线通信。
其中,获取更新指令的实施方法可以为:通过程序从存储器中读取更新指令。另一种实施方法为:读取通过外部数字量、模拟量或通过各种通信方式输入的更新指令。再一种实施方法为,通过判断是否超过指定时间以生成更新指令。更进一步地一种实施方法为:将上述三种方法任意组合同时使用。
其中,获取控制信息的实施方法可以为,从存储器中读取预先设定的控制信息。另一种实施方法为:这些控制信息是由用户程序生成并存储进去的。另一种实施方法为:Bootloader程序预先设定了控制信息,可用于直接执行,即不用进行外部的读取操作。更进一步地,Bootloader程序可以对上述各种方法获取的信息进行再次处理,再生成最终的信息。
当获取更新指令的实施方法为:通过判断是否超过指定时间以生成更新指令时,本发明的控制逻辑变为图2所示的第二实施例,即在获取更新指令的延时中也要执行控制指令。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种不中断控制系统运行的嵌入式软件Bootloader方法,所述软件分为Bootloader程序和用户程序;其特征在于,所述方法包括:在软件开始运行后,首先执行Bootloader程序,所述Bootloader程序读取更新指令信息和控制信息,根据更新指令信息,判断是否更新用户程序;如是,则更新用户程序,并同时根据控制信息对外部实施控制,待更新完成后,清除存储器中的更新指令信息,然后跳转并执行更新后的用户程序;如否,则直接跳转并执行原有用户程序;在用户程序中接收外部用户对于用户程序更新指令,若没有接收到更新指令则继续执行原有程序;若接收到更新指令,则将此更新指令和当前对外部的控制信息存储进存储器,然后跳转并执行Bootloader程序。
2.根据权利要求1所述的方法,其特征在于:更新用户程序的实施方法为:接收外部通信传输来的新用户程序可执行文件,将原用户程序从CODE FLASH中擦除,并将新文件写入。
3.根据权利要求1所述的方法,其特征在于:根据控制信息对外部实施控制的实施方法为:根据控制系统的具体情况,判断需要连续执行的控制类别,在原有引导功能Bootloader程序中,增加控制程序,其能够与引导功能并行执行,使芯片在执行Bootloader程序的过程中具有相应输出信号的能力。
4.根据权利要求1所述的方法,其特征在于:接收用户程序更新指令的实施方法为:用户程序在正常控制循环或中断服务程序中,增加对用外部指定指令进行判断的程序。
5.根据权利要求1所述的方法,其特征在于:获取更新指令的实施方法为以下方式中的一种或者多种的组合:通过程序从存储器中读取更新指令;读取通过外部数字量、模拟量或通过各种通信方式输入的更新指令;通过判断是否超过指定时间以生成更新指令。
6.根据权利要求1所述的方法,其特征在于:获取控制信息的实施方法为:从eeprom存储器中读取预先设定的控制信息。
7.根据权利要求6所述的方法,其特征在于:所述控制信息是由用户程序生成并存储进去的。
8.根据权利要求1所述的方法,其特征在于:获取控制信息的实施方法为:所述Bootloader程序中预先设定了控制信息。
9.根据权利要求6-8任一项所述的方法,其特征在于:所述Bootloader程序对上述各种方法获取的信息进行再次处理,再生成最终的信息。
10.根据权利要求1或5所述的方法,其特征在于:当获取更新指令的实施方法为通过判断是否超过指定时间以生成更新指令时,在获取更新指令的延时中也要执行控制指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810570703.6A CN108874452A (zh) | 2018-06-05 | 2018-06-05 | 一种不中断控制系统运行的嵌入式软件Bootloader方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810570703.6A CN108874452A (zh) | 2018-06-05 | 2018-06-05 | 一种不中断控制系统运行的嵌入式软件Bootloader方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874452A true CN108874452A (zh) | 2018-11-23 |
Family
ID=64336453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810570703.6A Pending CN108874452A (zh) | 2018-06-05 | 2018-06-05 | 一种不中断控制系统运行的嵌入式软件Bootloader方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874452A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202085311U (zh) * | 2011-06-20 | 2011-12-21 | 西安茁茁电子有限公司 | 可远程无线升级的直放站监控装置 |
CN102855151A (zh) * | 2012-08-21 | 2013-01-02 | 武汉电信器件有限公司 | 不打断业务的光模块固件在应用升级方法 |
US20140372746A1 (en) * | 2010-10-13 | 2014-12-18 | International Business Machines Corporation | Port throttling across an operating system restart during a hot upgrade |
CN104951318A (zh) * | 2014-03-26 | 2015-09-30 | 中兴通讯股份有限公司 | 软件版本更新的方法和装置 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN106897090A (zh) * | 2017-02-06 | 2017-06-27 | 山东鲁能智能技术有限公司 | 一种嵌入式设备程序升级方法及系统 |
-
2018
- 2018-06-05 CN CN201810570703.6A patent/CN108874452A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140372746A1 (en) * | 2010-10-13 | 2014-12-18 | International Business Machines Corporation | Port throttling across an operating system restart during a hot upgrade |
CN202085311U (zh) * | 2011-06-20 | 2011-12-21 | 西安茁茁电子有限公司 | 可远程无线升级的直放站监控装置 |
CN102855151A (zh) * | 2012-08-21 | 2013-01-02 | 武汉电信器件有限公司 | 不打断业务的光模块固件在应用升级方法 |
CN104951318A (zh) * | 2014-03-26 | 2015-09-30 | 中兴通讯股份有限公司 | 软件版本更新的方法和装置 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN106897090A (zh) * | 2017-02-06 | 2017-06-27 | 山东鲁能智能技术有限公司 | 一种嵌入式设备程序升级方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102650947B (zh) | 一种Android手持设备连续增量的空中升级方法 | |
CN109358882B (zh) | 一种电视终端进行固件升级的方法及装置 | |
CN107704285B (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN103677921B (zh) | 一种Android系统兼容wifi芯片的方法及系统 | |
CN102945173B (zh) | 用户程序在线升级系统和升级方法 | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
CN106897090B (zh) | 一种嵌入式设备程序升级方法及系统 | |
CN107465539A (zh) | 固件的升级方法、终端及固件的升级系统 | |
CN103777972A (zh) | 基于现场可编程门阵列的系统、配置方法以及升级方法 | |
CN106293807A (zh) | 一种基于DSP的Flash芯片引导加载方法 | |
CN105930186B (zh) | 多cpu的软件加载方法及基于多cpu的软件加载装置 | |
CN108037938B (zh) | 一种eMMC的开卡方法 | |
CN104156237A (zh) | 单片机的在线升级方法 | |
CN102520961A (zh) | 片外在线可编程的soc系统及其控制方法 | |
CN113741944A (zh) | 一种具备升级功能的机器程序系统及升级方法与应用 | |
CN104428751A (zh) | 程序数据的更新方法及设备 | |
CN109766113B (zh) | 一种固态硬盘控制器的固件更新方法及装置 | |
CN108920197B (zh) | 一种提高fpga串行被动加载速率的加载电路及加载方法 | |
CN110908706B (zh) | 一种多版本软件的管理方法 | |
CN108874452A (zh) | 一种不中断控制系统运行的嵌入式软件Bootloader方法 | |
CN110569038B (zh) | 随机验证参数设计方法、装置、计算机设备及存储介质 | |
CN112835564A (zh) | 代码生成方法和装置 | |
CN109426511A (zh) | 软核更新方法和系统 | |
CN102193860A (zh) | 微控制器在线调试电路及方法、微控制器 | |
CN102375749A (zh) | 一种采用i2c总线快速下载和更新固件的方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |