一种基于嵌入式系统的闪存操作方法及装置与流程

文档序号:12120680阅读:346来源:国知局
一种基于嵌入式系统的闪存操作方法及装置与流程

技术领域

本发明涉及存储技术领域,尤其涉及一种基于嵌入式系统的闪存操作方法及装置。



背景技术:

闪存(Flash)是嵌入式平台的存储设备,对于一些嵌入式平台设备,如机顶盒,Flash用来存放系统软件,应用软件和用户信息等内容。在对系统软件设计时,需要对上述内容的存放地址进行详细严格的规划。一些应用模块,如CA模块、广告模块或节目管理模块等等,都会使用到Flash的存储信息,对Flash进行读取、写入或擦除等操作,并且各个应用模块只能在分配给自己的地址区间内进行操作,一旦写错了地址,有可能会引起严重的系统故障。

使用不同操作系统的嵌入式平台,对Flash的操作模式有很大的区别。对于Linux操作系统,使用的是内存技术设备(Memory Technology Device,MTD)为Flash建立统一的抽象接口,用户是调用Linux系统自身提供的读取、写入或擦除文件的标准接口对Flash进行相关操作。对于UCOS操作系统,用户直接调用Flash的原始驱动对Flash进行读取、写入或擦除文件的操作。

现有技术存在以下缺陷:当应用层软件在不同操作系统之间切换时,由于在不同的操作系统下,对Flash的操作模式不同,需要根据不同的操作系统分别设计和规划Flash。



技术实现要素:

本发明实施例提供一种基于嵌入式系统的闪存操作方法及装置,用以解决现有技术中需要针对不同的操作系统分别设计和规划Flash的问题。

本发明实施例提供一种基于嵌入式系统的闪存操作方法及装置,包括以下两个方面。

第一方面,一种基于嵌入式系统的闪存操作方法,该方法包括:

接收应用层发起的闪存操作请求,闪存操作请求中携带有操作指令、操作地址信息以及操作模式;

判断操作模式是按文件方式操作还是按物理地址方式操作;

在确定操作模式为按文件方式操作时,继续判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,若是,则按照操作指令对文件进行相应操作;否则,对应地址区间创建文件,按照操作指令对创建的文件进行相应操作;

在确定操作模式为按物理地址方式操作时,则根据操作指令、按照操作地址信息指示的地址区间进行相应操作。

通过这种可能的实施方式,为不同的操作系统的嵌入式产品,提供了一种统一的Flash操作方法,在系统软件设计时规划好后续进行Flash操作的文件存储路径后,技术人员不必关心该应用层软件应用在何种嵌入式平台,直接采用本发明实施例的Flash操作方法,根据不同的操作模式进行相应的处理,能够稳定可靠的对Flash进行相关操作,减少了越界存储的可能性,保证了系统的可靠性。使得在不同操作系统的产品可以相互继承,对于相同应用的产品可实现迅速切换,缩短了新产品的开发调试时间。

结合第一方面,在第一种可能的实现方式中,接收应用层发起的闪存操作请求之前,还包括:

在系统配置阶段,获取预设的操作模式,判断操作模式是按文件方式操作还是按物理地址方式操作;

在确定操作模式为按文件方式操作时,创建对闪存进行后续操作时的文件存储路径,并获取闪存的内存技术设备信息,根据内存技术设备信息配置块信息;

在确定操作模式为按物理地址方式操作时,获取闪存的公共闪存接口信息,根据公共闪存接口信息配置块信息;

其中,块信息包括各个块的块号、首地址和块大小。

通过这种可能的实施方式,提供了针对UCOS系统和Linux系统不同的配置方法,使得进一步的可以分别根据两种系统的不同操作模式,对闪存采用不同的操作方式。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,包括:

根据操作地址信息中携带的起始物理地址和终止物理地址确定地址区间;

