基于DMA映射的Flash数据传输控制方法及装置的制作方法

文档序号:6338333阅读:700来源:国知局
专利名称:基于DMA映射的Flash数据传输控制方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于DMA (Direct Memory Access,直接存储器访问)映射的Flash数据传输控制方法及装置。
背景技术
在对Flash的实际应用中,大量频繁的小文件读写、page数据部分更新、sector管理算法以及Flash Page的坏块导致ECC(Error Correcting Code,错误检查和纠正)校验错误等导致很多的I^age不对齐操作,需要以kctor为操作单位对一个page的数据进行填充补齐,即需要在一个I^ge里实现非正常顺序的sector读写操作,或者是对某些sector 进行屏蔽处理。而数据来源则可能是多处,现有的解决方法主要依赖FW(firmware,固件) 进行多次设置,其流程比较繁琐,操作过程较为复杂,而且读写操作过程会被打断几次,使得系统操作效率较低。发明内容
本发明的主要目的在于提供一种基于DMA映射的Flash数据传输控制方法及装置,旨在简化FW控制流程。
为了达到上述目的,本发明提出一种基于直接存储器访问DMA映射的闪存Flash 数据传输控制方法,包括
根据预设规则设置DMA RAM与Flash Page之间的扇区sector序号映射关系;
根据所述sector序号映射关系以及内置的寄存器进行Flash数据传输。
优选地,所述寄存器为Bitmap寄存器,每个寄存器标识Flash Page中的一个 sector ;所述寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。
优选地,所述根据sector序号映射关系以及内置的寄存器进行Flash数据传输的步骤包括根据所述sector序号映射关系将Flash数据从Flash I^age读出并存入DMA RAM 或者根据所述sector序号映射关系将Flash数据从DMA RAM写入Flash Page。
优选地,所述根据映射关系将Flash数据从Flash Page读出并存入DMA RAM的步骤包括
设置Flash数据读出的起始地址;
从所述读出的起始地址读出预定长度的Flash数据;
根据读出Flash数据的sector序号对应的寄存器的值,以及所述读出Flash数据的sector序号与DMA RAM中对应sector序号的映射关系,将相应的Flash数据存入DMA RAM中对应的sector。
优选地,所述根据sector序号映射关系将Flash数据从DMA RAM写入Flash Page 的步骤包括
设置Flash数据写入的起始地址;
根据DMA RAM与Flash I^age之间预设的sector序号映射关系,从所述写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
优选地,所述寄存器还用于对其所标识的sector序号对应的数据进行取反运算。
本发明还提出一种基于DMA映射的Flash数据传输控制装置,包括
映射关系设置模块,用于根据预设规则设置DMA RAM与Flash I^age之间的sector 序号映射关系;
数据传输模块,用于根据所述sector序号映射关系以及内置的寄存器进行Flash 数据传输。
优选地,所述寄存器为Bitmap寄存器,每个寄存器标识Flash Page中的一个 sector ;所述寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。
优选地,所述数据传输模块包括
起始地址设置单元,用于设置Flash数据读出的起始地址;
数据读取单元,用于从所述读出的起始地址读出预定长度的Flash数据;
数据存储单元,用于根据读出Flash数据的sector序号对应的寄存器的值,以及所述读出Flash数据的sector序号与DMA RAM中对应sector序号的映射关系,将相应的 Flash数据存储入DMA RAM中对应的sector。
优选地,所述起始地址设置单元,还用于设置Flash数据写入的起始地址;
所述数据存储单元,还用于根据DMA RAM与Flash I^age之间预设的sector序号映射关系,从所述写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
本发明提出的一种基于DMA映射的Flash数据传输控制方法及装置,通过设置 Flash I^age与DMA RAM之间的映射关系,通过映射关系进行数据传输,同时增加了标识 Flash Page中sector的寄存器,让硬件更深层次的参与到整个流程,从而解放了 FW的设置,简化了因为小文件读写、按sector管理算法、Flash I^age的坏块导致ECC校验错误等等情况导致的需要在一个I^age里实现非正常顺序的sector读写操作,或者是对某些sector 进行屏蔽处理的FW控制流程,不必再像传统做法那样会被打断几次,提高了操作效率,使得以kctor为基本操作单位的数据读写更具有灵活性;同时还可以根据设定的映射关系实现数据加密,保护数据安全。


