CN105786510A - 一种单片机的升级分区系统和安全升级方法 - Google Patents
一种单片机的升级分区系统和安全升级方法 Download PDFInfo
- Publication number
- CN105786510A CN105786510A CN201610110467.0A CN201610110467A CN105786510A CN 105786510 A CN105786510 A CN 105786510A CN 201610110467 A CN201610110467 A CN 201610110467A CN 105786510 A CN105786510 A CN 105786510A
- Authority
- CN
- China
- Prior art keywords
- chip microcomputer
- upgrading
- memory unit
- master controller
- application memory
- 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
-
- 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
- G06F9/44568—Immediately runnable code
- G06F9/44573—Execute-in-place [XIP]
-
- 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
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种单片机的升级分区系统,包括连接主控制器的单片机,所述单片机包括闪存,单片机中的闪存包括:启动区单元、非易失性存储单元,第一应用存储单元,和第二应用存储单元;所述单片机系统启动时,先运行启动区单元的引导程序,然后判断单片机非易失性存储单元的标志是是否升级标志,进入升级流程,所述单片机升级完成后,拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,复位单片机系统。本发明与现有技术想比,具有升级失败的概率降低,有效解决在传输过程中出现传输错误引起的升级失败而造成的无法启动程序的问题。
Description
技术领域
本发明涉及智能硬件领域,特别是一种单片机的升级分区系统和安全升级方法。
背景技术
随着科学技术的高速发展,人们越来越依赖电子产品,在智能硬件领域中,不同于PC,很多电子产品都会使用到单片机作为主控芯片,单片机能应付简单的智能硬件产品,满足底层需求,在电子产品中应用广泛。从提升产品的服务和价值上看,只有不断升级软件,才能更好的满足用户对产品的需求,在一个产品从上市到他的使命结束,软件肯定需要不断的更新,才能拓展产品的功能、留住用户,因此单片机如何进行安全的升级成为了非常必要去解决的问题。
发明内容
鉴于上述不足,本文提供的技术方案正对单片机如何进行分区,如何实现分区之间的升级,升级失败后如何求救等问题提出解决方案。能解决上述问题的技术方案包括。
一种单片机的升级分区系统,包括连接主控制器的单片机,所述单片机包括闪存,单片机中的闪存分为:
启动区单元,用于存放启动引导程序和升级支撑程序存储区;
非易失性存储单元,用于存放升级和启动参数的存储分区;
第一应用存储单元,用于存储运行的程序的分区;
第二应用存储单元,用于存储运行程序升级文件的分区;
所述单片机系统启动时,先运行启动区单元的引导程序,然后判断单片机非易失性存储单元的标志是是否升级标志,进入升级流程,所述单片机接收主控制器发送的升级包以及升级包校验值、升级包长度信息并存储在第二应用存储单元,所述单片机升级完成后,拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,复位单片机系统。
基于上述系统的,在升级分区系统下的安全升级方法,包括:
步骤1、单片机收到升级模式命令后,程序设置非易失性存储单元的标志为升级标志,复位单片机系统;
步骤2、进入启动引导程序之后,判断非易失性存储单元的标志是否为升级标志,判断是则进入升级模式;
步骤3、所述启动引导程序接收到主控制器的查询模式的命令后回复当前是升级模式,主控制器开始发送升级包到单片机,并且计算所发送升级包数据的校验值;
步骤4、所述单片机接收到升级包之后,存放到第二应用存储单元,并且计算校验值和保存接收到的升级包长度;
步骤5、当所述升级包发送完毕,主控制器发送升级完成命令到单片机,并且携带发送的包的个数和主控制器计算的升级包的校验值到单片机;
步骤6、单片机接收到升级完成的命令后,判断自己计算的校验值跟主控制器发送下来的包的个数和校验值是否一致,如果判断为一致,则回复正在复制升级;
步骤7、单片机开始拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,回复主控制器升级成功,同时复位单片机系统。
在上述方法中,进入启动引导程序之后,判断非易失性存储单元的标志是否为升级标志,判断否则直接运行第一应用存储单元内存储的运行程序。
在上述方法中,所述单片机判断自己计算的校验值跟主控制器发送下来的包的个数和校验值是否一致,如果判断为不一致,则回复主控制器升级失败。
所述方法包括在在拷贝第二应用存储单元的内容到第一应用存储单元的时候出错,升级失败时的补救方法,包括:
步骤11,单片机启动的时候会判断第二应用存储单元存储的程序是否完整,如果完整,则再次拷贝内容到第一应用存储单元;
步骤12、设置非易失性存储单元的标志为启动标志,回复主控制器升级成功,同时复位单片机系统。
在升级补救方法中,如果第二应用存储单元已经损坏,则向主控制器发送求救命令,所述主控制器收到求救命令回复后进入升级模式,重新启动升级流程。
在升级补救方法中,在升级过程中下载升级程序到第二应用存储单元失败,而主控制器没有任何反应和指令,那么设置非易失性存储单元的标志为运行标志,所述单片机正常运行。
本发明的技术方案的优势在于与现有技术相比,具有升级失败的概率降低,有效解决在传输过程中出现传输错误引起的升级失败而造成的无法启动程序的问题。
附图说明
图1是本发明具体实施例中单片机闪存各分区结构示意图。
图2是图1中单片机闪存各分区结构关系示意图。
图3是本发明一种单片机安全升级方法流程结构示意图。
图4是图3的一具体实施例的安全升级方法示意图。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
本发明技术方案提出了一种单片机的升级分区系统,图1和图2是单片机的升级分区系统的具体实施方式,所述的分区系统包括连接主控制器的单片机,所述单片机包括闪存(FLASH),单片机中的闪存(FLASH)分为:
启动区单元(Bootloader),用于存放启动引导程序和升级支撑程序存储区;
非易失性存储单元(Nvram),用于存放升级和启动参数的存储分区;
第一应用存储单元(Application1),用于存储运行的程序的分区;
第二应用存储单元(Application2),用于存储运行程序升级文件的分区;
所述单片机系统启动时,先运行启动区单元(Bootloader)的引导程序,然后判断单片机非易失性存储单元(Nvram)的标志是是否升级标志,进入升级流程,所述单片机接收主控制器发送的升级包以及升级包校验值、升级包长度信息并存储在第二应用存储单元。(Application2),所述单片机升级完成后,拷贝第二应用存储单元(Application2)的内容到第一应用存储单元(Application1),然后设置非易失性存储单元的标志为启动标志,复位单片机系统。
在图1中,是本发明的其中一较佳实施例,在FLASH中,我们可以设置Bootloader的内存位址0x8000000~0x80017F0;设置Nvram的内存位址是0x80017F0~0x8001800;设置Application1的内存位址是0x8001800~0x8002C00;设置Application2的内存位址是0x8002C00~0x8004000。在单片机升级时,可以把FLASH分成上述具有不同功能的各分区。
如图3所示,在升级分区系统下的安全升级方法,所述方法包括:
S1、单片机收到升级模式命令后,程序设置非易失性存储单元的标志为升级标志,复位单片机系统;
S2、进入启动引导程序之后,判断非易失性存储单元的标志是否为升级标志,判断是则进入升级模式;
S3、所述启动引导程序接收到主控制器的查询模式的命令后回复当前是升级模式,主控制器开始发送升级包到单片机,并且计算所发送升级包数据的校验值;
S4、所述单片机接收到升级包之后,存放到第二应用存储单元,并且计算校验值和保存接收到的升级包长度;
S5、当所述升级包发送完毕,主控制器发送升级完成命令到单片机,并且携带发送的包的个数和主控制器计算的升级包的校验值到单片机;
S6、单片机接收到升级完成的命令后,判断自己计算的校验值跟主控制器发送下来的包的个数和校验值是否一致,如果判断为一致,则回复正在复制升级;
S7、单片机开始拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,回复主控制器升级成功,同时复位单片机系统。
如图所示,图4是图3所示方法的一具体实施例,通过在本实施例中详细描述单片机的升级过程,如单片机和主控制器,单片机发布了新的升级程序,主控制器获取到单片机的升级程序包。
单片机正常运行的时候,即第一应用存储单元(Application1)的程序正常运行。
主控制器发送进入升级模式命令到单片机,并且携带升级的版本号。
单片机如果判断该版本号不等于自己的版本号,则复位进入升级模式,否则回复无需升级。
单片机进入升级模式后,启动区单元(Bootloader)程序会调用升级部分程序处理,不会进入第一应用存储单元(Application1)。
单片机接收到主控制器的查询模式的命令后回复当前是升级模式,主控制器开始发送升级程序到单片机,并且计算发送的数据的校验值。
单片机接收到数据后,解析是升级包还是命令包,如果是命令包,则按照命令解析,如果是升级包,则把该包写入第二应用存储单元(Application2),并且计算收到的数据的校验值。
升级包发送完毕后,主控制器发送发送完成命令到单片机,单片机接收到该命令后,判断主控制器发送下来的校验和包数是否一致,如果不一致,回复升级失败,如果一致,则进入拷贝升级模式。
单片机开始拷贝第二应用存储单元(Application2)的数据到第一应用存储单元(Application1)拷贝完成后,设置非易失性存储单元(Nvram)升级标志为正常运行。
如果发送数据的时候发送数据校验失败,则主控制器再次走升级流程,不过此时处理该流程的是启动区单元(Bootloader)而不是第一应用存储单元(Application1)。
如果出现拷贝第二应用存储单元(Application2)到第一应用存储单元(Application1)失败,则尝试多次拷贝,直到拷贝成功为止。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种单片机的升级分区系统,包括连接主控制器的单片机,所述单片机包括闪存,其特征在于,单片机中的闪存分为:
启动区单元,用于存放启动引导程序和升级支撑程序存储区;
非易失性存储单元,用于存放升级和启动参数的存储分区;
第一应用存储单元,用于存储运行的程序的分区;
第二应用存储单元,用于存储运行程序升级文件的分区;
所述单片机系统启动时,先运行启动区单元的引导程序,然后判断单片机非易失性存储单元的标志是是否升级标志,进入升级流程,所述单片机接收主控制器发送的升级包以及升级包校验值、升级包长度信息并存储在第二应用存储单元,所述单片机升级完成后,拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,复位单片机系统。
2.在升级分区系统下的安全升级方法,其特征在于,所述方法包括:
步骤1、单片机收到升级模式命令后,程序设置非易失性存储单元的标志为升级标志,复位单片机系统;
步骤2、进入启动引导程序之后,判断非易失性存储单元的标志是否为升级标志,判断是则进入升级模式;
步骤3、所述启动引导程序接收到主控制器的查询模式的命令后回复当前是升级模式,主控制器开始发送升级包到单片机,并且计算所发送升级包数据的校验值;
步骤4、所述单片机接收到升级包之后,存放到第二应用存储单元,并且计算校验值和保存接收到的升级包长度;
步骤5、当所述升级包发送完毕,主控制器发送升级完成命令到单片机,并且携带发送的包的个数和主控制器计算的升级包的校验值到单片机;
步骤6、单片机接收到升级完成的命令后,判断自己计算的校验值跟主控制器发送下来的包的个数和校验值是否一致,如果判断为一致,则回复正在复制升级;
步骤7、单片机开始拷贝第二应用存储单元的内容到第一应用存储单元,然后设置非易失性存储单元的标志为启动标志,回复主控制器升级成功,同时复位单片机系统。
3.根据权利要求2所述的方法,其特征在于,进入启动引导程序之后,判断非易失性存储单元的标志是否为升级标志,判断否则直接运行第一应用存储单元内存储的运行程序。
4.根据权利要求2所述的方法,其特征在于,所述单片机判断自己计算的校验值跟主控制器发送下来的包的个数和校验值是否一致,如果判断为不一致,则回复主控制器升级失败。
5.根据权利要求2所述的方法,其特征在于,包括在在拷贝第二应用存储单元的内容到第一应用存储单元的时候出错,升级失败时的补救方法,包括:
步骤11,单片机启动的时候会判断第二应用存储单元存储的程序是否完整,如果完整,则再次拷贝内容到第一应用存储单元;
步骤12、设置非易失性存储单元的标志为启动标志,回复主控制器升级成功,同时复位单片机系统。
6.根据权利要求5所述的方法,其特征在于,如果第二应用存储单元已经损坏,则向主控制器发送求救命令,所述主控制器收到求救命令回复后进入升级模式,重新启动升级流程。
7.根据权利要求5所述的方法,其特征在于,在升级过程中下载升级程序到第二应用存储单元失败,而主控制器没有任何反应和指令,那么设置非易失性存储单元的标志为运行标志,所述单片机正常运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610110467.0A CN105786510A (zh) | 2016-02-29 | 2016-02-29 | 一种单片机的升级分区系统和安全升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610110467.0A CN105786510A (zh) | 2016-02-29 | 2016-02-29 | 一种单片机的升级分区系统和安全升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105786510A true CN105786510A (zh) | 2016-07-20 |
Family
ID=56403107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610110467.0A Pending CN105786510A (zh) | 2016-02-29 | 2016-02-29 | 一种单片机的升级分区系统和安全升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786510A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406935A (zh) * | 2016-08-29 | 2017-02-15 | 青岛海信电器股份有限公司 | 一种蓝牙芯片ota升级的方法和蓝牙芯片 |
CN106547596A (zh) * | 2016-11-07 | 2017-03-29 | 天津津航计算技术研究所 | 一种高可靠性fpga远程升级方法 |
CN107861764A (zh) * | 2016-09-21 | 2018-03-30 | 佛山市顺德区美的电热电器制造有限公司 | 用于烹饪电器的程序升级系统、方法及烹饪电器 |
CN108427569A (zh) * | 2018-06-07 | 2018-08-21 | 合肥美菱股份有限公司 | 一种家用电冰箱在线升级控制程序的方法 |
CN108897564A (zh) * | 2018-06-07 | 2018-11-27 | 京信通信系统(中国)有限公司 | 一种嵌入式系统的软件升级方法及嵌入式系统 |
CN109358887A (zh) * | 2018-12-17 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种单片机程序的在线升级方法、装置及系统 |
CN109408153A (zh) * | 2018-11-01 | 2019-03-01 | 百度在线网络技术(北京)有限公司 | 软件启动方法和软件升级方法 |
WO2020062887A1 (zh) * | 2018-09-26 | 2020-04-02 | 深圳市慧嘉智科技有限公司 | 基于闪存微控制器的固件升级方法和系统及闪存微控制器 |
CN112732310A (zh) * | 2021-01-22 | 2021-04-30 | 深圳市信义科技有限公司 | 基于嵌入式引导分区固件升级方法、系统、设备及介质 |
CN117055929A (zh) * | 2023-10-11 | 2023-11-14 | 国网信息通信产业集团有限公司 | 一种实现双芯系统安全升级的方法、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011006328A1 (zh) * | 2009-07-16 | 2011-01-20 | 中兴通讯股份有限公司 | 设备固件升级系统及方法、设备管理服务器及移动终端 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN105278998A (zh) * | 2015-11-17 | 2016-01-27 | 北京联合众为科技发展有限公司 | 一种单片机固件升级方法 |
-
2016
- 2016-02-29 CN CN201610110467.0A patent/CN105786510A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011006328A1 (zh) * | 2009-07-16 | 2011-01-20 | 中兴通讯股份有限公司 | 设备固件升级系统及方法、设备管理服务器及移动终端 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN105278998A (zh) * | 2015-11-17 | 2016-01-27 | 北京联合众为科技发展有限公司 | 一种单片机固件升级方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406935A (zh) * | 2016-08-29 | 2017-02-15 | 青岛海信电器股份有限公司 | 一种蓝牙芯片ota升级的方法和蓝牙芯片 |
CN106406935B (zh) * | 2016-08-29 | 2019-10-15 | 青岛海信电器股份有限公司 | 一种蓝牙芯片ota升级的方法和蓝牙芯片 |
CN107861764A (zh) * | 2016-09-21 | 2018-03-30 | 佛山市顺德区美的电热电器制造有限公司 | 用于烹饪电器的程序升级系统、方法及烹饪电器 |
CN106547596B (zh) * | 2016-11-07 | 2019-07-26 | 天津津航计算技术研究所 | 一种fpga远程升级方法 |
CN106547596A (zh) * | 2016-11-07 | 2017-03-29 | 天津津航计算技术研究所 | 一种高可靠性fpga远程升级方法 |
CN108427569A (zh) * | 2018-06-07 | 2018-08-21 | 合肥美菱股份有限公司 | 一种家用电冰箱在线升级控制程序的方法 |
CN108897564A (zh) * | 2018-06-07 | 2018-11-27 | 京信通信系统(中国)有限公司 | 一种嵌入式系统的软件升级方法及嵌入式系统 |
WO2020062887A1 (zh) * | 2018-09-26 | 2020-04-02 | 深圳市慧嘉智科技有限公司 | 基于闪存微控制器的固件升级方法和系统及闪存微控制器 |
CN109408153A (zh) * | 2018-11-01 | 2019-03-01 | 百度在线网络技术(北京)有限公司 | 软件启动方法和软件升级方法 |
CN109408153B (zh) * | 2018-11-01 | 2022-03-01 | 百度在线网络技术(北京)有限公司 | 软件启动方法和软件升级方法 |
CN109358887A (zh) * | 2018-12-17 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种单片机程序的在线升级方法、装置及系统 |
CN109358887B (zh) * | 2018-12-17 | 2021-10-22 | 武汉精立电子技术有限公司 | 一种单片机程序的在线升级方法、装置及系统 |
CN112732310A (zh) * | 2021-01-22 | 2021-04-30 | 深圳市信义科技有限公司 | 基于嵌入式引导分区固件升级方法、系统、设备及介质 |
CN117055929A (zh) * | 2023-10-11 | 2023-11-14 | 国网信息通信产业集团有限公司 | 一种实现双芯系统安全升级的方法、设备及介质 |
CN117055929B (zh) * | 2023-10-11 | 2024-01-09 | 国网信息通信产业集团有限公司 | 一种实现双芯系统安全升级的方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786510A (zh) | 一种单片机的升级分区系统和安全升级方法 | |
US10860302B2 (en) | Memory-efficient upgrade staging | |
CN109240730B (zh) | 一种单片机在线升级方法和系统 | |
CN110083374B (zh) | 一种升级回滚方法、系统及终端设备 | |
CN103514015B (zh) | 一种从存储介质中启动操作系统的方法和装置 | |
US8539472B2 (en) | Method and system of updating shared memory | |
CN109670349B (zh) | 可信计算机的硬件架构及计算机的可信启动方法 | |
WO2011006378A1 (zh) | 无线数据卡的升级方法和系统 | |
US11210173B2 (en) | Fault tolerant device upgrade | |
CN106293824A (zh) | 一种从处理芯片升级的方法及装置 | |
WO2016078060A1 (zh) | 用于多系统终端的系统升级方法、升级装置和终端 | |
CN107102871A (zh) | 嵌入式系统升级的方法和装置 | |
WO2011088701A1 (zh) | 一种跨平台版本在线升级的方法及装置 | |
CN111309354A (zh) | 联网设备的ota升级方法及装置 | |
WO2018176692A1 (zh) | 系统的固件更新方法、装置和电池管理系统 | |
CN106775610A (zh) | 一种电子设备启动方法及一种电子设备 | |
CN105589699A (zh) | 序列号信息的更新方法、装置及终端 | |
CN111182033A (zh) | 一种交换机还原的方法和设备 | |
US20040192280A1 (en) | System for updating application software of data acquisition devices | |
US8601215B2 (en) | Processor, server system, and method for adding a processor | |
CN111884834A (zh) | 基于zookeeper的分布式系统升级方法、系统和计算机设备 | |
CN103455750B (zh) | 一种嵌入式设备的高安验证方法及装置 | |
CN107436778A (zh) | 一种无人系统的高可靠性升级方法 | |
CN110515664A (zh) | 系统的启动方法及装置 | |
CN116225617A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160720 |