发明内容
本发明的主要目的为提供一种存储设备软件层的识别和驱动方法,提升了产品的兼容性以及识别的效率。
本发明提出一种存储设备软件层的识别和驱动方法,包括步骤:
针对不同类型闪存读取数据量的不同,分别以相应的写入方式进行数据写入;
读取操作时,以相同的读取方式进行数据读取。
优选地,所述闪存的类型包括:
Normal类型以及Toggle DDR类型。
优选地,所述相应的写入方式分别为:
普通写入以及叠加写入。
优选地,所述读取方式为普通读取。
本发明还提出一种存储设备软件层的识别和驱动装置,包括:
数据写入单元,用于针对不同类型闪存读取数据量的不同,分别以相应的写入方式进行数据写入;
数据读取单元,用于读取操作时,以相同的读取方式进行数据读取。
优选地,所述闪存的类型包括:
Normal类型以及Toggle DDR类型。
优选地,所述相应的写入方式分别为:
普通写入以及叠加写入。
优选地,所述读取方式为普通读取。
本发明对于普通Flash,普通写入和普通读出,对于Toggle DDR,叠加写入普通读出;如此,可使得存储设备可不使用检测外部GPIO的办法识别Flash类型,并且可兼容识别Toggle DDR和Normal类型的Nand Flash,支持其Boot操作。
附图说明
图1是本发明存储设备软件层的识别和驱动方法一实施例中步骤流程示意图;
图2是现有技术中Normal类型Nand Flash数据存取过程示意图;
图3是现有技术中Toggle DDR类型Nand Flash数据存取过程示意图;
图4是本发明存储设备软件层的识别和驱动方法一实施例量产过程中Normal类型和Toggle DDR类型Nand Flash数据写入过程示意图;
图5是本发明存储设备软件层的识别和驱动方法一实施例代码加载中Normal类型和Toggle DDR类型Nand Flash数据读取过程示意图;
图6是本发明存储设备软件层的识别和驱动装置一实施例中结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,提出本发明一种存储设备软件层的识别和驱动方法的一实施例。该方法可包括:
步骤S10、针对不同类型闪存读取数据量的不同,分别以相应的写入方式进行数据写入;
步骤S11、读取操作时,以相同的读取方式进行数据读取。
本实施例的存储设备软件层的识别和驱动方法,根据Normal类型和ToggleDDR类型的Nand Flash读写操作过程中,数据操作个数在单个脉冲周期内存在双倍差异,因而在量产时,有针对两种不同类型的Nand Flash分别采用普通方式和叠加方式(奇偶跳列)量产。而在数据读取过程中,都以普通方式读出(单脉冲单数据),实现在软件层兼容两种类型的Flash启动。从而可保证两种类型Flash写入和读出数据的一致性,以及和原始数据的一致性。
可执行程序在NandFlash中以二进制数据形式存储,以下以简单数据0xAA、0xBB、0xCC以及0xDD来说明整个存取过程。
参照图2,Normal类型NandFlash数据存取特性,每个周期只有一个数据被读或写,步骤①是数据的写入过程,步骤②是数据读取过程。
参照图3,Toggle DDR类型Nand Flash数据存取特性,每个周期中会有两个数据被读或写,步骤③是其数据写入过程,步骤④是其数据读取过程。
由此,在本实施例的量产过程中,参照图4,首先利用量产工具通过读取Flash ID以及查找Flash类型表识别出Flash类型,比如Normal类型或者ToggleDDR或类型等,并根据Flash类型执行不同的量产流程(⑤和⑥):
对于Normal类型:执行流程⑤,其量产过程是将数据写入Nand Flash;对于Toggle DDR类型:执行流程⑥,在写入Flash时,通过硬件将数据做叠加处理,产生重叠数据,然后以Toggle DDR(叠加)方式写入Nand Flash。
参照图5,在代码(数据)加载时,上述Normal类型和Toggle DDR类型的Flash都按照Normal类型Flash的操作方式执行数据读取。
对于Normal类型Flash,其加载过程简单,如流程⑦;对于Toggle DDR类型的Flash,其加载过程如流程⑧,由于采用的是Normal方式读取数据(每个周期只采样一个数据),有一半数据会被丢掉(即重复的数据被丢掉其中一个),如此读取之后,将得到和原始写入一致的数据,实现代码的成功加载。
本实施例的存储设备软件层的识别和驱动方法,针对不同类型的闪存(比如Normal类型和Toggle DDR类型)在一个周期内读取一个数据还是两个数据的不同;在量产写入时,对于一个周期读出是两个数据的Flash,则写入叠加数据,再在读取时用普通方式读出两个数据,但是实际读取操作时严格遵守一个周期取一个数据,对于一个周期有两个数据的Flash,此时会丢掉一个数据,因此由于写入方式的不同,通过上述方式读取的数据即可还原成了原写入的数据。针对Toggle DDR类型的Flash在量产过程中,以代码叠加的方式量产写入Nand Flash;代码叠加过程,采用往前一致的原则,即偶数位置的数据与其前面的数据一致(第一个数据位置为1),可以增强一致性;因此,对于普通Flash,普通写入和普通读出,对于Toggle DDR,叠加写入普通读出;如此,可使得存储设备可不使用检测外部GPIO的办法识别Flash类型,并且可兼容识别Toggle DDR和Normal类型的Nand Flash,支持其Boot操作。
参照图6,提出本发明一种存储设备软件层的识别和驱动装置20的一实施例。该装置20可包括:数据写入单元21以及数据读取单元22;该数据写入单元21,用于针对不同类型闪存读取数据量的不同,分别以相应的写入方式进行数据写入;该数据读取单元22,用于读取操作时,以相同的读取方式进行数据读取。
本实施例的存储设备软件层的识别和驱动装置20,根据Normal类型和Toggle DDR类型的Nand Flash读写操作过程中,数据操作个数在单个脉冲周期内存在双倍差异,因而在量产时,上述数据写入单元21针对两种不同类型的Nand Flash分别采用普通方式和叠加方式(奇偶跳列)量产。而在数据读取过程中,上述数据读取单元22都以普通方式读出(单脉冲单数据),实现在软件层兼容两种类型的Flash启动。从而可保证两种类型Flash写入和读出数据的一致性,以及和原始数据的一致性。
可执行程序在Nand Flash中以二进制数据形式存储,以下以简单数据0xAA、0xBB、0xCC以及0xDD来说明整个存取过程。
参照图2,Normal类型Nand Flash数据存取特性,每个周期只有一个数据被读或写,步骤①是数据的写入过程,步骤②是数据读取过程。
参照图3,Toggle DDR类型Nand Flash数据存取特性,每个周期中会有两个数据被读或写,步骤③是其数据写入过程,步骤④是其数据读取过程。
由此,在本实施例的量产过程中,参照图4,首先利用量产工具通过读取Flash ID以及查找Flash类型表识别出Flash类型,比如Normal类型或者ToggleDDR或类型等,并根据Flash类型执行不同的量产流程(⑤和⑥):
对于Normal类型:执行流程⑤,其量产过程是将数据写入Nand Flash;对于Toggle DDR类型:执行流程⑥,在写入Flash时,通过硬件将数据做叠加处理,产生重叠数据,然后以Toggle DDR(叠加)方式写入Nand Flash。
参照图5,在代码(数据)加载时,上述Normal类型和Toggle DDR类型的Flash都按照Normal类型Flash的操作方式执行数据读取。
对于Normal类型Flash,其加载过程简单,如流程⑦;对于Toggle DDR类型的Flash,其加载过程如流程⑧,由于采用的是Normal方式读取数据(每个周期只采样一个数据),有一半数据会被丢掉(即重复的数据被丢掉其中一个),如此读取之后,将得到和原始写入一致的数据,实现代码的成功加载。
本实施例的存储设备软件层的识别和驱动装置20,针对不同类型的闪存(比如Normal类型和Toggle DDR类型)在一个周期内读取一个数据还是两个数据的不同;在量产写入时,对于一个周期读出是两个数据的Flash,则写入叠加数据,再在读取时用普通方式读出两个数据,但是实际读取操作时严格遵守一个周期取一个数据,对于一个周期有两个数据的Flash,此时会丢掉一个数据,因此由于写入方式的不同,通过上述方式读取的数据即可还原成了原写入的数据。针对Toggle DDR类型的Flash在量产过程中,以代码叠加的方式量产写入Nand Flash;代码叠加过程,采用往前一致的原则,即偶数位置的数据与其前面的数据一致(第一个数据位置为1),可以增强一致性;因此,对于普通Flash,普通写入和普通读出,对于Toggle DDR,叠加写入普通读出;如此,可使得存储设备可不使用检测外部GPIO的办法识别Flash类型,并且可兼容识别Toggle DDR和Normal类型的Nand Flash,支持其Boot操作。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。