CN106598586A - 用于mcu芯片的程序升级方法 - Google Patents
用于mcu芯片的程序升级方法 Download PDFInfo
- Publication number
- CN106598586A CN106598586A CN201611124136.9A CN201611124136A CN106598586A CN 106598586 A CN106598586 A CN 106598586A CN 201611124136 A CN201611124136 A CN 201611124136A CN 106598586 A CN106598586 A CN 106598586A
- Authority
- CN
- China
- Prior art keywords
- address
- memory block
- program
- mcu chip
- value
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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
本发明公开了一种用于MCU芯片的程序升级方法,包括:步骤一,将新程序存储在所述SRAM存储器中;步骤二,当所述FLASH存储器处于能够再编程状态时,将所述新程序从所述SRAM存储器搬移至所述第二存储区;步骤三,将所述第二存储区的首地址改为所述第一地址,且将所述第一存储区的首地址改为所述第二地址。本发明的用于MCU芯片的程序升级方法,针对传统MCU芯片升级的不足,利用上述方法,使得可以实现在升级程序时,无需擦除MCU中原有程序,提高升级的可靠性;在升级过程中,无需停止运行程序。不仅规避了升级过程中各种意外以及程序版本临时替换带来的风险,也使升级过程更加的安全可靠。
Description
技术领域
本发明涉及一种用于MCU芯片的程序升级方法。
背景技术
目前,MCU(Microcontroller Unit)芯片,即微控制单元芯片,是把中央处理器(CPU)的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,被广泛的应用于各种领域。
在MCU芯片中,内存通常是指内置的FLASH存储器,MCU芯片的程序通常都存储在FLASH内,如图1所示。而程序开始运行时,程序通常必须从FLASH存储器的起始地址(即0X00地址)开始运行。
图2为现有技术中对MCU芯片的程序升级过程,即先擦除FLASH存储器中存储的原程序,然后将新程序装载到FLASH存储器中,即完成程序升级。当对MCU芯片进行程序升级之后,新程序不论存储在FLASH存储器的哪个区域,CPU还是从0X00地址开始执行。
现有技术中的程序升级方法的缺点有:(1)原程序擦除时,一旦出现掉电等异常状况,则会造成原程序和新程序均无法运行的情况;(2)在执行升级时,由于原程序已经擦除,因此MCU芯片必须停止原程序的运行,这对程序运行不可间断的设备无疑是无法接受的方式。
针对现有技术中所存在的问题,提供一种用于MCU芯片的程序升级方法具有重要意义。
发明内容
为解决上述问题,本发明提供一种用于MCU芯片的程序升级方法。
本发明的用于MCU芯片的程序升级方法,所述MCU芯片包括FLASH存储器、SRAM存储器和CPU,所述FLASH存储器包括第一存储区和第二存储区,在所述MCU芯片中的程序升级之前,原程序存储在所述第一存储区中,所述第一存储区的首地址为第一地址,所述第二存储区的首地址为第二地址,所述第一地址为所述CPU执行程序时的起始地址,所述方法包括:步骤一,将新程序存储在所述SRAM存储器中;步骤二,当所述FLASH存储器处于能够再编程状态时,将所述新程序从所述SRAM存储器搬移至所述第二存储区;步骤三,将所述第二存储区的首地址改为所述第一地址,且将所述第一存储区的首地址改为所述第二地址。
进一步地,所述方法在所述步骤三之后还包括:步骤四,从所述第二存储区中读出所述新程序并进行校验,若校验失败,则将所述第二存储区的首地址改为所述第二地址,且将所述第一存储区的首地址改为所述第一地址。
进一步地,在所述MCU芯片中的程序升级之前,所述FLASH存储器中还存储有升级管理程序,所述升级管理程序执行所述步骤一至所述步骤四,所述方法在所述步骤一之前还包括:步骤零,将所述升级管理程序从所述FLASH存储器搬移至所述SRAM存储器,然后在所述CPU中执行所述升级管理程序。
进一步地,所述FLASH存储器的控制器中设置有寄存器,其用于对所述第一存储区和所述第二存储区的地址进行翻转,当所述寄存器的值为第一值时,所述第一存储区的首地址为第一地址,所述第二存储区的首地址为第二地址;当所述寄存器的值为第二值时,所述第一存储区的首地址为第二地址,所述第二存储区的首地址为第一地址,在所述MCU芯片中的程序升级之前,所述寄存器的值为所述第一值,所述步骤三具体为:所述升级管理程序将所述寄存器的值从所述第一值改写为所述第二值;所述步骤四具体为:所述升级管理程序从所述第二存储区中读出所述新程序并进行校验,若校验失败,则将所述寄存器的值从所述第二值改写为所述第一值。
进一步地,所述MCU芯片还包括外部通信接口、AHB TO APB总线转换器和AHB-LITE总线,所述步骤一具体为:所述新程序依次通过所述外部通信接口、所述AHB TO APB总线转换器和所述AHB-LITE总线被所述CPU读入,然后存储在所述SRAM存储器中。优选地,所述外部通信接口包括SPI通信接口、UART通信接口和I2C通信接口。
本发明的用于MCU芯片的程序升级方法,针对传统MCU芯片升级的不足,利用上述方法,使得可以实现在升级程序时,无需擦除MCU中的原程序,提高升级的可靠性;并且在升级过程中,也无需停止程序的运行。不仅规避了升级过程中各种意外以及程序版本临时替换带来的风险,也使升级过程更加的安全可靠。
附图说明
图1为现有技术中MCU芯片的FLASH存储器中存储程序的示意图;
图2为现有技术中MCU芯片进行程序升级的示意图;
图3为本发明的方法的步骤流程示意图;
图4为本发明适用的MCU芯片的结构示意图;
图5为本发明适用的MCU芯片中FLASH存储器的结构示意图,其所示为程序升级之前的状态;
图6为执行图3所示的流程时MCU芯片内部的程序搬移路径示意图;
图7为应用本发明的方法时FLASH存储器中的存储状态变化的一个示例的示意图。
具体实施方式
下面,结合附图,对本发明的用于MCU芯片的程序升级方法作进一步的说明。
如图4所示,本发明适用的MCU芯片包括FLASH存储器3、SRAM存储器1和CPU 2,还包括外部通信接口6(SPI通信接口、UART通信接口和I2C通信接口)、AHB TO APB总线转换器5和AHB-LITE总线4。FLASH存储器3、SRAM存储器1和CPU 2均连接在AHB-LITE总线4上。
如图5所示,FLASH存储器3包括第一存储区32和第二存储区33。在每次MCU芯片中的程序升级之前,将原程序所在的存储区认为是第一存储区32,另一块存储区认为是第二存储区33。在每次MCU芯片中的程序升级之前,第一存储区32的首地址为第一地址,第二存储区33的首地址为第二地址。无论在程序升级之前还是程序升级之后,第一地址总是为CPU2执行程序时的起始地址。
此外,FLASH存储器3还具有FLASH控制器3A,FLASH控制器3A中设置有寄存器31。寄存器31用于对第一存储区32和第二存储区33的地址进行翻转,参考图7所示的示例,即:当寄存器31的值为第一值(例如“10”)时,第一存储区32的首地址为第一地址(例如0x00),第二存储区33的首地址为第二地址(例如0x10);当寄存器31的值为第二值(例如“01”)时,第一存储区32的首地址为第二地址(例如0x10),第二存储区33的首地址为第一地址(例如0x00)。
需要说明的是,尽管图7中只示出了第一存储区32和第二存储区33的首地址的翻转,但可以理解的是,当寄存器31的值被改写时,翻转的地址不只是第一存储区32和第二存储区33的首地址,而是第一存储区32和第二存储区33的全部地址,即第一存储区32和第二存储区33中在其首地址之后的地址也随着首地址的地址而按地址顺序改变。
由于在每次MCU芯片中的程序升级之前,第一存储区32的首地址为第一地址,第二存储区33的首地址为第二地址,因此,在每次MCU芯片中的程序升级之前,寄存器31的值认为是第一值。例如在图7所示的示例中,第一值为“10”。
如图3所示,图3为本发明的方法的步骤流程示意图。同时参考图6和图7,该方法包括:
步骤零S0,将升级管理程序从FLASH存储器3搬移至SRAM存储器1,然后在CPU 2中执行升级管理程序。升级管理程序管理新程序的数据传输路径、程序升级的步骤和流程、以及在程序升级后对新程序进行比对和校验。
将升级管理程序先搬移到SRAM中再运行,而不是直接运行存储在FLASH存储器中的升级管理程序,其意义在于,能够避免程序升级过程中FLASH存储器异常引起的风险,也能够避免在程序升级时存储在FLASH存储器中的升级管理程序被异常改写。
步骤一S1,升级管理程序将新程序存储在SRAM存储器1中。具体地,新程序依次通过外部通信接口6、AHB TO APB总线转换器5和AHB-LITE总线4被CPU 2读入,然后存储在SRAM存储器1中。
之所以要将新程序先暂存在SRAM存储器1中,其原因是出于程序保护的目的,FLASH存储器3通常不能从外部直接写入。此外,如果直接对FLASH存储器3进行操作区的操作,如果在操作时FLASH存储器3出现掉电等异常,则会出现FLASH存储器3中的原程序被破坏、但新程序还未完全写入的状态。因此,先把新程序暂存在SRAM存储器1中,能够保证原程序和新程序中至少有一套程序是可以运行的。
步骤二S2,当FLASH存储器3处于能够再编程状态时,升级管理程序将新程序从SRAM存储器1搬移至FLASH存储器3的第二存储区33。
步骤三S3,升级管理程序将寄存器31的值从第一值(例如图7的0x10)改写为第二值(例如图7的0x01),从而将第二存储区33的首地址改为第一地址,且将第一存储区32的首地址改为第二地址。由于无论在程序升级之前还是程序升级之后,第一地址总是为CPU执行程序时的起始地址,因此在步骤三S3执行完之后,由于CPU执行从第一地址开始存储的程序,即执行第二存储区33中存储的新程序。
步骤四S4,升级管理程序从第二存储区33中读出新程序并进行校验,若校验失败,则升级管理程序将寄存器31的值从第二值重新改写为第一值,即将第二存储区33的首地址重新改为第二地址,且将第一存储区32的首地址重新改为第一地址。由于无论在程序升级之前还是程序升级之后,第一地址总是为CPU执行程序时的起始地址,因此在步骤四S4执行完之后,CPU执行从第一地址开始存储的程序,即第一存储区32中存储的原程序。即,如果升级管理程序对搬移到FLASH存储器3中的新程序进行校验,如果校验失败,说明FLASH存储器3中的新程序有误,因此,升级管理程序将第一存储区32和第二存储区33的地址再次翻转,使得CPU能够执行原程序,以保证MCU芯片的正常使用。
本发明的有益效果在于:
(1)本发明使用了程序备份型的升级,即在FLASH存储器中任何时刻至少有一套可运行的程序存在。本发明在升级程序时,无需擦除MCU中的原程序,提高了升级的可靠性;并且在升级过程中,也无需停止原程序的运行。
(2)由于本发明可以通过改写寄存器的值,来改变CPU运行的首地址,从而改变CPU运行的程序,因此本发明的方法便于程序回退。假如新程序在运行中发现问题,则可以通过改变寄存器的值来使MCU芯片回退到原程序,极大地规避程序版本临时替换带来的风险。
以上,仅为本发明的示意性描述,本领域技术人员应该知道,在不偏离本发明的工作原理的基础上,可以对本发明作出多种改进,这均属于本发明的保护范围。
Claims (6)
1.一种用于MCU芯片的程序升级方法,所述MCU芯片包括FLASH存储器、SRAM存储器和CPU,其特征在于,
所述FLASH存储器包括第一存储区和第二存储区,在所述MCU芯片中的程序升级之前,原程序存储在所述第一存储区中,所述第一存储区的首地址为第一地址,所述第二存储区的首地址为第二地址,所述第一地址为所述CPU执行程序时的起始地址,
所述方法包括:
步骤一,将新程序存储在所述SRAM存储器中;
步骤二,当所述FLASH存储器处于能够再编程状态时,将所述新程序从所述SRAM存储器搬移至所述第二存储区;
步骤三,将所述第二存储区的首地址改为所述第一地址,且将所述第一存储区的首地址改为所述第二地址。
2.如权利要求1所述的用于MCU芯片的程序升级方法,其特征在于,所述方法在所述步骤三之后还包括:
步骤四,从所述第二存储区中读出所述新程序并进行校验,若校验失败,则将所述第二存储区的首地址改为所述第二地址,且将所述第一存储区的首地址改为所述第一地址。
3.如权利要求2所述的用于MCU芯片的程序升级方法,其特征在于,在所述MCU芯片中的程序升级之前,所述FLASH存储器中还存储有升级管理程序,所述升级管理程序执行所述步骤一至所述步骤四,所述方法在所述步骤一之前还包括:
步骤零,将所述升级管理程序从所述FLASH存储器搬移至所述SRAM存储器,然后在所述CPU中执行所述升级管理程序。
4.如权利要求3所述的用于MCU芯片的程序升级方法,其特征在于,所述FLASH存储器的控制器中设置有寄存器,其用于对所述第一存储区和所述第二存储区的地址进行翻转,当所述寄存器的值为第一值时,所述第一存储区的首地址为第一地址,所述第二存储区的首地址为第二地址;当所述寄存器的值为第二值时,所述第一存储区的首地址为第二地址,所述第二存储区的首地址为第一地址,
在所述MCU芯片中的程序升级之前,所述寄存器的值为所述第一值,
所述步骤三具体为:所述升级管理程序将所述寄存器的值从所述第一值改写为所述第二值;
所述步骤四具体为:所述升级管理程序从所述第二存储区中读出所述新程序并进行校验,若校验失败,则将所述寄存器的值从所述第二值改写为所述第一值。
5.如权利要求1所述的用于MCU芯片的程序升级方法,其特征在于,所述MCU芯片还包括外部通信接口、AHB TO APB总线转换器和AHB-LITE总线,
所述步骤一具体为:所述新程序依次通过所述外部通信接口、所述AHB TO APB总线转换器和所述AHB-LITE总线被所述CPU读入,然后存储在所述SRAM存储器中。
6.如权利要求5所述的用于MCU芯片的程序升级方法,其特征在于,所述外部通信接口包括SPI通信接口、UART通信接口和I2C通信接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611124136.9A CN106598586A (zh) | 2016-12-08 | 2016-12-08 | 用于mcu芯片的程序升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611124136.9A CN106598586A (zh) | 2016-12-08 | 2016-12-08 | 用于mcu芯片的程序升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106598586A true CN106598586A (zh) | 2017-04-26 |
Family
ID=58597665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611124136.9A Pending CN106598586A (zh) | 2016-12-08 | 2016-12-08 | 用于mcu芯片的程序升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598586A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101038549A (zh) * | 2007-03-28 | 2007-09-19 | 北京启明星辰信息技术有限公司 | 一种可跨***的软件升级方法 |
CN101078993A (zh) * | 2007-03-13 | 2007-11-28 | 中兴通讯股份有限公司 | 一种终端产品不中断业务在线升级版本的方法 |
CN102354286A (zh) * | 2011-09-16 | 2012-02-15 | 天津市亚安科技股份有限公司 | 一种实现云台可靠在线远程升级的*** |
CN103019788A (zh) * | 2012-12-14 | 2013-04-03 | 上海邮政科学研究院 | 一种基于can总线的远程在线升级方法 |
CN103677862A (zh) * | 2012-09-04 | 2014-03-26 | 中兴通讯股份有限公司 | Epld程序的升级方法及装置 |
-
2016
- 2016-12-08 CN CN201611124136.9A patent/CN106598586A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101078993A (zh) * | 2007-03-13 | 2007-11-28 | 中兴通讯股份有限公司 | 一种终端产品不中断业务在线升级版本的方法 |
CN101038549A (zh) * | 2007-03-28 | 2007-09-19 | 北京启明星辰信息技术有限公司 | 一种可跨***的软件升级方法 |
CN102354286A (zh) * | 2011-09-16 | 2012-02-15 | 天津市亚安科技股份有限公司 | 一种实现云台可靠在线远程升级的*** |
CN103677862A (zh) * | 2012-09-04 | 2014-03-26 | 中兴通讯股份有限公司 | Epld程序的升级方法及装置 |
CN103019788A (zh) * | 2012-12-14 | 2013-04-03 | 上海邮政科学研究院 | 一种基于can总线的远程在线升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101946458B1 (ko) | 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들 | |
US20150143172A1 (en) | Computing device and method for automatically recovering bios of computing device | |
CN105095040B (zh) | 一种芯片调试方法与装置 | |
CN103914667B (zh) | 一种安全读写eeprom的方法及其*** | |
CN106598654B (zh) | 一种在线更新PowerPC主板引导芯片的方法 | |
TWI693518B (zh) | 資料儲存裝置及避免韌體失效之方法 | |
CN102736586B (zh) | 一种纯电动汽车的整车控制器及***引导方法 | |
CN108108193A (zh) | 一种安全易用的固件升级方法及*** | |
TW200945192A (en) | Motherboard and method for recovering BIOS thereof and for booting computer | |
CN107301042A (zh) | 一种带自检功能的SoC应用程序引导方法 | |
CN106843938A (zh) | Fpga和dsp程序升级和在线重构***和方法 | |
CN104636168A (zh) | 基于mlvds总线的soc fpga在线升级方法 | |
CN104077166A (zh) | 基于fpga中ip核的epcs与epcq存储器在线升级方法 | |
CN105653405A (zh) | 一种通用引导程序的故障处理方法及*** | |
CN103984506A (zh) | 闪存存储设备数据写的方法和*** | |
CN105760165A (zh) | 一种mcu自我备份加载刷新的方法 | |
CN111459744A (zh) | 视频处理芯片的固件烧录方法和固件调试方法 | |
TWI494752B (zh) | 使用基於唯讀記憶體啟始單元的圖形處理單元啟始技術和可程式化微控制器 | |
CN106935272B (zh) | 开启eMMC后门调试的方法和装置 | |
CN112306782B (zh) | 面向调测试的操作***内核引导与加载硬件及方法 | |
CN106598586A (zh) | 用于mcu芯片的程序升级方法 | |
CN103513930A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN104615387B (zh) | 基于xpe***的车载设备及其设计方法 | |
TWI696951B (zh) | 儲存裝置異常斷電的處理系統和方法 | |
CN110515645A (zh) | 一种bios的功能更新的实现方法及相关装置 |
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: 20170426 |