一种操作norflash的方法及装置与流程

文档序号:16880323发布日期:2019-02-15 22:04阅读:592来源:国知局
一种操作norflash的方法及装置与流程

本发明涉及计算机存储领域,尤其涉及一种操作norflash的方法及装置。



背景技术:

在计算机存储领域,文件的保密性和安全性越来越受到重视,一些重要文件会存储在非易失存储器上,如norflash,而存储重要文件的norflash会被锁定。被锁定的norflash,其存储的内容不能被修改。若要修改被锁定的norflash的存储内容,需要先将其解锁。

现有技术中,应用程序对norflash进行操作的方法是,通过操作系统内核文件调用内核驱动层的接口将norflash解锁,再进行修改等操作。但是,这种方式需要依赖操作系统内核,不够灵活,且有些操作系统不提供应用程序的解锁接口;另外,现有技术中还存在“自身解锁自身”的问题,举例来说,如果一个norflash上存储的是操作系统文件,一般来说操作系统文件所属存储空间的读写属性为只读属性,应用程序要对操作系统文件进行修改,应用程序需先通过调用内核norflash驱动中的接口,解除该norflash的锁定或者改变操作系统文件所属存储空间的读写属性,这种“自身解锁自身”方式会使得对norflash的锁定毫无意义。

因此,急需一种可通过应用程序直接对norflash进行操作的方法。



技术实现要素:

本发明实施例提供了一种操作norflash的方法,用于解决现有技术中不能直接操作norflash的问题。

本发明实施例提供了一种操作norflash的方法,包括:

主机通过所述主机的应用层获取norflash中需要操作的地址空间;

所述主机通过所述主机的应用层对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令。

主机通过所述主机的应用层获取norflash中需要操作的地址空间;

所述主机通过所述主机的应用层对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令。

可选的,所述主机通过所述主机的应用层对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令,包括:

所述至少一个操作指令为获取norflash标识指令、加锁指令、解锁指令、编程指令、擦除指令、数据获取指令、状态获取指令中一个或多个操作指令;

所述主机通过所述主机的应用层,通过执行所述解锁指令解锁所述地址空间对应的存储数据,通过执行所述擦除指令将所述地址空间对应的存储数据从所述norflash中删除,通过执行所述编程指令将预设的程序固件写入所述地址空间。

可选的,所述主机通过所述主机的应用层对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令之后,还包括:

所述主机通过所述主机的应用层,校检所述地址空间对应的存储数据。

可选的,所述主机通过所述主机的应用层,校检所述地址空间对应的存储数据,包括:

针对所述地址空间对应的存储数据的每一字节的数据,所述主机通过所述主机的应用层,确定该字节的数据与该字节在所述主机的内存中的对应数据是否一致。

可选的,若所述主机通过所述主机的应用层,确定该字节的数据与该字节在所述主机的内存中的对应数据不一致之后,若对该字节的数据执行所述至少一个操作指令中任一操作指令的次数小于n次,则对该字节的数据重新执行所述至少一个操作指令中任一操作指令;n为大于1的整数。

本发明实施例中,主机获取norflash中需要操作的地址空间,再直接对地址空间对应的存储数据进行操作。因此,主机对norflash进行操作时,不必依赖操作系统内核,从而在操作系统内核无对应操作接口时,对norflash进行操作,并提升了操作norflash的灵活度,节省了操作成本。

基于同样的发明构思,本发明实施例还提供了一种操作norflash的装置,包括:

获取模块:获取norflash中需要操作的地址空间;

处理模块:对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令。

可选的,所述至少一个操作指令为获取norflash标识指令、加锁指令、解锁指令、编程指令、擦除指令、数据获取指令、状态获取指令中一个或多个操作指令;

所述处理模块具体用于:

通过执行所述解锁指令解锁所述地址空间对应的存储数据,通过执行所述擦除指令将所述地址空间对应的存储数据从所述norflash中删除,通过执行所述编程指令将预设的程序固件写入所述地址空间。

可选的,所述处理模块还用于:

