一种app使用bootloader中断函数的方法及单片机技术

技术编号:28622299 阅读:12 留言:0更新日期:2021-05-28 16:18
本发明专利技术涉及一种app使用bootloader中断函数的方法及单片机,该方法中包括:当升级过程进入bootloader程序时,在bootloader程序的主函数的起始位置处设置g_vector_offset=0;当升级过程进入app程序时,在app程序的主函数的起始位置处设置g_vector_offset=app程序的偏移值;在Bootloader程序的中断函数的起始位置添加g_vector_offset>0是否成立的判定条件,如果成立,则直接跳转至对应app程序的中断函数进行执行,直至执行完app程序的中断函数后退出bootloader程序的中断函数;如果不成立,执行bootloader程序的中断函数的后续部分。本发明专利技术只要单片机的存储空间足够,则都可以进入bootloader程序,实现在线升级。

【技术实现步骤摘要】
一种app使用bootloader中断函数的方法及单片机
本专利技术涉及单片机
,尤其涉及一种app使用bootloader中断函数的方法及单片机。
技术介绍
单片机在家电或者控制领域应用非常广泛。单片机经常需要进行程序在线升级,在线升级需要涉及到bootloader程序和app程序。但是当前很多低端单片机并不支持中断函数表的重映射,如51、PIC、AVR等,甚至新唐的NUC100系列的cortex-m0核单片机和STM的cortex-m0核系列单片机也不支持。不支持中断函数表的重映射将不能进入bootloader程序,也就不能进入单片机的在线升级。
技术实现思路
为了解决上述问题,本专利技术提出了一种app使用bootloader中断函数的方法及单片机。具体方案如下:一种app使用bootloader中断函数的方法,包括:当升级过程进入bootloader程序时,在bootloader程序的主函数的起始位置处设置g_vector_offset=0;当升级过程进入app程序时,在app程序的主函数的起始位置处设置g_vector_offset=app程序的偏移值;在Bootloader程序的中断函数的起始位置添加g_vector_offset>0是否成立的判定条件,如果成立,则直接跳转至对应app程序的中断函数进行执行,直至执行完app程序的中断函数后退出bootloader程序的中断函数;如果不成立,执行bootloader程序的中断函数的后续部分。<br>进一步的,app程序和bootloader程序的中断函数表均存储于程序存储器的起始位置。进一步的,在数据存储器的起始位置处存储用于表示app程序的偏移值的参数g_vector_offse。进一步的,参数g_vector_offse占用4个字节。一种app使用bootloader中断函数的单片机,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本专利技术实施例上述的方法的步骤。本专利技术采用如上技术方案,只要单片机的存储空间足够,则都可以进入bootloader程序,实现在线升级。附图说明图1所示为本专利技术实施例一的流程图。具体实施方式为进一步说明各实施例,本专利技术提供有附图。这些附图为本专利技术揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本专利技术的优点。现结合附图和具体实施方式对本专利技术进一步说明。实施例一:本专利技术实施例提供了一种app使用bootloader中断函数的方法,如图1所示,所述方法包括以下步骤:S1:将app程序和bootloader程序的中断函数表均存储于程序存储器的起始位置。该实施例中程序存储器为硬盘。S2:在数据存储器的起始位置处存储用于表示app程序的偏移值的参数g_vector_offse,令app程序的偏移值为APP_OFFSET。该实施例中数据存储器为内存。参数g_vector_offse占用4个字节。S3:当升级过程进入bootloader程序时,在bootloader程序的主函数的起始位置处设置g_vector_offset=0;当升级过程进入app程序时,在app程序的主函数的起始位置处设置g_vector_offset=APP_OFFSET。S4:在Bootloader程序的中断函数的起始位置添加g_vector_offset>0是否成立的判定条件,如果成立,则直接跳转至对应app程序的中断函数进行执行,直至执行完app程序的中断函数后退出bootloader程序的中断函数;如果不成立,执行bootloader程序的中断函数的后续部分。App程序的中断函数正常编写即可。通过上述方法,只要单片机的存储空间足够,则都可以进入bootloader程序,实现在线升级。实施例二:本专利技术还提供一种app使用bootloader中断函数的单片机,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本专利技术实施例一的上述方法实施例中的步骤。所述存储器包括程序存储器(如硬盘)和数据存储器(如内存,内存采用随机存取存储器(RAM,RandomAccessMemory))。该实施例中计算机程序存储于程序存储器内,所述处理器通过运行或执行存储在所述程序存储器内的计算机程序,实现所述app使用bootloader中断函数的单片机的各种功能。尽管结合优选实施方案具体展示和介绍了本专利技术,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本专利技术的精神和范围内,在形式上和细节上可以对本专利技术做出各种变化,均为本专利技术的保护范围。本文档来自技高网...

【技术保护点】
1.一种app使用bootloader中断函数的方法,其特征在于,包括:/n当升级过程进入bootloader程序时,在bootloader程序的主函数的起始位置处设置g_vector_offset=0;当升级过程进入app程序时,在app程序的主函数的起始位置处设置g_vector_offset=app程序的偏移值;/n在Bootloader程序的中断函数的起始位置添加g_vector_offset>0是否成立的判定条件,如果成立,则直接跳转至对应app程序的中断函数进行执行,直至执行完app程序的中断函数后退出bootloader程序的中断函数;如果不成立,执行bootloader程序的中断函数的后续部分。/n

【技术特征摘要】
1.一种app使用bootloader中断函数的方法,其特征在于,包括:
当升级过程进入bootloader程序时,在bootloader程序的主函数的起始位置处设置g_vector_offset=0;当升级过程进入app程序时,在app程序的主函数的起始位置处设置g_vector_offset=app程序的偏移值;
在Bootloader程序的中断函数的起始位置添加g_vector_offset>0是否成立的判定条件,如果成立,则直接跳转至对应app程序的中断函数进行执行,直至执行完app程序的中断函数后退出bootloader程序的中断函数;如果不成立,执行bootloader程序的中断函数的后续部分。


2.根据权利要求1所述的app使用bootl...

【专利技术属性】
技术研发人员:朱进阳叶德焰任赋林雅
申请(专利权)人:明见厦门软件开发有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1