图1是本发明基于DMA映射的Flash数据传输控制方法一实施例流程示意图2是本发明基于DMA映射的Flash数据传输控制方法一实施例中根据映射关系将Flash数据从Flash Page读出并存入DMA RAM的流程示意图3是本发明基于DMA映射的Flash数据传输控制方法一实施例中根据sector 序号映射关系将Flash数据从DMA RAM写入Flash I^age的流程示意图4是本发明基于DMA映射的Flash数据传输控制装置一实施例结构示意图5是本发明基于DMA映射的Flash数据传输控制装置一实施例中数据传输模块的结构示意图。
为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
本发明实施例解决方案主要是通过设置Flash I^age与DMA RAM之间的映射关系, 通过映射关系进行数据传输,同时增加了标识Flash Page中sector的寄存器,以简化FW 控制流程,提高了操作效率。
在Flash的实际使用中,大量的小文件读写、page数据部分更新、按kctor管理算法等会导致很多的I^ge不对齐操作,需要以kctor为操作单位对一个page的数据进行填充补齐,而数据来源则可能是多处,传统的做法是由FW进行大量繁复的设置,流程复杂, 控制复杂。
本发明采用新的硬件设计,让硬件更深层次的参与到整个流程,从而解放了 FW的设置,简化了流程控制的复杂度。
如图1所示,本发明一实施例提出一种基于DMA映射的Flash数据传输控制方法, 包括
步骤SlOl,根据预设规则设置DMA RAM与Flash Page之间的sector序号映射关系;
在本实施例中,通过FW设定DMA RAM与Flash Page之间的映射关系(以kctor 为最小操作单位),该映射关系FW可控,硬件按照此映射关系进行数据传输,实现sector数据非正常顺序读写,比如倒序、先奇后偶等,而不必再像传统做法那样会被打断几次,从而提高了操作效率。
其中设置映射关系的预设规则可以是动态的,比如由硬件根据算法自动产生;也可以是由FW直接指定某一具体的映射关系。
映射关系的具体设置方法可以为
将DMA RAM按sector进行分区并编号,和Flash的一个page里的各个sector 建立一种——对应的关系,比如常规的DMA RAM的sectorl-2-3-4对应Flash page的 sectorl-2-3-4,也可以是其它的对应关系,如DMA RAM的sector3-2-4_l对应Flash page 的sectorl-2-3-4。硬件会根据这一映射关系自动计算每个sector需要存入DMA RAM的地址。
步骤S102,根据sector序号映射关系以及内置的寄存器进行Flash数据传输。
本实施例在硬件中增设一组Bitmap寄存器,每个寄存器标识Flash Page中的一个sector ;寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。比如,可以对其设定“0”或“1”用于控制对应的sector数据的DMA传输。该寄存器值的设定可以是 FW自由设置或是读取扫描坏块表设定,可以设定“1”表示对应的%(^01·数据被屏蔽,“0” 则表示对应的kctor数据正常操作。在读Flash操作时,被屏蔽的kctor数据将不会被存入 DMA RAM0
在本实施例中,根据sector序号映射关系以及内置的寄存器进行Flash数据传输包括根据sector序号映射关系将Flash数据从Flash Page读出并存入DMA RAM或者根据sector序号映射关系将Flash数据从DMA RAM写入Flash Page。
如图2所示,步骤S102中根据映射关系将Flash数据从Flash Page读出并存入 DMA RAM的步骤包括
步骤S1021,设置Flash数据读出的起始地址;
步骤S1022,从读出的起始地址读出预定长度的Flash数据;
步骤S1023,根据读出Flash数据的sector序号对应的寄存器的值,以及读出 Flash数据的sector序号与DMA RAM中对应sector序号的映射关系,将相应的Flash数据存入DMA RAM中对应的sector。
在实际应用中,比如,某次操作需要获取pagell的Sector2和%Ctor4的数据, 传统做法是,发一次读命令及设置sector2的起始地址,读出sectorf的数据存入DMA RAM sector 1,然后再发一次读命令及设置sector4的地址,读出sector4的数据并存入DMA RAM sectorf,这样FW需要参与两次,若采用本实施例方法,则只需设定映射关系为DMA RAM的 sector3-l-4-2 对应 Flash page 的 sectorl-2-3-4,然后发送一次读命令及 sectorO 的地址就可以实现上述操作,FW只需要设置一次即可,不必再像传统做法那样会被打断几次,由此提高了操作效率。
如图3所示,步骤S102中根据sector序号映射关系将Flash数据从DMARAM写入 Flash Page的步骤包括
步骤S1024,设置Flash数据写入的起始地址;
步骤S1025,根据DMA RAM与Flash Page之间预设的sector序号映射关系,从写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
在本实施例中,通过对映射关系的控制,还可以实现数据加密。其中,加密原理为
在对Flash进行写操作时,以每个page为例,在DMA RAM和Flash Page之间以sector为单位建立一个映射关系,使得数据写入Flash后不是以sector为单位按顺序排列,而是依照设定好的映射关系被打散了,比如,DMA RAM是按照 sectorl-sector2-sector3-sector4顺序存放,而实际写入Flash之后则可能成为 sector2-sector4-sector3-sectorl。在对Flash进行读操作时,对于同一个page,映射关系必须和写这个page时所设定的映射关系一样,这样才能保证从Flash读出的数据存放到 DMA RAM里后的顺序和之前写入Flash时在DMA RAM里的存放顺序一致。通过上述映射关系的设置,从而实现了对数据的加密处理。
需要说明的是,本实施例中Bitmap寄存器的功能可不限于屏蔽数据,寄存器还可用于对其所标识的sector数据进行其他处理,比如取反运算等等。
本实施例是以Flash的最小存储单位sector的地址进行映射关系的设置,作为映射关系设置方法的扩展,映射关系也可以扩展到在一个block里按page进行映射管理,即在按Block管理时,可以在page之间实现上述类似操作,需要一张更大的映射表,其操作的基本单位为page,按照设定的映射关系,硬件可以代替FW自动计算下一个I^age的地址,从而提高操作效率。由于DMA RAM的大小一般就等于一个page,故这种模式下DMA RAM不参与映射。
本实施例相比现有技术具有以下优点
l.DMA RAM到Flash I^age的映射控制方式,可自行设定映射关系,在数据读写方面具有很大的灵活性,如sector屏蔽、sector数据特殊处理、Page补齐操作等。
2.通过这种映射控制可在一定程度上实现数据加密。
3.可以在FW的参与下延伸到在一个Block里对不同I^age进行映射控制。
本实施例简化因为小文件读写、按sector管理算法、FLASH Page的坏块导致ECC校验错误等等情况导致的需要在一个I^ge里实现非正常顺序的sector读写操作,或者是对某些sector进行屏蔽处理的FW控制流程,硬件参与度更高,执行效率高,使得以kctor 为基本操作单位的数据读写更具有灵活性,而且还可以通过设置映射关系实现数据加密。
如图4所示,本发明一实施例提出一种基于DMA映射的Flash数据传输控制装置, 包括映射关系设置模块401以及数据传输模块402,其中
映射关系设置模块401,用于根据预设规则设置DMA RAM与Flash I^age之间的 sector序号映射关系;
在本实施例中,通过映射关系设置模块401设定DMA RAM与Flash I^age之间的映射关系(以kctor为最小操作单位),该映射关系FW可控,硬件按照此映射关系进行数据传输,实现sector数据非正常顺序读写,比如倒序、先奇后偶等,而不必再像传统做法那样会被打断几次,从而提高了操作效率。
其中设置映射关系的预设规则可以是动态的,比如由硬件根据算法自动产生;也可以是由FW直接指定某一具体的映射关系。
映射关系的具体设置方法可以为
将DMA RAM按sector进行分区并编号,和Flash的一个page里的各个sector 建立一种——对应的关系,比如常规的DMA RAM的sectorl-2-3-4对应Flash page的 sectorl-2-3-4,也可以是其它的对应关系,如DMA RAM的sector3-2-4_l对应Flash page 的sectorl-2-3-4。硬件会根据这一映射关系自动计算每个sector需要存入DMA RAM的地址。
数据传输模块402,用于根据sector序号映射关系以及内置的寄存器进行Flash 数据传输。
本实施例在硬件中增设一组Bitmap寄存器,每个寄存器标识Flash Page中的一个sector ;寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。比如,可以对其设定“0”或“1”用于控制对应的sector数据的DMA传输。该寄存器值的设定可以是 FW自由设置或是读取扫描坏块表设定,可以设定“1”表示对应的%(^01·数据被屏蔽,“0” 则表示对应的kctor数据正常操作。在读Flash操作时,被屏蔽的kctor数据将不会被存入 DMA RAM0
在本实施例中,通过数据传输模块402根据sector序号映射关系以及内置的寄存器进行Flash数据传输,具体包括根据sector序号映射关系将Flash数据从Flash Page 读出并存入DMA RAM或者根据sector序号映射关系将Flash数据从DMA RAM写入Flash Page。
如图5所示,数据传输模块402包括起始地址设置单元4021、数据读取单元4022 以及数据存储单元4023,其中
起始地址设置单元4021,用于设置Flash数据读出的起始地址;
数据读取单元4022,用于从读出的起始地址读出预定长度的Flash数据;
数据存储单元4023,用于根据读出Flash数据的sector序号对应的寄存器的值, 以及读出Flash数据的sector序号与DMA RAM中对应sector序号的映射关系,将相应的 Flash数据存储入DMA RAM中对应的sector。
进一步的,起始地址设置单元4021,还用于设置Flash数据写入的起始地址;
数据存储单元4023,还用于根据DMA RAM与Flash Page之间预设的sector序号映射关系,从写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
本发明提出的一种基于DMA映射的Flash数据传输控制方法及装置,通过设置 Flash I^age与DMA RAM之间的映射关系,通过映射关系进行数据传输,同时增加了标识 Flash Page中sector的寄存器,让硬件更深层次的参与到整个流程,从而解放了 FW的设置,简化了因为小文件读写、按sector管理算法、Flash I^age的坏块导致ECC校验错误等等情况导致的需要在一个I^age里实现非正常顺序的sector读写操作,或者是对某些sector 进行屏蔽处理的FW控制流程,不必再像传统做法那样会被打断几次,提高了操作效率,使得以kctor为基本操作单位的数据读写更具有灵活性;同时还可以根据设定的映射关系实现数据加密,保护数据安全。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种基于直接存储器访问DMA映射的闪存Flash数据传输控制方法,其特征在于,包括根据预设规则设置DMA RAM与Flash Page之间的扇区sector序号映射关系;根据所述sector序号映射关系以及内置的寄存器进行Flash数据传输。
2.根据权利要求1所述的方法,其特征在于,所述寄存器为Bitmap寄存器,每个寄存器标识Flash Page中的一个sector ;所述寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。
3.根据权利要求1所述的方法,其特征在于,所述根据sector序号映射关系以及内置的寄存器进行Flash数据传输的步骤包括根据所述sector序号映射关系将Flash数据从 Flash I^age读出并存入DMA RAM或者根据所述sector序号映射关系将Flash数据从DMA RAM 写入 Flash Page0
4.根据权利要求3所述的方法,其特征在于,所述根据映射关系将Flash数据从Flash Page读出并存入DMA RAM的步骤包括设置Flash数据读出的起始地址;从所述读出的起始地址读出预定长度的Flash数据;根据读出Flash数据的sector序号对应的寄存器的值,以及所述读出Flash数据的 sector序号与DMA RAM中对应sector序号的映射关系,将相应的Flash数据存入DMA RAM 中对应的 sector。
5.根据权利要求3所述的方法,其特征在于,所述根据sector序号映射关系将Flash 数据从DMA RAM写入Flash Page的步骤包括设置Flash数据写入的起始地址;根据DMA RAM与Flash Page之间预设的sector序号映射关系,从所述写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述寄存器还用于对其所标识的sector序号对应的数据进行取反运算。
7.一种基于DMA映射的Flash数据传输控制装置,其特征在于,包括映射关系设置模块,用于根据预设规则设置DMA RAM与Flash Page之间的sector序号映射关系;数据传输模块,用于根据所述sector序号映射关系以及内置的寄存器进行Flash数据传输。
8.根据权利要求7所述的装置,其特征在于,所述寄存器为Bitmap寄存器,每个寄存器标识Flash Page中的一个sector ;所述寄存器的值标识sector序号对应的数据处于被屏蔽或不被屏蔽状态。
9.根据权利要求7或8所述的装置,其特征在于,所述数据传输模块包括起始地址设置单元,用于设置Flash数据读出的起始地址;数据读取单元,用于从所述读出的起始地址读出预定长度的Flash数据;数据存储单元,用于根据读出Flash数据的sector序号对应的寄存器的值,以及所述读出Flash数据的sector序号与DMA RAM中对应sector序号的映射关系,将相应的Flash 数据存储入DMA RAM中对应的sector。
10.根据权利要求9所述的装置,其特征在于, 所述起始地址设置单元,还用于设置Flash数据写入的起始地址; 所述数据存储单元,还用于根据DMA RAM与Flash I^age之间预设的sector序号映射关系,从所述写入的起始地址写入DMA RAM中预定长度的Flash数据至Flash Page。
全文摘要
本发明涉及一种基于DMA映射的Flash数据传输控制方法及装置,其中方法包括根据预设规则设置DMA RAM与Flash Page之间的sector序号映射关系;根据sector序号映射关系以及内置的寄存器进行Flash数据传输。本发明通过设置Flash Page与DMA RAM之间的映射关系,通过映射关系进行数据传输,简化了因为小文件读写、按sector管理算法、Flash Page的坏块导致ECC校验错误等等情况导致的需要在一个Page里实现非正常顺序的sector读写操作,或者是对某些sector进行屏蔽处理的FW控制流程,不必再像传统做法那样会被打断几次,提高了操作效率,使得以Sector为基本操作单位的数据读写更具有灵活性;同时还可以根据设定的映射关系实现数据加密,保护数据安全。
文档编号G06F13/28GK102541777SQ20101058511
公开日2012年7月4日 申请日期2010年12月13日 优先权日2010年12月13日
发明者许智鑫 申请人:深圳市硅格半导体有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1