校检所述地址空间对应的存储数据。

可选的,所述处理模块具体用于:

针对所述地址空间对应的存储数据的每一字节的数据,确定该字节的数据与该字节在所述主机的内存中的对应数据是否一致。

可选的,所述处理模块还用于:

若确定该字节的数据与该字节在所述主机的内存中的对应数据不一致之后,若对该字节的数据执行所述至少一个操作指令中任一操作指令的次数小于n次,则对该字节的数据重新执行所述至少一个操作指令中任一操作指令;n为大于1的整数。

附图说明

图1为本发明实施例中操作norflash方法对应的架构示意图;

图2为本发明实施例中操作norflash方法对应的流程图;

图3为本发明实施例中操作norflash方法对应的具体步骤流程图;

图4为本申请实施例中操作norflash装置对应的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

非易失存储器(flash)是存储芯片的一种,通过特定的程序可以修改flash里面的数据。flash不仅具备电子可擦除可编程(eeprom)的性能,还可以快速读取数据,使数据不会因为断电而丢失。norflash为flash的一种。norflash的特点是芯片内执行(xip,executeinplace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统随机存取存储器(ram,randomaccessmemory)中。

norflash一般存储较为重要的数据,如嵌入式操作系统。运行嵌入式操作系统时,操作系统内核、文件系统所在的norflash会被锁定。被锁定的norflash,其存储的内容不能被修改。若要修改被锁定的norflash的存储内容,需要先将其解锁。现有技术中,应用程序对norflash进行操作需要依赖操作系统内核,本发明实施例提供了一种不依赖操作系统内核,应用程序直接操作norflash的方法。

下面结合说明书附图对本发明实施例作进一步详细描述。

如图1所示,为本发明实施例中操作norflash方法对应的架构示意图,应用程序绕过操作系统内核,直接对norflash进行操作。

如图2所示,为本发明实施例中操作norflash方法对应的步骤流程图。

步骤201:主机通过所述主机的应用层获取norflash中需要操作的地址空间。

步骤202:所述主机通过所述主机的应用层对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令。

步骤201中,主机先获取norflash标识,再根据norflash的标识确定有效地址空间,最后从有效地址空间中获取需要操作的地址空间;具体地,由主机的应用层执行,主机的应用层由多个应用程序组成,这些应用程序为预设的特定应用程序,拥有直接对norflash进行操作的权限。

由于不同型号的norflash操作特性存在差异,比如同一操作指令的等待时间有差异。举例来说,在主机对型号1的norflash进行读取操作后,等待1s;在主机对型号2的norflash进行读取操作后,等待2s。

为了针对不同型号的norflash进行不同的操作,主机需要先获取norflash标识,再根据norflash标识确定操作指令的时序参数;其中时序参数用于定义该操作指令在执行具体步骤的流程中,执行每个步骤的顺序和执行后的等待时间。norflash标识还用来确定norflash的有效地址空间,有效地址空间即为主机可操作的物理地址的范围。

具体地,获取norflash标识步骤包括:主机将norflash的一部分物理地址映射到主机。举例来说,主机根据预设条件,选择一个norflash的初始地址,从该初始地址选择长度为0x1000(十六进制)的物理地址空间。之后,norflash执行获取norflash标识,至少包括厂家标识和设备标识。

主机再根据norflash标识获取有效地址空间,主机确保不需要操作的地址空间的数据不受影响,只将有效地址空间中需要操作的地址空间映射为主机中的逻辑地址。具体地,若所述需要操作的物理地址连续,则主机将该段连续的物理地址映射为主机中的逻辑地址;或者,若需要操作的物理地址不连续,则主机将需要操作的物理地址划分为若干段连续的物理地址;针对每一段连续的物理地址,主机将该段物理地址映射为主机中的一段逻辑地址。需要说明的是,对上述映射的方法不做限定,举例来说,通过mmap(macmysqlapachephp)方式映射。mmap为一种内存映射文件的方法,将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。其中,页为预设大小的存储区。

步骤202中,在确定了norflash标识后,主机执行相应的至少一个操作指令。操作指令包括:获取norflash标识指令、加锁指令、解锁指令、擦除指令、编程指令、数据读取指令、状态读取指令。

具体地,获取norflash标识指令为获取norflash标识的指令;加锁指令为锁定norflash不能被修改的指令;解锁指令为解除norflash锁定,可以被修改的指令;擦除指令为删除norflash中存储内容的指令;编程指令,将程序固件写入norflash指令;数据读取指令,从norflash中读取存储数据的指令;状态读取指令为读取上一操作指令的执行状态的指令。其中,执行数据读取指令之前,不需要对norflash进行解锁;执行擦除指令、编程指令之前,都需要对norflash进行解锁。其中,程序固件为计算机的一个底层程序,如计算机主板上的基本输入/输出系统(bios,basicinput/outputsystem)。

主机可执行上述多个操作指令中的一个操作指令,也可执行其中的x个操作指令的组合;x为大于1的整数。举例来说,解锁指令、擦除指令、加锁指令;数据读取指令、解锁指令、擦除指令、编程指令、加锁指令。

举例来说,所述主机通过所述主机的应用层,通过执行所述解锁指令解锁所述地址空间对应的存储数据,通过执行所述擦除指令将所述地址空间对应的存储数据从所述norflash中删除,通过执行所述编程指令将预设的程序固件写入所述地址空间。

如图3所示,为本发明实施例中操作norflash方法对应的具体步骤流程图。

步骤301:主机获取norflash中需要操作的地址空间。

步骤302:主机执行解锁指令。

步骤303:主机执行擦除指令。

步骤304:主机执行编程指令。

步骤305:主机校检地址空间对应的存储数据。

步骤306:主机执行加锁指令。

步骤301中,主机先获取norflash标识,再根据norflash的标识确定有效地址空间,最后从有效地址空间中获取需要操作的地址空间。

步骤301之后,需要说明的是,本发明实施例仅以步骤302~步骤304为例说明主机执行至少一个操作指令的步骤,但不限于步骤302~步骤304涉及的这些操作指令以及这些操作指令的执行次序。

另外,所述norflash中与所述地址空间对应的存储数据存储在k个数据块上。在执行所述x个操作指令是以数据块为单位的。针对所述k个数据块中的每个数据块,所述主机对该数据块执行所述x个操作指令;所述数据块为一个地址连续且预设了存储空间大小的存储区块;k为大于0的整数。

步骤302中,由于需要操作的地址空间对应的存储数据在执行x个操作指令之前被锁定,不能将这些数据删除或修改,因此,主机先对这些存储数据进行解锁。

具体地,针对所述k个数据块中的每个数据块,主机通过主机的应用层,解除该数据块的锁定状态。

需要说明的是,这些数据块之间可能连续,也可能不连续。举例来说,数据块1、数据块2和数据块3的物理地址连续,解锁数据块1、数据块2和数据块3;或者,解锁数据块1和数据块3。

步骤303中,需要操作的地址空间已有存储数据,即地址空间需要操作的已被占用,主机不能直接写入数据,且此时这些存储数据已可以被删除,因此,主机先对需要操作的地址空间对应的存储数据执行擦除指令。

具体地,针对所述k个数据块中的每个数据块,主机通过主机的应用层,将该数据块存储的数据删除。

举例来说,将数据块1和数据块3的数据删除。

步骤304中,需要操作的地址空间已被解除锁定,且没有存储数据。因此,主机对需要操作的地址空间执行编程指令。

具体地,针对所述k个数据块中的每个数据块,主机通过主机的应用层,将存储在主机的内存中的预设程序固件写入该数据块。需要说明的是,此处仅以主机内存为例,预设程序固件不限于存储在主机内存,还可以是主机的硬盘、移动硬盘、网盘、服务器等。

举例来说,若主机中的应用程序执行编程指令,将一段程序固件写入数据块1和数据块3。写入数据块的方式也有多种,举例来说,程序固件写入数据块的方式可以为每次写入一字节,每次写入两字节等。

步骤302~步骤304中,一种可选方式为,在主机执行每一个操作指令(除状态读取指令外)后,主机执行状态读取指令,若操作指令执行失败,再次执行该操作指令。另外,状态读取指令还用于读取norflash是否为异常状态。

举例来说,针对所述k个数据块中的每个数据块,所述主机对该数据块执行了所述解锁指令之后,所述主机查询该数据块是否为锁定状态。当确认该数据块不是锁定状态时,才进一步执行擦除指令。实际上是,主机执行了解锁指令之后,执行了状态读取指令。

步骤305,在程序固件写入k个数据块之后,主机并不确定是否写入正确,因此,主机校检地址空间对应的存储数据。

具体地,针对所述地址空间对应的存储数据的每一字节的数据,所述主机通过所述主机的应用层,确定该字节的数据与该字节在所述主机的内存中的对应数据是否一致。

若所述主机通过所述主机的应用层,确定该字节的数据与该字节在所述主机的内存中的对应数据不一致之后,若对该字节的数据执行所述至少一个操作指令中任一操作指令的次数小于n次,则对该字节的数据重新执行所述至少一个操作指令中任一操作指令;n为大于1的整数。

举例来说,n为3,若主机对数据块1第一次执行编程指令后,主机通过比较得出,数据块1存储的数据与该数据块在所述主机的内存中的对应数据不一致,由于主机对数据块1执行编程指令的次数为1,小于3,因此再次对数据块1执行编程指令;若第2次执行编程指令后,数据块1存储的数据与该数据块在所述主机的内存中的对应数据仍然不一致,则返回错误通知信息。

步骤306中,在上述步骤302~305进行完之后,若所述主机通过所述主机的应用层,确定需要操作的地址空间中每一字节的数据与该字节在所述主机的内存中的对应数据都一致。为保护需要操作的地址空间写入的程序固件,因此,主机对这些存储数据执行加锁指令。

具体地,针对所述k个数据块中的每个数据块,主机通过主机的应用层,锁定该数据块。

针对属性为只读状态,或者操作系统内核无解锁接口的norflash,本发明实施例通过应用程序直接对norflash进行操作,不受操作系统内核限制,可对锁定的norflash进行更新。本发明实施例中可随机操作norflash中的任意地址,操作更加丰富、灵活,有助于应用程序对norflash异常状态的判断。应用程序直接操作norflash相当于,重新实现了调用操作系统内核的接口。

本发明实施例中,主机获取norflash中需要操作的地址空间,再直接对地址空间对应的存储数据进行操作。因此,主机对norflash进行操作时,不必依赖操作系统内核,从而在操作系统内核无对应操作接口时,对norflash进行操作,并提升了操作norflash的灵活度,节省了操作成本。

基于同样的发明构思,如图4所示,本发明实施例还提供了一种操作norflash的装置,包括:

获取模块401:获取norflash中需要操作的地址空间;

处理模块402:对所述norflash中与所述地址空间对应的存储数据,执行预设的至少一个操作指令。

可选的,所述至少一个操作指令为获取norflash标识指令、加锁指令、解锁指令、编程指令、擦除指令、数据获取指令、状态获取指令中一个或多个操作指令;

所述处理模块402具体用于:

通过执行所述解锁指令解锁所述地址空间对应的存储数据,通过执行所述擦除指令将所述地址空间对应的存储数据从所述norflash中删除,通过执行所述编程指令将预设的程序固件写入所述地址空间。

可选的,所述处理模块402还用于:

校检所述地址空间对应的存储数据。

可选的,所述处理模块402具体用于:

针对所述地址空间对应的存储数据的每一字节的数据,确定该字节的数据与该字节在所述主机的内存中的对应数据是否一致。

可选的,所述处理模块402还用于:

若确定该字节的数据与该字节在所述主机的内存中的对应数据不一致之后,若对该字节的数据执行所述至少一个操作指令中任一操作指令的次数小于n次,则对该字节的数据重新执行所述至少一个操作指令中任一操作指令;n为大于1的整数。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1