根据块信息确定被地址区间覆盖的各个块的块号,判断闪存中是否存在与覆盖的各个块的块号对应的文件。

通过这种可能的实施方式,可以将应用层指示的操作地址信息对应为Linux系统中文件,使得可以进一步根据操作指令对该文件进行相应操作。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,对应地址区间创建文件,包括:

确定被地址区间覆盖的各个块的块号,对应各个块中的每一块创建一个文件,采用每一块的块号对创建的文件进行命名。

通过这种可能的实施方式,不存在地址区间对应的文件时,采用这种将块与文件对应的方式,创建文件,如此可以使得后续操作的时候,可以通过操作地址信息查找到对应的文件。

结合第一方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,按照操作指令对创建的文件进行相应操作,包括:

按照操作指令对地址区间覆盖的各个块对应的文件中的数据进行读取、写入或擦除操作。

结合第一方面的第一种可能的实现方式,在第五种可能的实现方式中,在确定操作模式为按物理地址方式操作时,则根据操作指令、按照操作地址信息指示的地址区间进行相应操作,包括:

在确定操作模式为按物理地址方式操作时,则按照操作指令对地址区间对应的各个块中的数据进行读取、写入或擦除操作。

第二方面,一种基于嵌入式系统的闪存操作装置,该装置包括:

接收单元,用于接收应用层发起的闪存操作请求,闪存操作请求中携带有操作指令、操作地址信息以及操作模式;

判断单元,用于判断操作模式是按文件方式操作还是按物理地址方式操作;

第一执行单元,用于在确定操作模式为按文件方式操作时,继续判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,若是,则按照操作指令对文件进行相应操作;否则,对应地址区间创建文件,按照操作指令对创建的文件进行相应操作;

第二执行单元,用于在确定操作模式为按物理地址方式操作时,则根据操作指令、按照操作地址信息指示的地址区间进行相应操作。

通过这种可能的实施方式,为不同的操作系统的嵌入式产品,提供了一种可以对Flash进行统一操作的装置,以模块的方式为应用层提供一套标准的适配操作接口,这使得Flash设备的兼容性更好。在系统软件设计时规划好后续进行Flash操作的文件存储路径后,技术人员不必关心该应用层软件应用在何种嵌入式平台,直接采用本发明实施例的Flash操作装置,根据不同的操作模式进行相应的处理,能够稳定可靠的对Flash进行相关操作,减少了越界存储的可能性,保证了系统的可靠性。使得在不同操作系统的产品可以相互继承,对于相同应用的产品可实现迅速切换,缩短了新产品的开发调试时间。

结合第二方面,在第一种可能的实现方式中,还包括:配置单元,用于接收应用层发起的闪存操作请求之前,获取预设的操作模式,判断操作模式是按文件方式操作还是按物理地址方式操作,并在确定操作模式为按文件方式操作时,创建对闪存进行后续操作时的文件存储路径,并获取闪存的内存技术设备信息,根据内存技术设备信息配置块信息,以及在确定操作模式为按物理地址方式操作时,获取闪存的公共闪存接口信息,根据公共闪存接口信息配置块信息;其中,块信息包括各个块的块号、首地址和块大小。

通过这种可能的实施方式,本发明实施例中的闪存操作装置针对UCOS系统和Linux系统采用不同的配置方式,使得进一步的可以分别根据两种系统的不同操作模式,对闪存采用不同的操作方式。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,第一执行单元具体用于:

根据操作地址信息中携带的起始物理地址和终止物理地址确定地址区间;

根据块信息确定被地址区间覆盖的各个块的块号,判断闪存中是否存在与覆盖的各个块的块号对应的文件。

通过这种可能的实施方式,可以将应用层指示的操作地址信息对应为Linux系统中文件,使得可以进一步根据操作指令对该文件进行相应操作。

结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,第一执行单元具体用于:

确定被地址区间覆盖的各个块的块号,对应各个块中的每一块创建一个文件,采用每一块的块号对创建的文件进行命名。

