CN106648759A - 一种通用编程器固件的更新方法 - Google Patents
一种通用编程器固件的更新方法 Download PDFInfo
- Publication number
- CN106648759A CN106648759A CN201611081505.0A CN201611081505A CN106648759A CN 106648759 A CN106648759 A CN 106648759A CN 201611081505 A CN201611081505 A CN 201611081505A CN 106648759 A CN106648759 A CN 106648759A
- Authority
- CN
- China
- Prior art keywords
- firmware
- update
- program
- mcu
- mark position
- 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/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种通用编程器固件的更新方法,包括:下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;MCU重新上电后,boot程序首先从非易失性存储器中读取更新标记位,根据所述更新标记位判断是否需要更新固件程序;若需要更新固件程序,boot程序再从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;若不需要更新固件程序,则直接执行原有固件程序。采用本发明无需外接编程接口等硬件电路即可完成MCU固件的更新,方便简单,并提高固件更新效率。
Description
技术领域
本发明涉及嵌入式开发技术领域,具体涉及一种通用编程器固件的更新方法。
背景技术
在普通8位OTP型MCU项目开发中,编程器是一个重要的开发工具。通过它可以将开发人员编译好的程序烧录到MCU的程序存储器中。但如果在编程器开发完成,并且交付给客户使用后,需要增加新的功能或需要对新OTP MCU编程支持,这时,就需要更新编程器的固件程序。
在传统的方案中,需要客户将编程器寄给编程器开发者,由编程器开发者更新好固件程序后,再寄给客户使用,这种方法非常麻烦且效率低下。因此,可在编程器的研发初期考虑由客户自己更新编程器的固件程序。
发明内容
针对现有技术的不足,本发明的主要目的在于:解决依赖编程器开发者更新固件的问题,客户可以根据需要更新固件的嵌入产品自行更新编程器的固件程序。
为实现前述目的,本发明公开了一种通用编程器固件的更新方法,具体包括:
下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;
MCU重新上电后,boot程序根据所述更新标记位判断是否需要更新固件程序;
若需要更新固件程序,boot程序从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;
之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序;
若不需要更新固件程序,跳转至原有固件程序的入口地址执行程序;
其中,所述boot程序为预先烧录至MCU中。
优选地,所述下载固件代码包括:
在MCU固件程序中预设置一下载命令,上位机发送固件更新命令时,MCU下载固件代码。
优选地,所述MCU支持IAP功能。
优选地,所述boot程序位于MCU的复位地址处,MCU运行时首先执行boot程序。
优选地,所述固件程序在编译时,改变其加载地址,使其位于所述boot程序之后。
优选地,所述非易失性存储器为内部或外部EEPROM。
优选地,所述非易失性存储器为内部或外部FLASH。
优选地,所述下载固件代码的方式包括网络下载、远程传输。
优选地,所述更新标记位的值为1或0;所述下载固件代码并设置更新标记位包括将更新标记位设置为1。
优选地,所述判断是否需要更新固件程序包括:
所述更新标记位等于1时,表示需要更新固件;
所述更新标记位等于0时,表示不需要更新固件。
与现有技术相比,本发明的优点在于:采用本发明公开的一种通用编程器固件的更新方法,不需要提前在编程器的电路板上增加编程接口等硬件电路,此更新方法简单,操作方便,且大大提高了固件更新的效率。
附图说明
图1是本发明一实施例提出的一种通用编程器固件的更新方法中下载固件部分的流程图;
图2是本发明一实施例提出的一种通用编程器固件的更新方法中更新固件部分的流程图。
具体实施方式
鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。
本发明实施例提出一种通用编程器固件的更新方法,具体包括以下过程:
下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;
MCU重新上电后,boot程序首先从非易失性存储器中读取更新标记位,根据所述更新标记位判断是否需要更新固件程序;
若需要更新固件程序,boot程序再从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;
之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序。
若不需要更新固件程序,跳转至原有固件程序的入口地址执行程序;
其中,所述boot程序为预先烧录至MCU中,通过该程序来判断是否要更新固件,以及执行更新固件的具体操作。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
根据前述固件更新的方法可知,本发明实施例所述方法主要由两部分组成:下载固件代码和更新固件程序。图1是本发明一实施例提出的一种通用编程器固件的更新方法中下载固件代码过程的流程图,如图1所示,具体步骤包括:
步骤101,上位机发送固件更新命令;
在正常的MCU固件程序中,增加一个下载命令,用于下载固件程序。上位机软件将通过网络下载、远程传输等方式将新的固件代码下载下来后,上位机发送固件更新命令,MCU执行下载命令进行固件代码下载操作。
步骤102,将固件代码存储到非易失性存储器中;
MCU执行下载命令,将固件代码保存到内部或外部存储器中,以备固件更新使用。
步骤103,设置更新标记位Flag_Update=1;
更新标记位用于提示是否需要进行固件更新,Flag_Update=1时,表示需要更新固件;Flag_Update=0时,表示不需要更新固件。
步骤104,将该更新标记位Flag_Update保存在内部或外部存储器中。
由于在固件的更新过程中需要对MCU重新上电,因此,用来存储固件代码的所述内部或外部存储器须为非易失性存储器。所述存储器可以为内部或外部存储器,如EEPORM、FLASH等。
图2是本发明一实施例提出的一种通用编程器固件的更新方法中更新固件程序过程的流程图,如图2所示,具体步骤如下:
步骤201,boot程序从如前所述的非易失性存储器中读取之前保存的更新标记位Flag_Update,并判断Flag_Update值;
若Flag_Update=1,则表示需要更新固件,执行步骤202;若Flag_Update=0,则表示不需要更新固件,直接跳转到原有固件程序的入口地址执行程序,执行步骤205。
步骤202,boot程序从所述非易失性存储器中读出固件代码,并将该固件代码写入MCU自身的程序存储器中;
步骤203,待固件代码全部写完毕后,将Flag_Update的值修改为0,并再次保存到所述非易失性存储器中;
固件更新后将Flag_Update的值修改为0,并保存在非易失性存储器中,待MCU重新上电时,boot程序读取到Flag_Update=0则跳过固件更新的操作,从而防止了发生重复更新固件程序的情况。
步骤204,boot程序跳转到更新后的固件程序的入口地址,执行更新后的固件程序;
步骤205,执行固件程序。
为保证固件更新的准确性和有效性,boot程序须位于MCU的复位地址处,并保证MCU运行的第一个程序必须是boot程序。固件程序须在编译时改变其加载地址,使其地址位于boot程序之后。
进一步地,为了保证固件程序的稳定性,在执行具体更新操作前,还可包括一备份过程,对原固件程序进行备份,以防更新失败导致固件程序无法使用。
需要说明的是,本发明实施例提出的一种固件更新方法中所述的下载固件代码和更新固件程序过程,在操作过程中是独立的两个执行过程,MCU根据boot程序判断是否需要执行固件更新操作,而在进行固件更新的具体过程中,则需要使用下载过程中获得的固件代码方能完成固件更新操作。
采用本发明实施例提出的固件更新方法,不需要提前在编程器的电路板上增加编程接口等硬件电路,只需MCU本身支持IAP功能即可。且在实际应用中,采用本方法可直接由客户自己进行更新编程器的固件程序,不仅减少对原始固件程序开发者的依赖,同时也提高了固件更新的效率。
应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种通用编程器固件的更新方法,其特征在于包括:
下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;
MCU重新上电后,boot程序根据所述更新标记位判断是否需要更新固件程序;
若需要更新固件程序,boot程序从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;
之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序;
若不需要更新固件程序,boot程序跳转至原有固件程序的入口地址执行固件程序;
其中,所述boot程序为预先烧录至MCU中。
2.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于所述下载固件代码包括:
在MCU固件程序中预设置一下载命令,上位机发送固件更新命令时,MCU执行下载命令以下载固件代码。
3.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述MCU支持IAP功能。
4.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述boot程序位于MCU的复位地址处,MCU运行时首先执行boot程序。
5.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述固件程序在编译时,改变其加载地址,使其位于所述boot程序之后。
6.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述非易失性存储器为内部或外部EEPROM。
7.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述非易失性存储器为内部或外部FLASH。
8.根据权利要求1或2所述的一种通用编程器固件的更新方法,其特征在于:所述下载固件代码的方式包括网络下载、远程传输。
9.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:
所述更新标记位的值为1或0;
所述下载固件代码并设置更新标记位包括将更新标记位设置为1。
10.根据权利要求9所述的一种通用编程器固件的更新方法,其特征在于所述判断是否需要更新固件程序包括:
所述更新标记位等于1时,表示需要更新固件;
所述更新标记位等于0时,表示不需要更新固件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611081505.0A CN106648759A (zh) | 2016-11-30 | 2016-11-30 | 一种通用编程器固件的更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611081505.0A CN106648759A (zh) | 2016-11-30 | 2016-11-30 | 一种通用编程器固件的更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106648759A true CN106648759A (zh) | 2017-05-10 |
Family
ID=58813668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611081505.0A Pending CN106648759A (zh) | 2016-11-30 | 2016-11-30 | 一种通用编程器固件的更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106648759A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656776A (zh) * | 2017-10-31 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种fpga加速卡的固件更新方法、装置及介质 |
CN109062562A (zh) * | 2018-07-27 | 2018-12-21 | 四川长虹电器股份有限公司 | Mcu固件程序的下载方法 |
CN109388422A (zh) * | 2018-09-26 | 2019-02-26 | 威胜集团有限公司 | 固件程序升级方法及其电能表 |
CN109800012A (zh) * | 2019-03-01 | 2019-05-24 | 四川长虹电器股份有限公司 | 一种mcu固件升级方法 |
CN109979411A (zh) * | 2019-04-29 | 2019-07-05 | 上海天马有机发光显示技术有限公司 | 一种显示面板、显示面板的烧录方法及上电方法 |
CN113050975A (zh) * | 2021-04-21 | 2021-06-29 | 厦门酷虹科技有限公司 | 一种基于直流电源双线制的单片机固件更新方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830984A (zh) * | 2011-06-14 | 2012-12-19 | 联想(北京)有限公司 | 固件更新的方法、芯片以及通信终端 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN103064692A (zh) * | 2011-10-19 | 2013-04-24 | 北京市三希电子科技开发公司 | 一种固件的更新方法及装置 |
CN103853565A (zh) * | 2012-11-28 | 2014-06-11 | 京信通信系统(中国)有限公司 | 基于arm的固件升级方法和装置 |
-
2016
- 2016-11-30 CN CN201611081505.0A patent/CN106648759A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830984A (zh) * | 2011-06-14 | 2012-12-19 | 联想(北京)有限公司 | 固件更新的方法、芯片以及通信终端 |
CN103064692A (zh) * | 2011-10-19 | 2013-04-24 | 北京市三希电子科技开发公司 | 一种固件的更新方法及装置 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN103853565A (zh) * | 2012-11-28 | 2014-06-11 | 京信通信系统(中国)有限公司 | 基于arm的固件升级方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656776A (zh) * | 2017-10-31 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种fpga加速卡的固件更新方法、装置及介质 |
CN109062562A (zh) * | 2018-07-27 | 2018-12-21 | 四川长虹电器股份有限公司 | Mcu固件程序的下载方法 |
CN109388422A (zh) * | 2018-09-26 | 2019-02-26 | 威胜集团有限公司 | 固件程序升级方法及其电能表 |
CN109800012A (zh) * | 2019-03-01 | 2019-05-24 | 四川长虹电器股份有限公司 | 一种mcu固件升级方法 |
CN109979411A (zh) * | 2019-04-29 | 2019-07-05 | 上海天马有机发光显示技术有限公司 | 一种显示面板、显示面板的烧录方法及上电方法 |
CN113050975A (zh) * | 2021-04-21 | 2021-06-29 | 厦门酷虹科技有限公司 | 一种基于直流电源双线制的单片机固件更新方法 |
CN113050975B (zh) * | 2021-04-21 | 2022-08-05 | 厦门酷虹科技有限公司 | 一种基于直流电源双线制的单片机固件更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648759A (zh) | 一种通用编程器固件的更新方法 | |
CN109933348B (zh) | 一种电子控制单元中Bootloader的更新方法和装置 | |
KR100584338B1 (ko) | 소프트웨어 업데이트 방법 및 시스템 | |
CN103176824B (zh) | 一种系统升级的方法及装置 | |
KR100506203B1 (ko) | 부팅 및 부트 코드 업데이트 방법 및 시스템 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN105320554A (zh) | 程序更新的方法、用于程序更新的客户端及系统 | |
CN108804118B (zh) | 固件升级方法、设备及存储介质 | |
US20140201727A1 (en) | Updating firmware compatibility data | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
CN104572206A (zh) | 应用程序自更新和备份恢复的方法 | |
CN101807154B (zh) | 在嵌入式操作系统更新失败的情况下仍能开机的电子装置及其方法 | |
US20060200815A1 (en) | Electronic Device and Method for Updating Related Programs | |
CN106383692A (zh) | 一种单片机嵌入式设备ota升级方法 | |
US20120185682A1 (en) | Method and system for post-build modification of firmware binaries to support different hardware configurations | |
CN102004657B (zh) | 一种电子设备及其升级方法 | |
CN106874195A (zh) | 一种针对android应用的bug修复和持续交付方案 | |
CN106462422A (zh) | 用于多系统终端的系统升级方法、升级装置和终端 | |
CN101334737A (zh) | 一种嵌入式设备的启动或复位方法 | |
JP2010044574A (ja) | 携帯端末、携帯端末制御方法、及び携帯端末制御プログラム | |
CN110716721A (zh) | 兼容网口和串口的tms320c6748程序加载方法 | |
CN112527365B (zh) | 应用程序更新方法、非易失存储器、存储介质及家用电器 | |
JP2018195046A (ja) | プログラム更新装置、プログラム更新方法、プログラム更新プログラム及びプログラム更新システム | |
CN108958795B (zh) | 一种嵌入式系统中BootLoader代码重利用方法和开发板 | |
CN104199678B (zh) | 获取板卡的类型id的方法和软件版本升级的方法 |
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: 20170510 |