用于单片机存储数据的方法、单片机及可读存储介质技术

技术编号:31155088 阅读:24 留言:0更新日期:2021-12-04 09:46
本申请实施例提供一种用于单片机存储数据的方法,包括初始化用户应用程序的运行环境;根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行;擦除闪存存储器;将用户应用程序重新写入闪存存储器;将头文件信息写入到闪存存储器;将待保存数据存储到闪存存储器。通过上述技术方案,本申请实施例提供的用于单片机存储数据的方法,在不需要外部存储器的基础上,保证不丢失启动代码和用户应用程序也可以满足对用户应用数据的保存需要。需要。需要。

【技术实现步骤摘要】
用于单片机存储数据的方法、单片机及可读存储介质


[0001]本申请涉及单片机
,具体地涉及一种用于单片机存储数据的方法、单片机及可读存储介质。

技术介绍

[0002]对于低成本单片机如STM32H750系列,这类单片机芯片有一个显著的缺点就是Flash(以下称为闪存存储器)的容量小,闪存存储器的存储空间往往只有一个扇区,导致这种类型的单片机在运行时想要保存应用参数或者数据,根据闪存存储器擦除以扇区为最小单位的机制,在新的数据被写入之前,会将闪存存储器中原有的代码擦除,从而导致芯片当场宕机,因此下次系统上电时无法从闪存存储器启动,导致数据遗失。
[0003]现有技术中可以通过外接其他的存储器来保存数据,如Nand Flash(资料储存型闪存存储器)或者Nor Flash(非易失型闪存存储器),但是这种方式会增加成本,违背选取这类芯片的初衷。

技术实现思路