通过这种可能的实施方式,不存在地址区间对应的文件时,采用这种将块与文件对应的方式,创建文件,如此可以使得后续操作的时候,可以通过操作地址信息查找到对应的文件。

结合第二方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,第一执行单元具体用于:

按照操作指令对地址区间覆盖的各个块对应的文件中的数据进行读取、写入或擦除操作。

结合第二方面的第一种可能的实现方式,在第五种可能的实现方式中,第二执行单元具体用于:

在确定操作模式为按物理地址方式操作时,则按照操作指令对地址区间对应的各个块中的数据进行读取、写入或擦除操作。

附图说明

图1为本发明实施例的Flash软件结构框图;

图2为本发明实施例的Flash适配处理模块对Flash进行处理的流程图;

图3为本发明实施例的基于嵌入式系统的闪存操作方法流程图;

图4为本发明实施例的基于嵌入式系统的闪存操作装置图。

具体实施方式

为了给出在多种操作系统间统一的Flash操作方法,使得应用层软件可以通过统一的接口调用Flash,并采用相同的方式对Flash进行操作的实现方案,本发明实施例提供了一种基于嵌入式系统的闪存操作方法及装置,以下结合说明书附图对本发明的优选实施例进行说明。

本发明实施例中的基于嵌入式系统的闪存操作方法,将在Linux和UCOS操作系统与应用模块之间增加一个Flash适配处理模块,为上层应用模块提供一套标准的适配操作接口,统一进行操作和管理Flash。在Linux系统中,将应用层指示要操作的物理地址对应为Linux系统中的文件,按照文件方式对Flash进行相应操作;在UCOS系统中,将应用层指示要操作的物理地址发送给系统中Flash,直接按照物理地址对Flash进行相关操作。

以下结合附图对本发明的优选实施例进行说明。

参阅图1所示,嵌入式平台产品的软件是分层和分模块设计的,Flash软件的设计亦是如此。在硬件之上的驱动层根据操作系统的不同,对Flash的操作也是分别处理的,Linux操作系统相比于UCOS操作系统,引入了MTD,将Flash设备驱动从下到上分为了四层,依次为硬件驱动层(即Flash原始驱动190):负责Flash硬件设备的读取、写入和擦出操作;MTD原始设备层180:主要由两部分构成,一部分是MTD原始设备通用代码,另一部分是各个特定的Flash的数据,例如分区;MTD设备层:基于MTD原始设备,Linux操作系统可以定义出MTD字符设备160和MTD块设备170,构成设备层;设备节点:通过mknod在/dev子目录下建立字符设备节点140和块设备节点150,用户通过访问此设备节点即可访问MTD字符设备和块设备。而本发明实施例中的Flash适配处理模块110处于中间层,位于应用层100与不同嵌入式平台(即UCOS系统和Linux系统)之间,以模块的方式为上层应用提供了一套标准的适配操作接口。

参阅图2所示,Flash适配处理模块主要对应用层提供四类接口,但不仅限于这四类,后续可以根据应用层的需要继续开发标准的适配操作接口。这四类接口分别为用于检查Flash适配驱动模块的版本信息接口,用于获取Flash总大小、块大小、总块数等等块信息的Flash信息接口,用于初始化配置Flash操作模式的初始化接口,以及用于读取、写入和擦除Flash的操作接口。进行初始化配置的流程包括步骤2000至步骤2005,进行读取写入和擦除操作的流程包括步骤2010至步骤2015,以下对Flash适配处理模块对闪存进行读取、写入和擦除等操作的具体流程进行介绍。

参阅图3所示,本发明实施例中,Flash适配处理模块对闪存进行操作的具体流程如下:

步骤300:Flash适配处理模块接收应用层发起的闪存操作请求,闪存操作请求中携带有操作指令、操作地址信息以及操作模式。

具体的,接收应用层发起的闪存操作请求之前,需要进行系统配置,Flash适配处理模块会提供初始化接口,供应用层调用。当应用层调用了该初始化接口后,系统开始进行初始化操作,并获取预设的操作模式,判断该操作模式是按文件方式操作还是按物理地址方式操作;在具体实施中,Flash适配处理模块会对所有Flash物理地址对应的块进行操作模式的设置,具体将Linux系统中的Flash块设置为按文件方式操作,用数字“1”来表示;将UCOS系统中的Flash块设置为按物理地址方式操作,用数字“0”来表示。用户可以根据当前使用的操作系统,将预设的操作模式设置为与当前操作系统对应的操作模式,例如,若当前使用的是Linux系统,则用户预先将预设的操作模式设置为按文件方式操作;若当前使用的是UCOS系统,则用户预先将预设的操作模式设置为按物理地址方式操作;若需要同时使用两种操作系统,则按照任意顺序先对其中一种操作系统进行初始化,再对另一种操作系统进行初始化,如先对Linux系统进行初始化,将其操作模式设置为按文件方式操作,再对UCOS系统进行初始化,将其操作模式设置为按物理地址方式操作。

在确定上述操作模式为按文件方式操作时,由于在Linux系统中,引入了公共闪存接口(Common Flash Interface,CFI)的MTD,需要从MTD信息中获取Flash的块信息,因此在创建好后续进行写入擦除等操作的文件存储路径后,获取闪存的MTD信息,根据MTD信息配置块信息;在确定上述操作模式为按物理地址方式操作时,直接可以从CFI信息中获取闪存的块信息,直接可以根据CFI信息配置块信息;其中,块信息用于指示各个块的块号、起始地址和块大小,块是用于指示闪存中数据存储的最小单位;实际应用中,一个Flash由若干大小相同的块组成,其中块大小可以人为配置,也可以采用CFI信息或MTD信息中所指示的块大小,将每一块依次进行编号,并将每一块与其首地址进行对应。

系统初始化阶段完成后,Flash适配处理模块接收应用层发起的闪存操作请求,闪存操作请求中携带有操作指令、操作地址信息以及操作模式,其中,操作指令用于指示对Flash进行何种操作,如读取、写入或擦除等。

步骤310:判断操作模式是按文件方式操作还是按物理地址方式操作。

具体的,本发明实施例中,进行举例说明时,Linux系统采用按文件方式操作,UCOS系统采用按物理地址方式操作,但不仅仅限于这两种操作系统,其他按照文件方式操作或按照物理地址方式操作的操作系统,同样在本发明实施例包括的范围之内。Flash适配处理模块从闪存操作请求中获取将要进行读取、写入或擦除的Flash的操作模式,其中,该操作模式是在初始化时设置的,若操作模式为1,则按照文件方式操作,若操作模式为0,则按照物理地址方式操作。

步骤320:Flash适配处理模块在确定操作模式为按文件方式操作时,继续判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,若是,则按照操作指令对文件进行相应操作,否则,对应地址区间创建文件,按照操作指令对创建的文件进行相应操作。

具体的,在确定操作模式为按文件方式操作时,判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,即根据操作地址信息中携带的起始物理地址和终止物理地址确定地址区间;根据块信息确定被地址区间覆盖的各个块的块号,判断闪存中是否存在覆盖的各个块的块号对应的文件。例如,Flash的块大小为64k,写入Flash输入操作地址信息,其中,起始物理地址为0x10000,终止物理地址为0x30000,Flash适配处理模块根据初始化时的块信息中指示的块大小,查询从起始物理地址开始到终止物理地址结束的地址区间,所有被该地址区间覆盖的块的块号为第2块和第3块,因此,判断Flash中是否存在该块号对应的文件;通常可以用该块号命令这些文件,在这种情况下,对应的文件的文件名为“file_2”和“file_3”。

