CN113741792A - 用于单片机存储数据的方法、单片机及可读存储介质 - Google Patents
用于单片机存储数据的方法、单片机及可读存储介质 Download PDFInfo
- Publication number
- CN113741792A CN113741792A CN202010476428.9A CN202010476428A CN113741792A CN 113741792 A CN113741792 A CN 113741792A CN 202010476428 A CN202010476428 A CN 202010476428A CN 113741792 A CN113741792 A CN 113741792A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- user application
- random access
- chip microcomputer
- single chip
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供一种用于单片机存储数据的方法,包括初始化用户应用程序的运行环境;根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行;擦除闪存存储器;将用户应用程序重新写入闪存存储器;将头文件信息写入到闪存存储器;将待保存数据存储到闪存存储器。通过上述技术方案,本申请实施例提供的用于单片机存储数据的方法,在不需要外部存储器的基础上,保证不丢失启动代码和用户应用程序也可以满足对用户应用数据的保存需要。
Description
技术领域
本申请涉及单片机技术领域,具体地涉及一种用于单片机存储数据的方法、单片机及可读存储介质。
背景技术
对于低成本单片机如STM32H750系列,这类单片机芯片有一个显著的缺点就是Flash(以下称为闪存存储器)的容量小,闪存存储器的存储空间往往只有一个扇区,导致这种类型的单片机在运行时想要保存应用参数或者数据,根据闪存存储器擦除以扇区为最小单位的机制,在新的数据被写入之前,会将闪存存储器中原有的代码擦除,从而导致芯片当场宕机,因此下次系统上电时无法从闪存存储器启动,导致数据遗失。
现有技术中可以通过外接其他的存储器来保存数据,如Nand Flash(资料储存型闪存存储器)或者Nor Flash(非易失型闪存存储器),但是这种方式会增加成本,违背选取这类芯片的初衷。
发明内容
为解决上述技术问题,本申请的目的是提供用于单片机存储数据的方法单片机、及可读存储介质。
为了实现上述目的,在本申请第一方面,提供一种用于单片机存储数据的方法,单片机包括备份寄存器、闪存存储器以及随机存取存储器,闪存存储器和随机存取存储器的地址映射到备份寄存器的最低位,闪存存储器被分区以形成指定存储区域,方法包括:初始化用户应用程序的运行环境;根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行还是在闪存存储器中运行;在确定用户应用程序在随机存取存储器中运行的情况下:确定用户是否需要保存新的数据;擦除闪存存储器;将用户应用程序重新写入闪存存储器;将头文件信息写入到闪存存储器;将新的数据存储到闪存存储器;在确定用户应用程序在闪存存储器中运行的情况下:读取存储在闪存存储器上的头文件信息,头文件信息包括代码长度、代码版本以及代码数据校验中的至少一者;根据头文件信息将用户应用程序复制到随机存取存储器;重新定义随机存取存储器的中断向量表;在随机存取存储器中重新运行用户应用程序。
在本申请实施例中,根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行包括:备份寄存器的最低位取反并读取,以得到读取值;如果读取值是第一值,则确定用户应用程序在随机存取存储器中运行;如果读取值是第二值,则确定用户应用程序在闪存存储器中运行。
在本申请实施例中,在确定用户应用程序在随机存取存储器中运行的情况下:当用户不需要保存新的数据,从闪存存储器读取上一次保存的数据,该数据用于被上报或用户应用程序自身应用。
在本申请实施例中,在将用户应用程序和头文件信息重新写入闪存存储器之后,重新定义中断向量表;执行用户自定义应用,其中数据是在执行用户自定义应用的过程中产生的。
在本申请实施例中,将用户应用程序重新写入闪存存储器包括:将用户应用程序重新写入到闪存存储器的启动地址处;将头文件信息写入到闪存存储器包括:将头文件信息写入到闪存存储器的指定存储区域。
在本申请实施例中,初始化用户应用程序运行环境包括:根据单片机的类型以及运行环境,初始化系统和基本外设。
在本申请实施例中,重新写入到闪存存储器的用户应用程序是随机存取存储器中的用户应用程序或新的用户应用程序。
在本申请实施例中,闪存存储器被分区以形成指定存储区域包括:沿闪存存储器存储地址增加的方向,将闪存存储器分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
在本申请第二方面,提供一种单片机,包括:备份寄存器;闪存存储器;以及随机存取存储器;闪存存储器和随机存取存储器的地址映射到备份寄存器的最低位,以使访问闪存存储器、随机存取存储器的指令能够访问到备份寄存器;其中单片机被配置成执行上述的用于单片机存储数据的方法。
闪存存储器被配置成:沿闪存存储器存储地址增加的方向,将闪存存储器分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
在本申请第三方面,提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得处理器被配置成执行上述的用于单片机存储数据的方法。
通过上述技术方案,本申请提供的用于单片机存储数据的方法,基于在单片机上电后的执行机制,根据单片机内备份寄存器的最低位判断程序所运行的位置,在判断出用户应用程序在随机存取存储器时,如果用户需要保存新数据,对闪存存储器进行擦除并重新写入用户应用程序后,将数据保存到闪存存储器。由于随机存取存储器有程序执行,因此单片机不会宕机。另外,本申请所提供的方法可以在不借助于外部闪存存储器芯片的情况下,仅利用单片机的闪存存储器就能够保证不丢失单片机启动代码和用户应用程序,同时满足对用户应用数据的保存需要。
本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
图1是根据本申请一实施例提供的用于单片机存储数据的方法的流程图;
图2是根据本申请一实施例提供的用于单片机存储数据的方法的另一流程图;
图3是根据本申请实施例提供的单片机可以执行的用于单片机存储数据的方法的流程图;以及
图4是适于用来实现本申请实施例方法的单片机的结构示意图。
附图标记说明
800、计算机系统; 801、中央处理单元;
802、备份寄存器; 803、闪存存储器;
804、随机存取存储器; 805、总线;
806、I/O接口; 807、输入部分;
808、输出部分; 809、通信部分;
810、驱动器。
具体实施方式
以下结合附图对本申请实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。
需要说明,若本公开实施方式中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本公开实施方式中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施方式之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本公开要求的保护范围之内。
图1是根据本申请实施例提供的用于单片机存储数据的方法的流程图。根据本申请发明所要解决的技术问题可知,本申请实施例旨在解决单片机的数据存储空间问题,即本申请实施例的方法所适用的单片机为闪存存储器容量过小的低成本单片机。因此,运用该方法的单片机包括备份寄存器、闪存存储器以及随机存取存储器,备份寄存器、闪存存储器以及随机存取存储器存在相互映射关系。
具体地,本申请实施例中的术语“映射关系”可以指将闪存存储器、随机存取存储器的地址映射到备份寄存器;可以映射到最低位,以使访问存储器(即闪存存储器、随机存取存储器)的指令可以访问到备份寄存器,也即访问存储器的指令可以被备份寄存器所探知,从而使得该单片机的操作方式更为多样化。
运用该方法的单片机还可以被配置成:对闪存存储器分区式分配,即将闪存存储器的内存划分成若干个连续的指令存储区域,每个指令存储区域仅装预设的程序。该分区方式可以为固定式分区,可选地通过建立分区表给予程序合理的分区。具体地,闪存存储器被分区以形成指定存储区域包括:沿闪存存储器存储地址增加的方向,分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
在基于上述的单片机配置后,以下对该单片机存储数据的方法进行详细阐述。如图1所示,在本申请实施方式中,用于单片机存储数据的方法可以包括以下步骤:
步骤S11:初始化用户应用程序的运行环境;
步骤S12:根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器(RAM)中运行;
步骤S13:擦除闪存存储器(Flash,简称闪存);
步骤S14:将用户应用程序重新写入闪存存储器;
步骤S15:将头文件信息写入到闪存存储器;
步骤S16:将待保存数据存储到闪存存储器。
具体地,在步骤S11中初始化用户应用程序运行环境,可以为根据单片机的类型初始化系统时钟和基本外设。即开始上电之后的系统初始化,主要有时钟以及串口、LCD(Liquid Crystal Display:液晶显示器)的初始化和系统参数设置。
可以理解,基本外设以及所需初始化的参数具体可根据单片机的类型以及运行环境而定,其参数例如是UART的字节长度、校验位、波特率等。通过初始化系统以及基本外设,使得系统处于或者回到默认的初始状态下,以便于上电后保持复位状态,防止单片机发出错误的指令、执行错误操作,提高电磁兼容性能,避免用户应用程序跑飞或者单片机宕机。
初始化用户应用程序运行环境后,在步骤S12中根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行,可以包括:
读取备份寄存器的最低位的值并对读取的值取反,以得到读取值;如果读取值是第一值,则确定用户应用程序在随机存取存储器中运行。
具体来说,对单片机里的备份寄存器的最低有效位(即bit0位)取反并读取,得到读取值。因为程序在系统上电后会被执行两次,且由于备份寄存器上的数据在不掉电的情况下数据不会丢失,因此当bit0位在取反之后的读取值为1时说明程序在闪存存储器中运行。
bit0位的读取值为0时说明程序已经在随机存取存储器中运行。因此在该示例中,第一值可以是二进制0。寄存器的最低位可以用于作为用户应用程序运行位置的标记,可用于检测用户应用程序运行所在的位置。
通过上述方法,可以实现通过简单的方式检测用户应用程序运行的位置。
当用户应用程序在随机存取存储器中运行时,可以擦除闪存存储器。
具体地,闪存存储器包括有主存储块和信息块,在擦除闪存存储器时,可根据具体情况按页面擦除或者完全擦除。上述完全擦除可以不影响信息块。擦除闪存存储器的方式可以包括代码擦除或者硬件方式的擦除,代码擦除的示例可以包括读取闪存存储器的lock位-解锁-擦除-获取闪存存储器的状态-锁定。硬件方式的擦除可以包括设置复位限位开关,通过触发复位限位开关进行闪存存储器擦除。
当闪存存储器被擦除后,闪存存储器存储空间被清理。之后,可以将用户应用程序重新写入闪存存储器(步骤S14),写入头文件信息到闪存存储器制定的存储区域(步骤S15),将待保存数据存储到闪存存储器(步骤S16)。
其中,该用户应用程序可以是新的用户应用程序,也可以是直接随机存取存储器中的用户应用程序重写自身,可以理解,在本申请实施例中定义的术语“用户应用程序”,对用户应用程序的定义是指用户可视的交互程序,是和数据分开的;如:定义的用户应用程序是A;参数是B、其他程序是C;那么A+B+C=总的代码程序。更具体地,在执行用户自定义的其他逻辑应用时,这些应用在实时交互中会根据现有的代码运行情况,重新计算出在该运行环境下的相关参数(数据),并判断是否需要将该数据存储到闪存存储器的指定存储区域。当有数据要存储到闪存存储器时,可以执行上述步骤S14到步骤S16。
在本申请实施例中,在步骤S13擦除闪存存储器之前,如果闪存存储器中有上一次保存的数据,可以执行步骤S13’:从闪存存储器读取单片机断电后上一次保存的数据。该数据可以用于被上报或用户应用程序自身应用。
在步骤S14中将用户应用程序重新写入闪存存储器可采用将用户应用程序重写自身,本申请发明中专业术语“重写自身”为本领域常见技术手段,也可称之为重写自身程序,如strcpy函数,将源字符串各个值依次赋值到目标字符串上到\0为止完成重写自身。将用户应用程序重新写入闪存存储器可以包括:将用户应用程序重新写入到闪存存储器的启动地址处。
在步骤S15中将头文件信息写入到闪存存储器可以包括:将头文件信息写入到闪存存储器的指定存储区域。在将用户应用程序和头文件信息重新写入闪存存储器之后,可以重新定义中断向量表,执行用户自定义应用,待保存数据是在执行用户自定义应用的过程中产生的。头文件信息可以根据uboot(Universal Boot Loader:通用引导加载用户应用程序)的头文件结构体表示,其可以包括代码长度、代码版本以及代码数据校验等。可以理解的是,也可用其他方式的结构体表示,其仅需满足相同或者相似的效果,均属于本申请所保护的涵盖范围内。
因此,通过上述方法,当根据备份寄存器的最低位的值确定用户应用程序在随机存取存储器中运行时,才可以清空闪存存储器来用于保存产生的数据。因为此时用户应用程序是在随机存取存储器中运行的,因此即使擦除闪存存储器单片机也可以一直处于运行状态而不会宕机。在需要向闪存存储器中存储数据(参数)时,可以将用户应用程序重写到闪存存储器,并将需要保存的数据存储到闪存存储器。
可以理解,通过以上方式,当有新的数据出现时,即使擦除闪存存储器也不会导致单片机当场宕机,避免遗失重要数据,给用户带来不好的体验。因此对于单片机来说,通过上述方法可使得随机存取存储器有用户应用程序运行时,才允许在闪存存储器上进行擦除后数据写入的步骤,从而单片机不会宕机,而且根据闪存存储器的运行机制,在下次上电时,可直接从闪存存储器启动,读取上次保留的数据。
如上所述,当程序在闪存存储器中运行时,如果需要将数据存储到闪存存储器中,需要先将闪存存储器擦除。为了避免擦除闪存存储器导致程序(例如运行代码)丢失而使得单片机宕机,需要先将程序复制到随机存取存储器中运行。图2是根据本申请实施例提供的用于单片机存储数据的方法的另一流程图。请参阅图2,在程序在闪存存储器中运行的情况下,用于单片机存储数据的方法可以包括以下步骤:
步骤S22:根据备份寄存器的最低位的值确定用户应用程序在闪存存储器中运行;
步骤S23:读取存储在闪存存储器上的头文件信息,头文件信息包括代码长度、代码版本以及代码数据校验中的至少一者;
步骤S24:根据头文件信息将用户应用程序复制到随机存取存储器;
步骤S25:重新定义随机存取存储器的中断向量表;
步骤S26:在随机存取存储器中重新运行用户应用程序。
具体地,在步骤S22中对备份寄存器的最低位取反并读取,以得到读取值。如果读取值是第二值,则可以确定用户应用程序在闪存存储器中运行。例如,如上所述,寄存器的最低位可以作为用户应用程序运行位置的标记,用于检测用户应用程序运行所在的位置。例如,第二值可以是二进制1。
在步骤S23中读取闪存存储器上的头文件信息,头文件信息可以根据uboot(Universal Boot Loader:通用引导加载用户应用程序)的头文件结构体表示,包括代码长度、代码版本以及代码数据校验等,可以理解的是,也可用其他方式的结构体表示,其仅需满足相同或者相似的效果,均属于本申请所保护的涵盖范围内。
之后可以执行步骤S24,根据头文件信息将用户应用程序复制到随机存取存储器;以及步骤S25:重新定随机存取存储器的中断向量表后,即获取到用户应用程序在随机存取存储器的执行存储空间;继而执行步骤S26,即在随机存取存储器中重新运行用户应用程序,即跳转到该用户应用程序的执行首地址处重新执行。即用户应用程序从闪存存储器转到随机存取存储器中运行。随后该方法可以回到步骤S11,即进行初始化用户应用程序运行环境。
上述步骤S24中头文件信息用户应用程序复制到随机存取存储器的方式可利用linux操作系统下的文件复制的程序,其可部分复制或者全部复制,具体根据用户应用程序的适用环境而定,例如,将PC(program counter:用户应用程序计数器)指针跳到随机存取存储器首地址,即指当前用户应用程序运行的位置,从而实现用户应用程序在随机存取存储器中运行。
可以理解的是,用户应用程序在实行复制前,预设好程序以将闪存存储器中的用户应用程序复制到随机存取存储器中运行,该用户应用程序可以存储于闪存存储器中的指定存储区域,该指定存储区域可以在闪存存储器上电时不影响运行程序,即完成程序的烧写过程。该方式属于本行业领域人员常见技术手段,在本申请实施例中不再赘述。
在将用户应用程序从闪存存储器复制到随机存取存储器后,可以重新映射中断向量表,即上述的重新定义随机存取存储器的中断向量表,即某个中断服务程序的入口地址的集合,例如,在用户应用程序中预留随机存取存储器起始地址的空间,其所需预留的空间可根据实际情况而定,如根据中断函数的入口地址数计算,将中断向量表放入到随机存取存储器的起始位置,在bootloader(bootload:引导启动程序)中将用户应用程序的中断向量表从闪存存储器中复制到随机存取存储器后,继而设置中断向量表位于随机存取存储器中。
通过步骤S22至步骤S26,本申请实施例提供的用于单片机存储数据的方法,当根据备份寄存器的最低位的值确定用户应用程序在闪存存储器中运行时,将用户应用程序利用跳转指令,跳转至随机存取存储器运行,根据随机存取存储器的运行速度大于闪存存储器的机制,从而保证运行速度,给用户提供更好的使用体验,且由于本申请适用于低成本单片机(例如STM32单片机,例如型号STM32H750系列),存在闪存存储器存储空间不够的问题,因此采用将用户应用程序跳转到随机存取存储器中运行,使得该类单片机不需要外接存储芯片,可以直接将用户数据保存在单片机内置的单扇区的闪存存储器上,因此,可以保证单片机在上电时不丢失数据和用户应用程序的同时,又能基于低成本单片机上即可满足用户的数据保存需求。
综上,本申请实施例提供的用于单片机存储数据的方法,基于在单片机上电后的执行机制,且由于备份寄存器上的数据在不掉电的情况下用户的数据不会丢失,从而通过对单片机内备份寄存器的最低位取反并读取的值,判定程序所运行的位置,当最低位取反值为第一值时用户应用程序在随机存取存储器时,此时可以根据用户是否需要保存新数据将数据存储在闪存中。此时由于程序在随机存取存储器中运行,因此即使在存储新数据时需要先擦除闪存存储器也不会导致单片机不会宕机,由此增加单片机的实用性,提高用户的使用体验。
此外,当备份寄存器的最低位取反并读取的值为第二值时,此时用户应用程序在闪存存储器上运行,在这种情况下可以将闪存存储器上运行的用户应用程序通过复制到随机存取存储器中运行,同样可以实现上述的效果。
综上,通过这种方式,在不借助于外部存储器芯片的基础上,在保证不丢失单片机启动代码和用户应用程序的情况下,满足对用户应用数据的保存需要。本申请实施例提供的方案适用于低成本方案的场景,具备低成本、高效率、高速、易实现的优点。
本申请实施例还提供一种单片机,用于运行用户应用程序,用户应用程序被运行时使得单片机用于执行根据上述实施例中的用于单片机存储数据的方法。可以理解的是,该单片机可执行上述实施例中的方法的部分步骤或者全部步骤,均属于本申请所涵盖的保护范围内。
图3是根据本申请实施例提供的单片机可以执行的用于单片机存储数据的方法的流程图。请参阅图3,在该实施例中,方法可以包括以下步骤:
步骤S31:初始化用户应用程序运行环境;
步骤S32:对备份寄存器的最低位取反并读取;
步骤S33:判断备份寄存器的最低位的读取值是否等于第一值;
步骤S34:如果在步骤S33中判断出读取的值等于第一值,则读取单片机断电后闪存存储器中上一次保存的数据;
步骤S35:判断用户是否需要保存新的数据;
步骤S36:如果在步骤S35中判断出需要保存新的数据,则擦除闪存存储器;
步骤S37:将用户应用程序重新写入闪存存储器;
步骤S38:将头文件信息写入到闪存存储器;
步骤S39:将待保存数据存储到闪存存储器。
如果在步骤S35中判断出不需要保存新的数据,则方法结束。
步骤S41:如果在步骤S33中判断出读取的值不等于第一值(例如,等于第二值),则读取存储在闪存存储器上的头文件信息;
步骤S42:根据头文件信息将用户应用程序复制到随机存取存储器;
步骤S43:重新定义随机存取存储器的中断向量表;
步骤S44:在随机存取存储器中重新运行用户应用程序。
图3示出的实施例中的步骤可以是图1和图2示出的实施例的组合。单片机运行图3示出的实施例的方法的步骤,单片机可以在增加外部存储器的基础上,在不丢失启动代码和用户应用程序的前提下,满足对用户应用数据的保存需要。因此,该单片机可广泛应用于低成本的应用环境中,节约成本,同时还兼顾了用户的使用满意度。
本申请实施例还提供一种单片机800,该单片机800中存储有计算机程序,所述计算机程序被设置为运行时执行如上述实施例中描述的用于单片机存储数据的方法。
图4示出了可以应用根据本申请实施例的用于单片机存储数据的方法的的单片机800的结构示意图。单片机800的型号可以例如为STM32H750系列,可以理解的是,图4示出的单片机800仅仅是一个示例,不应对本申请实施例的功能和使用范围进行限定。
如图4所示,单片机800包括中央处理单元(中央处理器)801以及备份寄存器802,中央处理器801可以根据存储在闪存存储器803中的程序加载到随机访问存储器804中的程序而执行各种适当的动作和处理。备份寄存器802用于存储多个字节的用户应用数据,以及判别用户应用程序的运行位置,在随机存取存储器804中,还存储有单片机800操作所需的各种程序和数据。中央处理器801、闪存存储器803以及随机存取存储器804通过总线805彼此相连。输入/输出(I/O)接口805也连接至总线805。
闪存存储器803可以被分区,即将闪存存储器803的内存划分若干个连续的指令存储区域,每个指令存储区域仅装预设的程序。分区方式可以为固定式分区,可选地通过建立分区表给予程序合理的分区。具体地,闪存存储器803可以被配置成沿闪存存储器存储地址增加的方向,分为第一存储区、第二存储区以及第三存储区;其中,第一存储区用于存储用户应用程序,第二存储区用于存储头文件信息,第三存储区用于存储数据。
以下部件连接至I/O接口806:包括键盘、鼠标等的输入部分807;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口806。
根据本申请公开的实施例,上文参考实施例一中的流程图描述过程可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(中央处理器)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如C语言、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如语言或类似的程序设计语言。程序代码可以完全地在管理端计算机上执行、部分地在管理端计算机上执行、作为一个独立的软件包执行、部分在管理端计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)域连接到管理端计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本申请实施例还提供了一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得处理器被配置成执行根据上述实施例所述的用于单片机存储数据的方法的部分步骤或者全部步骤。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机用户应用程序产品的流程图和/或方框图来描述的。应理解可由计算机用户应用程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机用户应用程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机用户应用程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机用户应用程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种用于单片机存储数据的方法,其特征在于,所述单片机包括备份寄存器、闪存存储器以及随机存取存储器,所述闪存存储器和所述随机存取存储器的地址映射到所述备份寄存器的最低位,所述闪存存储器被分区以形成指定存储区域,所述方法包括:
初始化用户应用程序的运行环境;
根据所述备份寄存器的最低位的值确定第一用户应用程序在所述随机存取存储器中运行还是在所述闪存存储器中运行;
在确定所述第一用户应用程序在所述随机存取存储器中运行的情况下:
确定用户需要保存新的数据;
擦除所述闪存存储器;
将第二用户应用程序写入所述闪存存储器储器;
将头文件信息写入所述闪存存储器;
将所述新的数据存储到所述闪存存储器;在确定所述第一用户应用程序在所述闪存存储器中运行的情况下:
读取存储在所述闪存存储器上的头文件信息,所述头文件信息包括代码长度、代码版本以及代码数据校验中的至少一者;
根据所述头文件信息将所述第一用户应用程序复制到所述随机存取存储器;
重新定义所述随机存取存储器的中断向量表;
在所述随机存取存储器中重新运行所述第一用户应用程序。
2.根据权利要求1所述的方法,其特征在于,所述根据所述备份寄存器的最低位的值确定所述第一用户应用程序在所述随机存取存储器中运行还是在所述闪存存储器中运行包括:
对所述备份寄存器的最低位取反并读取,以得到读取值;
如果所述读取值是第一值,则确定所述第一用户应用程序在随机存取存储器中运行;
如果所述读取值是第二值,则确定所述第一用户应用程序在闪存存储器中运行。
3.根据权利要求1所述的方法,其特征在于,还包括:
在确定所述第一用户应用程序在所述随机存取存储器中运行的情况下:
当用户不需要保存新的数据,从所述闪存存储器读取上一次保存的数据,所述上一次保存的数据用于被上报或所述第一用户应用程序自身应用。
4.根据权利要求1所述的方法,其特征在于,还包括:
在将所述第二用户应用程序和头文件信息重新写入所述闪存存储器之后,重新定义中断向量表;
执行用户自定义应用,其中所述数据是在执行用户自定义应用的过程中产生的。
5.根据权利要求1所述的方法,其特征在于,
所述将所述第二用户应用程序重新写入所述闪存存储器包括:将所述第二用户应用程序重新写入到所述闪存存储器的启动地址处;
将所述头文件信息写入所述闪存存储器包括:将所述头文件信息写入到所述闪存存储器的所述指定存储区域。
6.根据权利要求1所述的方法,其特征在于,所述初始化用户应用程序的运行环境包括:
根据所述单片机的类型以及运行环境,初始化系统和基本外设。
7.根据权利要求1所述的方法,其特征在于,所述第二用户应用程序是所述第一用户应用程序或新的用户应用程序。
8.根据权利要求1所述的方法,其特征在于,所述闪存存储器被分区以形成指定存储区域包括:
沿所述闪存存储器存储地址增加的方向,将所述闪存存储器分为第一存储区、第二存储区以及第三存储区;
其中,所述第一存储区用于存储用户应用程序,所述第二存储区用于存储头文件信息,所述第三存储区用于存储数据。
9.一种单片机,其特征在于,包括:
备份寄存器;
闪存存储器;以及
随机存取存储器;
所述闪存存储器和所述随机存取存储器的地址映射到所述备份寄存器的最低位,以使访问所述闪存存储器、所述随机存取存储器的指令能够访问到所述备份寄存器;
其中所述单片机被配置成执行根据权利要求1至8中任意一项所述的用于单片机存储数据的方法。
10.根据权利要求9所述的单片机,其特征在于,所述闪存存储器被配置成:
沿所述闪存存储器存储地址增加的方向,将所述闪存存储器分为第一存储区、第二存储区以及第三存储区;
其中,所述第一存储区用于存储用户应用程序,所述第二存储区用于存储头文件信息,所述第三存储区用于存储数据。
11.一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被单片机执行时使得单片机被配置成执行根据权利要求1至8中任意一项所述的用于单片机存储数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476428.9A CN113741792B (zh) | 2020-05-29 | 2020-05-29 | 用于单片机存储数据的方法、单片机及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476428.9A CN113741792B (zh) | 2020-05-29 | 2020-05-29 | 用于单片机存储数据的方法、单片机及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113741792A true CN113741792A (zh) | 2021-12-03 |
CN113741792B CN113741792B (zh) | 2023-09-01 |
Family
ID=78724731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476428.9A Active CN113741792B (zh) | 2020-05-29 | 2020-05-29 | 用于单片机存储数据的方法、单片机及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741792B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114265561A (zh) * | 2021-12-24 | 2022-04-01 | 上海集成电路装备材料产业创新中心有限公司 | 一种数据读取控制方法、芯片和介质 |
CN115599407A (zh) * | 2022-11-29 | 2023-01-13 | 深圳宏芯宇电子股份有限公司(Cn) | 固件烧录方法、固件烧录系统及存储器存储装置 |
CN116204450A (zh) * | 2023-04-28 | 2023-06-02 | 新华三技术有限公司 | 数据写入方法、处理器、器件、业务板及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103745167A (zh) * | 2013-12-31 | 2014-04-23 | 广东岭南通股份有限公司 | 单片机的iap方法及装置 |
CN104679592A (zh) * | 2013-12-02 | 2015-06-03 | 北京兆易创新科技股份有限公司 | 一种微控制单元mcu中资源动态分配的方法和系统 |
CN205302306U (zh) * | 2015-12-31 | 2016-06-08 | 北京兆易创新科技股份有限公司 | 一种嵌入式系统 |
CN106934258A (zh) * | 2015-12-31 | 2017-07-07 | 北京兆易创新科技股份有限公司 | 一种嵌入式系统 |
-
2020
- 2020-05-29 CN CN202010476428.9A patent/CN113741792B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679592A (zh) * | 2013-12-02 | 2015-06-03 | 北京兆易创新科技股份有限公司 | 一种微控制单元mcu中资源动态分配的方法和系统 |
CN103745167A (zh) * | 2013-12-31 | 2014-04-23 | 广东岭南通股份有限公司 | 单片机的iap方法及装置 |
CN205302306U (zh) * | 2015-12-31 | 2016-06-08 | 北京兆易创新科技股份有限公司 | 一种嵌入式系统 |
CN106934258A (zh) * | 2015-12-31 | 2017-07-07 | 北京兆易创新科技股份有限公司 | 一种嵌入式系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114265561A (zh) * | 2021-12-24 | 2022-04-01 | 上海集成电路装备材料产业创新中心有限公司 | 一种数据读取控制方法、芯片和介质 |
CN115599407A (zh) * | 2022-11-29 | 2023-01-13 | 深圳宏芯宇电子股份有限公司(Cn) | 固件烧录方法、固件烧录系统及存储器存储装置 |
CN115599407B (zh) * | 2022-11-29 | 2023-08-15 | 深圳宏芯宇电子股份有限公司 | 固件烧录方法、固件烧录系统及存储器存储装置 |
CN116204450A (zh) * | 2023-04-28 | 2023-06-02 | 新华三技术有限公司 | 数据写入方法、处理器、器件、业务板及存储介质 |
CN116204450B (zh) * | 2023-04-28 | 2023-08-18 | 新华三技术有限公司 | 数据写入方法、处理器、器件、业务板及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113741792B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113741792B (zh) | 用于单片机存储数据的方法、单片机及可读存储介质 | |
US6622200B1 (en) | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture | |
US5870520A (en) | Flash disaster recovery ROM and utility to reprogram multiple ROMS | |
US6243789B1 (en) | Method and apparatus for executing a program stored in nonvolatile memory | |
JP4981006B2 (ja) | 仮想計算機を制御する方法及びシステム | |
KR101110785B1 (ko) | 프로그램 가능한 내구력을 가진 플래시 메모리 | |
CN100543677C (zh) | 模拟实模式内存访问时访问扩展内存的系统和方法 | |
US6088759A (en) | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture | |
BR112021008419A2 (pt) | Acesso mais rápido da memória da máquina virtual apoiado por uma memória virtual do dispositivo de computação host | |
US6311290B1 (en) | Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture | |
CN101714091B (zh) | 用于在操作系统初始化期间显示平台图形的方法和系统 | |
US20100122015A1 (en) | Software adapted wear leveling | |
EP2453352A1 (en) | Software updating process for an embedded device | |
US10579300B2 (en) | Information handling system firmware persistent memory runtime reclaim | |
US7069445B2 (en) | System and method for migration of a version of a bootable program | |
JPH117505A (ja) | カード型記憶媒体 | |
JP3268130B2 (ja) | フラッシュeepromを用いたデータ処理装置 | |
JP2003316595A (ja) | インストール方法、ファイル更新方法、プログラム及びコンピュータシステム | |
EP3663910A1 (en) | Boot rom update method and boot-up method of embedded system | |
US6189070B1 (en) | Apparatus and method for suspending operation to read code in a nonvolatile writable semiconductor memory | |
JP2010198368A (ja) | 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体 | |
JPH08235028A (ja) | フラッシュメモリカードのデータ管理方法およびそのデータ管理方法を使用したデータ処理装置 | |
US5963738A (en) | Computer system for reading/writing system configuration using I/O instruction | |
US6543008B1 (en) | Computer system and program rewriting method | |
JPH10326227A (ja) | フラッシュメモリを記憶媒体とする記憶装置の管理方式 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |