CN116560696A - 一种应用数据高占比的单片机分区以及固件升级方法 - Google Patents
一种应用数据高占比的单片机分区以及固件升级方法 Download PDFInfo
- Publication number
- CN116560696A CN116560696A CN202310741980.XA CN202310741980A CN116560696A CN 116560696 A CN116560696 A CN 116560696A CN 202310741980 A CN202310741980 A CN 202310741980A CN 116560696 A CN116560696 A CN 116560696A
- Authority
- CN
- China
- Prior art keywords
- area
- app
- bootloader
- singlechip
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000005192 partition Methods 0.000 title abstract description 10
- 230000009191 jumping Effects 0.000 claims description 9
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 231100000957 no side effect Toxicity 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
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
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及单片机领域,具体公开了一种应用数据高占比的单片机分区以及固件升级方法,通过将FLASH划分为直接跳转区、U‑bootloader区和APP区,其中直接跳转区仅执行跳转操作,速度快,等效于单片机直接上电就运行U‑bootloader区的程序,适用于APP区占Flash容量比大于50%的情况;且通过直接跳转区保护中断向量表,使U‑bootloader区和APP区相互可以进行升级操作,保证了单片机功能的安全性,在U‑bootloader区或APP区升级出现问题的时候,单片机仍可正常工作,重新执行升级程序直至单片机完成固件升级。
Description
技术领域
本发明涉及单片机领域,尤其涉及一种应用数据高占比的单片机分区以及固件升级方法。
背景技术
随着自动化与物联网技术的发展与普及,越来越多的单片机控制电路被运用在了生产与生活的各个领域。一般情况下,APP(Application,应用程序)固件占单片机内部FLASH(闪存)总容量的比例不会太高,在APP占FLASH容量低于50%的情况下,通常可以针对内部FLASH进行分区,并通过各种外设接口下载新的APP固件到区别于原有APP固件的分区,再通过地址跳转和中断向量表偏移的方式完成固件的升级。然而,随着单片机的需求量和装配量成几何级数增长,为了节约成本,越来越多的厂商与开发者逐渐尝试更充分的开发利用单片机的性能。
当APP占FLASH容量的比例大于总容量的50%时,内部FLASH将不足以被分为两个可以分别容纳新旧APP的区域,但仍然可以使用常用的IAP的升级方式,以BootLoader作为启动代码的单片机为例:将单片机中的FLASH划分成两个区域,第一区域存放User-bootloader固件(下文称U-bootloader);该区域占用FLASH容量小,只用于APP区域的数据接收、擦写以及地址跳转的操作,通过擦写APP区域的数据达到升级APP的效果;第二区域存放APP,执行各种应用功能。介于单片机的中断机制,无论是哪个分区的程序,单片机在main函数的中断,都将强制跳转到地址为0x8000004的中断向量表并执行,而不是执行分区所在APP的新的中断向量表;如:U-bootloader存放在起始地址0x8000000,其中断向量表起始地址为0x8000004;APP存放在0x8010000,新的中断向量表地址为0x8010004;但是中断偏移仍然指向0x8000004。因为U-bootloader作为第一区,必须放在FLASH的0x8000000起始地址处。若在单片机运行的过程中强行改写0x8000004的地址数据,将有可能无法正常中断,导致程序完全卡死,因此改写第一区域的内容风险极高。
因而,采用IAP的升级方式在APP占FLASH容量的比例大于50%的情况下,由于U-bootloader的地址跟APP的地址有紧密联系,单片机出厂时会对U-bootloader的操作地址或者升级数据接收的协议内容解析等进行固定,后续难以改写;当APP升级流程、协议格式、APP地址等参数需要改变时,采用U-bootloader模式来更新U-bootloader的数据存在很大的风险,当U-bootloader刷写出错时,会导致整个单片机电路由于跳转地址错误或无法执行中断操作,进而无法正常启动运行,难以修复。
发明内容
为了克服现有的应用数据高占比的单片机固件升级容易破坏中断向量表的问题,本发明提供一种应用数据高占比的单片机分区以及固件升级方法。
本发明提供了一种应用数据高占比的单片机分区方法,运用于内置FLASH启动的单片机,包括:
将单片机的FLASH划分为直接跳转区、U-bootloader区和APP区;
其中,所述直接跳转区的数据在单片机上电时必然被首先读取并执行,且所述直接跳转区的数据被所述单片机执行后直接跳转向所述U-bootloader区;
所述U-bootloader区用于储存U-bootloader程序,所述U-bootloader程序用于对APP进行固件升级以及地址跳转;
所述APP区用于储存APP;其中,所述APP包含用于对U-bootloader程序进行固件升级的引导程序。
作为优选地,所述直接跳转区占FLASH的容量比例低于1%。
优选地,所述直接跳转区的起始地址是0x8000000,直接跳转区的地址0x8000004处保存有中断向量表。
本方案还公开了一种应用数据高占比的单片机固件升级方法,应用于上述应用数据高占比的单片机分区方法进行分区的单片机,包括步骤如下:
单片机上电,通过直接跳转区跳转至所述U-bootloader区;
所述U-bootloader区的程序被所述单片机执行,实时检测是否需要升级APP;
如是,对APP区的数据进行升级,重启单片机;
否则,跳转到APP区;
所述APP区的程序被所述单片机执行,实时检测是否需要升级U-bootloader;
如是,对U-bootloader区的程序进行升级,重启单片机;
否则,运行APP。
作为优选地,对APP区的数据进行升级,具体为:
下载APP升级数据到外部储存器;
将外部储存器的数据擦写覆盖所述APP区的数据。
优选地,对U-bootloader区的程序进行升级,具体为:
下载U-bootloader升级数据到外部储存器;
将外部储存器的数据擦写覆盖所述U-bootloader区的数据。本发明的有益效果是:
通过将FLASH划分为直接跳转区、U-bootloader区和APP区,其中直接跳转区仅执行跳转操作,速度快,且直接跳转区无需刷写修改内容,保护了中断向量表,保证了单片机升级固件时的安全性,使U-bootloader区和APP区相互可以进行升级操作,在U-bootloader区或APP区升级出现问题的时候,单片机仍可正常工作,重新执行升级程序直至单片机完成固件升级。
附图说明
下文将结合说明书附图对本发明进行进一步的描述说明,其中:
图1为本发明其中一个实施例的单片机Flash分区占用容量示意图;
图2为本发明另一个实施例的固件升级逻辑流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,作为本发明的其中一个实施例,公开了一种应用数据高占比的单片机分区方法,包括:
将单片机的FLASH划分为直接跳转区、U-bootloader区和APP区;
其中,直接跳转区的程序在单片机上电时必然被首先读取并执行,且直接跳转区的程序被单片机执行后直接跳转向U-bootloader区;
U-bootloader区用于储存U-bootloader程序,U-bootloader程序用于对APP进行固件升级以及地址跳转;U-bootloader程序包含两个部分:APP下载程序(用于APP固件升级)和指向APP的跳转程序。
APP区用于存储APP;其中,APP包含用于对U-bootloader程序进行固件升级的引导程序,用于在需要升级U-bootloader固件时,将U-bootloader的更新数据导入U-bootloader区进行擦写覆盖。
作为优选地直接跳转区占FLASH的容量比例低于1%。
优选地,直接跳转区的起始地址是0x8000000,直接跳转区的地址0x8000004保存有中断向量表。
区别现有的单片机的FLASH分区方法,本实施例将直接跳转区放在第一区,U-bootloader区和APP区都做地址偏移;其中,直接跳转区仅起到在上电后直接跳转到U-bootloader区的作用,然后由U-bootloader来判断后续是执行升级任务还是直接跳转到APP区运行APP。该方法有如下优势:
1.直接跳转区仅做跳转操作,速度快,无副作用,可以等效为直接上电就运行U-bootloader区的U-bootloader程序;
2.U-bootloader程序储存在U-bootloader区,可以保证在修改U-bootloader数据的时候,位于直接跳转区的地址0x8000004处的中断向量表不受任何影响。这样就可以引出另一种操作:当有地址划分或者协议解析需要变更时,也可以不必再拆机去使用单片机最初始的U-bootloader更新模式来更新U-bootloader,在APP中可以添加对U-bootloader的升级程序,进行U-bootloader区和APP区的双向升级;
3.针对APP区占比高的情况,当APP擦写出现问题时,仍然可以正常跳转到U-bootloader区来执行一些其它的单片机恢复机制。
参见图2,作为本方案的另一个实施例,具体公开了一种应用数据高占比的单片机固件升级方法,应用于上述实施例进行了分区的单片机,包括步骤如下:
S1、单片机上电启动时,必然首先读取并执行直接跳转区的程序,直接跳转至U-bootloader区;
S2、U-bootloader区的程序被单片机执行,实时检测是否需要升级APP;
S3、如是,下载APP升级数据到外部储存器,将外部储存器下载好的数据擦写覆盖APP区的数据,重启单片机;
S4、否则,跳转到APP区;
S5、APP区的程序被单片机执行,实时检测是否需要升级U-bootloader;
S6、如是,下载U-bootloader升级数据到外部储存器,将外部储存器下载好的数据擦写覆盖U-bootloader区的数据,重启单片机;
S7、否则,运行APP。
直接跳转区无需刷写修改内容,保护了中断向量表,保证了单片机升级固件时的安全性,使U-bootloader区和APP区相互可以进行升级操作,在U-bootloader区或APP区升级出现问题的时候,单片机仍可正常工作,重新执行升级程序直至单片机完成固件升级。
Claims (6)
1.一种应用数据高占比的单片机分区方法,运用于内置FLASH启动的单片机,其特征在于,包括:
将单片机的FLASH划分为直接跳转区、U-bootloader区和APP区;
其中,所述直接跳转区的数据在单片机上电时必然被首先读取并执行,且所述直接跳转区的数据被所述单片机执行后直接跳转向所述U-bootloader区;
所述U-bootloader区用于储存U-bootloader程序,所述U-bootloader程序用于对APP进行固件升级以及地址跳转;
所述APP区用于储存APP;其中,所述APP包含用于对U-bootloader程序进行固件升级的引导程序。
2.根据权利要求1所述的一种应用数据高占比的单片机分区方法,其特征在于,所述直接跳转区占FLASH的容量比例低于1%。
3.根据权利要求1所述的一种应用数据高占比的单片机分区方法,其特征在于,所述直接跳转区的起始地址是0x8000000,直接跳转区的地址0x8000004处保存有中断向量表。
4.一种应用数据高占比的单片机固件升级方法,应用于如上述权利要求1至3中任意一项所述的应用数据高占比的单片机分区方法进行分区的单片机,其特征在于,包括步骤如下:
单片机上电,通过直接跳转区跳转至所述U-bootloader区;
所述U-bootloader区的程序被所述单片机执行,实时检测是否需要升级APP;
如是,对APP区的数据进行升级,重启单片机;
否则,跳转到APP区;
所述APP区的程序被所述单片机执行,实时检测是否需要升级U-bootloader;
如是,对U-bootloader区的程序进行升级,重启单片机;
否则,运行APP。
5.根据权利要求4所述的一种应用数据高占比的单片机固件升级方法,其特征在于,对APP区的数据进行升级,具体为:
下载APP升级数据到外部储存器;
将外部储存器的数据擦写覆盖所述APP区的数据。
6.根据权利要求4所述的一种应用数据高占比的单片机固件升级方法,其特征在于,对U-bootloader区的程序进行升级,具体为:
下载U-bootloader升级数据到外部储存器;
将外部储存器的数据擦写覆盖所述U-bootloader区的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310741980.XA CN116560696A (zh) | 2023-06-20 | 2023-06-20 | 一种应用数据高占比的单片机分区以及固件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310741980.XA CN116560696A (zh) | 2023-06-20 | 2023-06-20 | 一种应用数据高占比的单片机分区以及固件升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116560696A true CN116560696A (zh) | 2023-08-08 |
Family
ID=87496689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310741980.XA Pending CN116560696A (zh) | 2023-06-20 | 2023-06-20 | 一种应用数据高占比的单片机分区以及固件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116560696A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278998A (zh) * | 2015-11-17 | 2016-01-27 | 北京联合众为科技发展有限公司 | 一种单片机固件升级方法 |
CN113127043A (zh) * | 2021-03-19 | 2021-07-16 | 力高(山东)新能源技术有限公司 | 一种单片机APP在线升级BootLoader的方法 |
WO2022094855A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳市大疆创新科技有限公司 | 固件升级方法及电子设备 |
CN115390873A (zh) * | 2022-08-23 | 2022-11-25 | 南京尤尼泰信息科技有限公司 | 一种基于单片机的时间频率设备固件升级方法及可读存取介质 |
-
2023
- 2023-06-20 CN CN202310741980.XA patent/CN116560696A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278998A (zh) * | 2015-11-17 | 2016-01-27 | 北京联合众为科技发展有限公司 | 一种单片机固件升级方法 |
WO2022094855A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳市大疆创新科技有限公司 | 固件升级方法及电子设备 |
CN113127043A (zh) * | 2021-03-19 | 2021-07-16 | 力高(山东)新能源技术有限公司 | 一种单片机APP在线升级BootLoader的方法 |
CN115390873A (zh) * | 2022-08-23 | 2022-11-25 | 南京尤尼泰信息科技有限公司 | 一种基于单片机的时间频率设备固件升级方法及可读存取介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9348730B2 (en) | Firmware ROM patch method | |
CN112506535B (zh) | 一种汽车ECU控制器更新升级Bootloader软件的方法 | |
US5864698A (en) | Disk based bios | |
US7533290B2 (en) | Microcode updating error handling apparatus and method thereof | |
US6317827B1 (en) | Method and apparatus for fault tolerant flash upgrading | |
US8181007B2 (en) | Electronic device and method for secure operating system update in embedded system | |
KR100415371B1 (ko) | 컴퓨터 | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
KR20070039841A (ko) | 디지털방송처리장치 및 디지털방송처리장치 부트로더의업그레이드 방법 | |
CN111796848A (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
CN104360877A (zh) | 基于Bootloader自更新的ECU固件更新方法 | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
CN101373451B (zh) | 保护双基本输出入系统程序的计算机系统及其控制方法 | |
CN102902556A (zh) | 一种嵌入式设备的多级引导加载方法 | |
CN102508686A (zh) | 一种系统安全升级的实现方法及其系统 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
CN109710320B (zh) | 一种两级驱动的启动引导BootLoader方法 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN106909480B (zh) | 一种嵌入式系统交叉调试方法和装置 | |
CN115718610A (zh) | 一种可靠的单片机应用程序更新的方法 | |
CN108874422B (zh) | 一种冰箱电控板的软件在线升级方法、冰箱电控板和冰箱 | |
CN111459508B (zh) | 一种BootLoader自升级的方法及系统 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN116560696A (zh) | 一种应用数据高占比的单片机分区以及固件升级方法 | |
CN105204896A (zh) | 一种数字存储示波器的BootLoader设计方法 |
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 |