若存在与各个块的块号相对应的文件,则按照操作指令对文件做相应操作。例如,对上述文件名为“file_2”和“file_3”的文件进行写入操作。

若不存在与各个块的块号相对应的文件,则对应地址区间创建文件,具体步骤为:确定被地址区间覆盖的各个块的块号,对应各个块中的每一块创建一个文件,采用每一块的块号对创建的文件进行命名。例如,在Flash中不存在被地址区间覆盖的各个块的块号所对应的文件时,若确定覆盖的块的块号为第5块至第7块,则对应第5块至第7块创建文件名为“file_5” 、“file_6”和“file_7”的三个文件。

在创建文件完成后,对这些创建好的文件进行相应的读取、写入或擦除的操作。

上述步骤完成了在操作模式为按文件方式操作时,将应用层输入要操作Flash的物理地址后,将该物理地址对应为在Linux系统中的文件,再采用这些文件模拟物理地址的操作方式,直接对这些文件进行相应操作。如此便可以与UCOS系统采用相同的方式操作,都是从应用层输入要操作的Flash的物理地址,即可对该段物理地址进行相应操作,而在Linux系统中,要经过将应用层输入的要操作的Flash的物理地址对应为Linux系统中的文件,再对文件进行相应操作,也就是文件对应的那一段物理地址进行相应操作。

步骤330:Flash适配处理模块在确定操作模式为按物理地址方式操作时,则根据操作指令、按照操作地址信息指示的地址区间进行相应操作。

具体的,在确定操作模式为按物理地址方式操作时,则根据操作指令,按照起始物理地址和终止物理地址指示的地址区间,对Flash进行相应操作。例如, Flash的块大小为64k,读取Flash输入操作地址信息,其中,起始物理地址为0x40000,终止物理地址为0x50000,Flash适配处理模块,根据直接按照操作指令指示的读取Flash,对地址区间0x40000至0x50000,也就是第5块中的数据进行读取。

在介绍对地址区间的文件或者块进行相应操作之前,先介绍闪存的实际结构,一个闪存内部存在多个块,嵌入式平台处理的都是二进制数据,只有0和1组成,同样要在Flash中保存的数据也是二进制的,在对Flash的操作中,只能将1写为0,而不能将0写成1,所以在写入Flash之前,都要先进行擦除操作,即将Flash中的内容全部变为1,在进行写入操作,在进行写入操作时,即只将为0的位进行写入即可。擦除操作的最小单位为块,即每次至少都要擦除一个块。

在应用层调用读取、写入或擦除的操作接口时,Flash适配处理模块也是根据不同的操作模式来进行处理的。

在确定操作模式为按文件方式进行操作时,按照操作指令对文件进行相应操作,具体指:按照操作指令对地址区间覆盖的各个块对应的文件中的数据进行读取、写入或擦除操作。

具体的,若操作指令指示进行读取操作,则读取被地址区间覆盖的各个块对应的文件中存储的数据;例如,在块大小为64k时,应用层要读取linux系统中的地址区间0x00000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块对应的文件,即第1块和第2块对应的名为“file_1”和“file_2”的文件中存储数据进行读取。

若操作指令指示进行写入操作,则将待写入的数据写入被地址区间覆盖的各个块对应的文件中;例如,在块大小为64k时,应用层要写入linux系统中的地址区间0x00000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块对应的文件,即第1块和第2块对应的名为“file_1”和“file_2”的文件中存储数据进行写入。

若操作指令指示进行擦除操作,则将被地址区间覆盖的各个块对应的文件中的数据进行擦除;在块大小为64k时,应用层要读取linux系统中的地址区间0x00000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块对应的文件,即第1块和第2块对应的名为“file_1”和“file_2”的文件中存储数据全部写为1。

在确定操作模式为按物理地址方式操作时,则按照操作指令对地址区间对应的各个块中的数据进行读取、写入或擦除操作。

