一种应用数据高占比的单片机分区以及固件升级方法与流程

文档序号:35102452发布日期:2023-08-10 09:57阅读:78来源:国知局
一种应用数据高占比的单片机分区以及固件升级方法与流程

本发明涉及单片机领域,尤其涉及一种应用数据高占比的单片机分区以及固件升级方法。


背景技术:

1、随着自动化与物联网技术的发展与普及,越来越多的单片机控制电路被运用在了生产与生活的各个领域。一般情况下,app(application,应用程序)固件占单片机内部flash(闪存)总容量的比例不会太高,在app占flash容量低于50%的情况下,通常可以针对内部flash进行分区,并通过各种外设接口下载新的app固件到区别于原有app固件的分区,再通过地址跳转和中断向量表偏移的方式完成固件的升级。然而,随着单片机的需求量和装配量成几何级数增长,为了节约成本,越来越多的厂商与开发者逐渐尝试更充分的开发利用单片机的性能。

2、当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的地址数据,将有可能无法正常中断,导致程序完全卡死,因此改写第一区域的内容风险极高。

3、因而,采用iap的升级方式在app占flash容量的比例大于50%的情况下,由于u-bootloader的地址跟app的地址有紧密联系,单片机出厂时会对u-bootloader的操作地址或者升级数据接收的协议内容解析等进行固定,后续难以改写;当app升级流程、协议格式、app地址等参数需要改变时,采用u-bootloader模式来更新u-bootloader的数据存在很大的风险,当u-bootloader刷写出错时,会导致整个单片机电路由于跳转地址错误或无法执行中断操作,进而无法正常启动运行,难以修复。


技术实现思路

1、为了克服现有的应用数据高占比的单片机固件升级容易破坏中断向量表的问题,本发明提供一种应用数据高占比的单片机分区以及固件升级方法。

2、本发明提供了一种应用数据高占比的单片机分区方法,运用于内置flash启动的单片机,包括:

3、将单片机的flash划分为直接跳转区、u-bootloader区和app区;

4、其中,所述直接跳转区的数据在单片机上电时必然被首先读取并执行,且所述直接跳转区的数据被所述单片机执行后直接跳转向所述u-bootloader区;

5、所述u-bootloader区用于储存u-bootloader程序,所述u-bootloader程序用于对app进行固件升级以及地址跳转;

6、所述app区用于储存app;其中,所述app包含用于对u-bootloader程序进行固件升级的引导程序。

7、作为优选地,所述直接跳转区占flash的容量比例低于1%。

8、优选地,所述直接跳转区的起始地址是0x8000000,直接跳转区的地址0x8000004处保存有中断向量表。

9、本方案还公开了一种应用数据高占比的单片机固件升级方法,应用于上述应用数据高占比的单片机分区方法进行分区的单片机,包括步骤如下:

10、单片机上电,通过直接跳转区跳转至所述u-bootloader区;

11、所述u-bootloader区的程序被所述单片机执行,实时检测是否需要升级app;

12、如是,对app区的数据进行升级,重启单片机;

13、否则,跳转到app区;

14、所述app区的程序被所述单片机执行,实时检测是否需要升级u-bootloader;

15、如是,对u-bootloader区的程序进行升级,重启单片机;

16、否则,运行app。

17、作为优选地,对app区的数据进行升级,具体为:

18、下载app升级数据到外部储存器;

19、将外部储存器的数据擦写覆盖所述app区的数据。

20、优选地,对u-bootloader区的程序进行升级,具体为:

21、下载u-bootloader升级数据到外部储存器;

22、将外部储存器的数据擦写覆盖所述u-bootloader区的数据。本发明的有益效果是:

23、通过将flash划分为直接跳转区、u-bootloader区和app区,其中直接跳转区仅执行跳转操作,速度快,且直接跳转区无需刷写修改内容,保护了中断向量表,保证了单片机升级固件时的安全性,使u-bootloader区和app区相互可以进行升级操作,在u-bootloader区或app区升级出现问题的时候,单片机仍可正常工作,重新执行升级程序直至单片机完成固件升级。



技术特征:

1.一种应用数据高占比的单片机分区方法,运用于内置flash启动的单片机,其特征在于,包括:

2.根据权利要求1所述的一种应用数据高占比的单片机分区方法,其特征在于,所述直接跳转区占flash的容量比例低于1%。

3.根据权利要求1所述的一种应用数据高占比的单片机分区方法,其特征在于,所述直接跳转区的起始地址是0x8000000,直接跳转区的地址0x8000004处保存有中断向量表。

4.一种应用数据高占比的单片机固件升级方法,应用于如上述权利要求1至3中任意一项所述的应用数据高占比的单片机分区方法进行分区的单片机,其特征在于,包括步骤如下:

5.根据权利要求4所述的一种应用数据高占比的单片机固件升级方法,其特征在于,对app区的数据进行升级,具体为:

6.根据权利要求4所述的一种应用数据高占比的单片机固件升级方法,其特征在于,对u-bootloader区的程序进行升级,具体为:


技术总结
本发明涉及单片机领域,具体公开了一种应用数据高占比的单片机分区以及固件升级方法,通过将FLASH划分为直接跳转区、U‑bootloader区和APP区,其中直接跳转区仅执行跳转操作,速度快,等效于单片机直接上电就运行U‑bootloader区的程序,适用于APP区占Flash容量比大于50%的情况;且通过直接跳转区保护中断向量表,使U‑bootloader区和APP区相互可以进行升级操作,保证了单片机功能的安全性,在U‑bootloader区或APP区升级出现问题的时候,单片机仍可正常工作,重新执行升级程序直至单片机完成固件升级。

技术研发人员:熊兴发,朱正辉,赵定金,明德
受保护的技术使用者:广东保伦电子股份有限公司
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1