[0004]为解决上述技术问题,本申请的目的是提供用于单片机存储数据的方法单片机、及可读存储介质。
[0005]为了实现上述目的,在本申请第一方面,提供一种用于单片机存储数据的方法,单片机包括备份寄存器、闪存存储器以及随机存取存储器,闪存存储器和随机存取存储器的地址映射到备份寄存器的最低位,闪存存储器被分区以形成指定存储区域,方法包括:初始化用户应用程序的运行环境;根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行还是在闪存存储器中运行;在确定用户应用程序在随机存取存储器中运行的情况下:确定用户是否需要保存新的数据;擦除闪存存储器;将用户应用程序重新写入闪存存储器;将头文件信息写入到闪存存储器;将新的数据存储到闪存存储器;在确定用户应用程序在闪存存储器中运行的情况下:读取存储在闪存存储器上的头文件信息,头文件信息包括代码长度、代码版本以及代码数据校验中的至少一者;根据头文件信息将用户应用程序复制到随机存取存储器;重新定义随机存取存储器的中断向量表;在随机存取存储器中重新运行用户应用程序。
[0006]在本申请实施例中,根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行包括:备份寄存器的最低位取反并读取,以得到读取值;如果读取值是第一值,则确定用户应用程序在随机存取存储器中运行;如果读取值是第二值,则确定用户应用程序在闪存存储器中运行。
[0007]在本申请实施例中,在确定用户应用程序在随机存取存储器中运行的情况下:当用户不需要保存新的数据,从闪存存储器读取上一次保存的数据,该数据用于被上报或用户应用程序自身应用。
[0008]在本申请实施例中,在将用户应用程序和头文件信息重新写入闪存存储器之后,
重新定义中断向量表;执行用户自定义应用,其中数据是在执行用户自定义应用的过程中产生的。
[0009]在本申请实施例中,将用户应用程序重新写入闪存存储器包括:将用户应用程序重新写入到闪存存储器的启动地址处;将头文件信息写入到闪存存储器包括:将头文件信息写入到闪存存储器的指定存储区域。
[0010]在本申请实施例中,初始化用户应用程序运行环境包括:根据单片机的类型以及运行环境,初始化系统和基本外设。
[0011]在本申请实施例中,重新写入到闪存存储器的用户应用程序是随机存取存储器中的用户应用程序或新的用户应用程序。
[0012]在本申请实施例中,闪存存储器被分区以形成指定存储区域包括:沿闪存存储器存储地址增加的方向,将闪存存储器分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
[0013]在本申请第二方面,提供一种单片机,包括:备份寄存器;闪存存储器;以及随机存取存储器;闪存存储器和随机存取存储器的地址映射到备份寄存器的最低位,以使访问闪存存储器、随机存取存储器的指令能够访问到备份寄存器;其中单片机被配置成执行上述的用于单片机存储数据的方法。
[0014]闪存存储器被配置成:沿闪存存储器存储地址增加的方向,将闪存存储器分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
[0015]在本申请第三方面,提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得处理器被配置成执行上述的用于单片机存储数据的方法。
[0016]通过上述技术方案,本申请提供的用于单片机存储数据的方法,基于在单片机上电后的执行机制,根据单片机内备份寄存器的最低位判断程序所运行的位置,在判断出用户应用程序在随机存取存储器时,如果用户需要保存新数据,对闪存存储器进行擦除并重新写入用户应用程序后,将数据保存到闪存存储器。由于随机存取存储器有程序执行,因此单片机不会宕机。另外,本申请所提供的方法可以在不借助于外部闪存存储器芯片的情况下,仅利用单片机的闪存存储器就能够保证不丢失单片机启动代码和用户应用程序,同时满足对用户应用数据的保存需要。
[0017]本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0018]附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
[0019]图1是根据本申请一实施例提供的用于单片机存储数据的方法的流程图;
[0020]图2是根据本申请一实施例提供的用于单片机存储数据的方法的另一流程图;
[0021]图3是根据本申请实施例提供的单片机可以执行的用于单片机存储数据的方法的
流程图;以及
[0022]图4是适于用来实现本申请实施例方法的单片机的结构示意图。
[0023]附图标记说明
[0024]800、计算机系统;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
801、中央处理单元;
[0025]802、备份寄存器;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
803、闪存存储器;
[0026]804、随机存取存储器;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
805、总线;
[0027]806、I/O接口;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
807、输入部分;
[0028]808、输出部分;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
809、通信部分;
[0029]810、驱动器。
具体实施方式
[0030]以下结合附图对本申请实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。
[0031]需要说明,若本公开实施方式中有涉及方向性指示(诸如上、下、左、右、前、后
……
),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于单片机存储数据的方法,其特征在于,所述单片机包括备份寄存器、闪存存储器以及随机存取存储器,所述闪存存储器和所述随机存取存储器的地址映射到所述备份寄存器的最低位,所述闪存存储器被分区以形成指定存储区域,所述方法包括:初始化用户应用程序的运行环境;根据所述备份寄存器的最低位的值确定第一用户应用程序在所述随机存取存储器中运行还是在所述闪存存储器中运行;在确定所述第一用户应用程序在所述随机存取存储器中运行的情况下:确定用户需要保存新的数据;擦除所述闪存存储器;将第二用户应用程序写入所述闪存存储器储器;将头文件信息写入所述闪存存储器;将所述新的数据存储到所述闪存存储器;在确定所述第一用户应用程序在所述闪存存储器中运行的情况下:读取存储在所述闪存存储器上的头文件信息,所述头文件信息包括代码长度、代码版本以及代码数据校验中的至少一者;根据所述头文件信息将所述第一用户应用程序复制到所述随机存取存储器;重新定义所述随机存取存储器的中断向量表;在所述随机存取存储器中重新运行所述第一用户应用程序。2.根据权利要求1所述的方法,其特征在于,所述根据所述备份寄存器的最低位的值确定所述第一用户应用程序在所述随机存取存储器中运行还是在所述闪存存储器中运行包括:对所述备份寄存器的最低位取反并读取,以得到读取值;如果所述读取值是第一值,则确定所述第一用户应用程序在随机存取存储器中运行;如果所述读取值是第二值,则确定所述第一用户应用程序在闪存存储器中运行。3.根据权利要求1所述的方法,其特征在于,还包括:在确定所述第一用户应用程序在所述随机存取存储器中运行的情况下:当用户不需要保存新的数据,从所述闪存存储器读取上一次保存的数据,所述上一次保存的数据用于被上报或所述第一用户应用程序自身应用。4.根据权利要求1所述的方法,其特征在于,还包括:在将所述第二用户应用程序和头文件信息重新写入所述闪存存储器之后,重新定义中断向...

【专利技术属性】
技术研发人员:凡堃堃钟填荣
申请(专利权)人:广州极飞科技股份有限公司
类型:发明
国别省市:

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

1