具体的,若操作指令指示进行读取操作,则读取地址区间对应的各个块中存储的数据;例如,在块大小为64k时,应用层要读取UCOS系统中的地址区间0x10000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块,即第2块中存储数据进行读取。

若操作指令指示进行写入操作,则将待写入的数据写入地址区间对应的各个块中;例如,在块大小为64k时,应用层要读取UCOS系统中的地址区间0x10000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块,即第2块中存储数据进行擦除,然后进行写入操作。

若操作指令指示进行擦除操作,则擦除地址区间对应的各个块中存储的数据;例如,在块大小为64k时,应用层要读取UCOS系统中的地址区间0x10000至0x20000的数据,则通过Flash适配处理模块,采用统一的操作接口,对该地址区间覆盖的各个块,即第2块中存储数据全部写为1。

这样就实现了使用统一的接口对各个操作系统的Flash进行操作。

下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。

基于同一发明构思,根据本发明上述实施例提供的基于嵌入式系统的闪存操作方法,相应地,本发明另一实施例还提供了一种基于嵌入式系统的闪存操作装置,装置结构示意图如图4所示,具体包括:

接收单元400,用于接收应用层发起的闪存操作请求,闪存操作请求中携带有操作指令、操作地址信息以及操作模式;

判断单元410,用于判断操作模式是按文件方式操作还是按物理地址方式操作;

第一执行单元420,用于在确定操作模式为按文件方式操作时,继续判断在闪存中是否存在与操作地址信息指示的地址区间相对应的文件,若是,则按照操作指令对文件进行相应操作;否则,对应地址区间创建文件,按照操作指令对创建的文件进行相应操作;

第二执行单元430,用于在确定操作模式为按物理地址方式操作时,则根据操作指令、按照操作地址信息指示的地址区间进行相应操作。

配置单元440,用于接收应用层发起的闪存操作请求之前,获取预设的操作模式,判断操作模式是按文件方式操作还是按物理地址方式操作,并在确定操作模式为按文件方式操作时,创建对闪存进行后续操作时的文件存储路径,并获取闪存的内存技术设备信息,根据内存技术设备信息配置块信息,以及在确定操作模式为按物理地址方式操作时,获取闪存的公共闪存接口信息,根据公共闪存接口信息配置块信息;其中,块信息包括各个块的块号、首地址和块大小。

第一执行单元420具体用于:根据操作地址信息中携带的起始物理地址和终止物理地址确定地址区间;

根据块信息确定被地址区间覆盖的各个块的块号,判断闪存中是否存在与覆盖的各个块的块号对应的文件。

第一执行单元420具体用于:确定被地址区间覆盖的各个块的块号,对应各个块中的每一块创建一个文件,采用每一块的块号对创建的文件进行命名。

第一执行单元420具体用于:按照操作指令对地址区间覆盖的各个块对应的文件中的数据进行读取、写入或擦除操作。

第二执行单元430具体用于:

在确定操作模式为按物理地址方式操作时,则按照操作指令对地址区间对应的各个块中的数据进行读取、写入或擦除操作。

综上所述,本发明实施例提供的方案,为不同的操作系统的嵌入式产品,提供了一种统一的Flash操作方法,并且以模块的方式为应用层提供一套标准的适配操作接口,这使得Flash设备的兼容性更好,在系统软件设计时规划好后续进行Flash操作的文件存储路径后,技术人员不必关心该应用层软件应用在何种嵌入式平台,直接采用本发明实施例的Flash操作方法,能够稳定可靠的对Flash进行相关操作,减少了越界存储的可能性,保证了系统的可靠性。

本发明实施例提供的Flash操作处理技术,是为不同操作系统的嵌入式产品提供了统一进行操作和管理Flash的方法,使得在不同操作系统的产品可以相互继承,对于相同应用的产品可实现迅速切换,缩短了新产品的开发调试时间。并且提供清晰的分层设计,增加了系统软件的稳定性,提升产品的整体性能。

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

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