一种flash的通用驱动方法

文档序号:6610694阅读:284来源:国知局
专利名称:一种flash的通用驱动方法
技术领域
本发明涉及嵌入式系统的FLASH驱动,尤其涉及的是, 一种FLASH 的通用驱动方法。
背景技术
嵌入式系统的一大特点就是设备相关性,设备的变化常导致驱动软件 要做相应修改;FLASH是嵌入式系统在掉电时保存信息的最常用设备。
现在的FLASH驱动的编写, 一般分为三个步骤FLASH器件选定供 应商和器件型号,再根据所选FLASH器件定义好驱动软件的参数,例如各 块(block)大小、读写时延长短等等,然后编写代码流程来实现针对该型 号FLASH的驱动软件。
而FLASH的型号和生产厂家众多,这样编写出的驱动软件所针对的 FLASH具有单一性,当FLASH的供应商或者FLAH大小发生变化时,由 于硬件上做了相应的修改,软件上也要修改驱动,给工业化的开发,采购, 生产带来很大的不便;并且软件的通用性很差,也容易产生由于临时性修 改而导致的驱动软件错误。
因此,现有技术存在缺陷,需要改进。

发明内容
本发明所要解决的技术问题是驱动软件所针对的FLASH具有单 一性, 硬件修改时必须对软件进行修改,软件的通用性很差,容易产生由于临时 性修改而导致的驱动软件错误。
本发明的技术方案如下
一种FLASH的通用驱动方法,其包括以下步骤Al、获取至少一个供 应商的各种型号FLASH的参数信息;A2、把参数信息相同的各种型号 FLASH分为一类,为每类建立一个参数表,存储本类FLASH的参数信息; A3、采用FLASH的厂商号和设备号,建立各种型号FLASH与其所在参数 表的对应关系表;A4、使用FLASH时,获取当前FLASH的所述厂商号和 所述设备号;A5、根据所述厂商号和所述设备号,以及所述对应关系表得 到所述当前FLASH对应的所述参数表,并将其置为当前参数表;A6、根据 所述当前参数表中的参数信息,对所述当前FLASH进行操作。
所述的通用驱动方法,其中,所述参数信息包括容量、块大小、块 分布、读写时延长短和各块的相对起始地址。
所述的通用驱动方法,其中,步骤A3具体包括以下步骤分别将各种 型号FLASH的所述厂商号和所述设备号合并为一区别标识,建立各种型号 FLASH的区别标识与各FLASH所在参数表的对应关系表。
所述的通用驱动方法,其中,步骤A5具体包括以下步骤根据所述厂 商号和所述设备号得到所述区别标识,查询所述对应关系表中的所述区别 标识,得到所述当前FLASH对应的所述参数表,并将其置为当前参数表。
所述的通用驱动方法,其中,步骤A3具体包括以下步骤采用FLASH 的厂商号和设备号,建立各种型号FLASH的设备表;并建立对应关系表, 用于存储所述设备表中的各设备与各参数表的对应关系。
所述的通用驱动方法,其中,步骤A5具体包括以下步骤根据所述厂 商号和所述设备号,得到所述设备表中对应的设备,查询所述对应关系表 得到所述当前FLASH对应的所述参数表,并将其置为当前参数表。
所述的通用驱动方法,其中,步骤A4中,通过发送指令,获取正在使 用的FLASH的所述厂商号和所述设备号。
所述的通用驱动方法,其中,步骤A6具体包括以下步骤根据所述当
前参数表中的参数信息,设置当前设备的各参数变量,对所述当前FLASH 进行操作。
所述的通用驱动方法,其中,步骤A6中,对所述当前FLASH进行操 作,是采用通用流程进行。
所述的通用驱动方法,其中,步骤A6中,所述操作包括读操作、写操 作或擦除操作。
采用上述方案,本发明在FLASH器件变化时,驱动程序不需要进行修 改,实现了自动适应各种FLASH型号的驱动,提高了软件的设备无关性; 当FLASH的供应厂家或者FLASH容量发生变化,或者其它FLASH参数 发生变化时,避免了重新改写FLASH驱动程序;从而具有较好的软件通用 性;并且拓展性强,可适应相关技术的发展。


图1为本发明方法的流程图2为本发明方法的一种实施方式的流程图。
具体实施例方式
以下结合附图和具体实施例,对本发明进行详细说明。 在嵌入式系统中,常用到的FLASH大小从lMBytes到32MBytes不等, 主要区别在于FLASH大小不同,同 一容量FLASH也会由于各生产厂家不 同,而导致FLASH中各Block的大小不同,读写时延参数不同等。
在实际工业生产中,考虑到可能的FLASH供应商一般不超过10家, 而容量大小种类一般只用上几种,例如1M、 2M、 4M、 8M、 16M、 32M等 等,考虑到其它参数,可以把各参数信息都相同的FLASH合并为一类,建 立一个信息表;那么各不同FLASH可以合并为N类,建立N个信息表,N 一般为几十量级,即N—般小于100。有了这些信息表,就可以来实现FLASH的通用驱动了。因此,如图l所示,本发明提供了一种FLASH的通用驱动 方法,其包括以下步骤。
Al、获取至少一个供应商的各种型号FLASH的参数信息;更好的是, 获取多家供应商的各种型号FLASH的参数信息;例如,获取市场份额较大 的5至15家供应商的全部各种型号FLASH的参数信息;如果可能的话, 还可以获取所有已知的、以及可预知的各供应商的各种型号FLASH的参数 信息。其中,所述参数信息包括容量、块(block)大小、块分布、读写 时延长短和各块的相对起始地址。必要时,可以根据实际情况,所述参数 信息还包括其他参数。
A2、把参数信息相同的各种型号FLASH分为一类,为每类建立一个参 数表,存储本类FLASH的参数信息。即,把具备相同参数信息的各FLASH 合并为一类,每类建立一个具体的参数表。
例如,某一类FLASH的参数表示意如下。
Flash—info—t FLASH1MTOP—Table—0=
1024,//FLASH容量大小〃 23,〃有多少个块(block)〃 {64,5},//第1块的大小及读写延时〃 {64,5},〃第2块的大小及读写延时〃
{8,5},〃第23块的大小及读写延时〃
};
A3、采用FLASH的厂商号和设备号,建立各种型号FLASH与其所在 参数表的对应关系表。
假设有如下厂商号和设备号的 FLASH 对应上述 FLASH 1MTOP—Table—0,那么可以用 一个switch和case来实现所述对应关
系表;在本例中,将厂商号和设备号合成一个区别标识,假设为FLASHID: 那么当FLASHID为0x12340000,0x12340001 ,0x12340002, ... ,0x12340099, 那么就可以查得它对应的参数表为FLASH1MTOP—Table—0。
一个对应关系表的例子如下所示。
switch(FLASHID)
0x12340000: 0x12340001: 0x12340002: 0x12340003: 0x12340004: 0x12340005:
0x12340099:
return &FLASH1MTOP—Table—0;〃即具有上述区别标识的设备都对应着 FLASH1MTOP—Table—0这个参数表〃
0x12340000:
0xlda230001:
0x12340002:
0x13140003:
0x12340004:
0x64320005:
0x15340099:
return &FLASH1MTOP—TableJ; 〃即具有上述区别标识的设备都对应着FLASH1MTOP—Table—1这个参数表〃
A4、使用FLASH时,获取当前FLASH的所述厂商号和所述设备号; 一般的,在步骤A4中,使用FLASH时,可以通过发送指令,荻取正在使 用的FLASH的所述厂商号和所述设备号。即在使用FLASH时,先发出获 得FLASH厂商号和设备号的软件指令,获得正在使用的FLASH的厂商号 和设备号
A5、根据所述厂商号和所述设备号,以及所述对应关系表得到所述当 前FLASH对应的所述参数表,并将其置为当前参数表。这一步是根据厂商 号和设备号得到该FLASH对应的参数表,将其置为当前参数表。
A6、根据所述当前参数表中的参数信息,对所述当前FLASH进行操作; 所述操作可以包括读操作、写操作或擦除操作。其中,对所述当前FLASH 进行操作,是采用通用流程进行。更好的是,步骤A6具体包括以下步骤 根据所述当前参数表中的参数信息,设置当前设备的各参数变量,对所述 当前FLASH进行才喿作。
一个例子是,步骤A3具体包括以下步骤分别将各种型号FLASH的 所述厂商号和所述设备号合并为一区别标识,建立各种型号FLASH的区别 标识与各FLASH所在参数表的对应关系表。
在此基础上,另一个优选的例子是,步骤A5具体包括以下步骤根据 所述厂商号和所述设备号得到所述区别标识,查询所述对应关系表中的所 述区别标识,得到所述当前FLASH对应的所述参数表,并将其置为当前参 数表。
或者,又一个例子是,步骤A3具体包括以下步骤采用FLASH的厂 商号和设备号,建立各种型号FLASH的设备表;并建立对应关系表,用于 存储所述设备表中的各设备与各参数表的对应关系。
在此基础上,另一个优选的例子是,步骤A5具体包括以下步骤根据 所述厂商号和所述设备号,得到所述设备表中对应的设备,查询所述对应 关系表得到所述当前FLASH对应的所述参数表,并将其置为当前参数表。
一个完整的例子如图2所示,包括步骤初始化FLASH设备表;初始 化FLASH各参数表;建立FLASH设备表和参数表的对应关系;发出指令 获得当前使用FLASH设备号和厂商号;根据设备号和厂商号,及设备表和 参数表的对应关系,设置好当前设备各参数变量;由当前设备各参数变量, 按通用流程来驱动FLASH进行各种读写操作。
采用本发明方法,在FLASH器件变化时,驱动程序不需要进行修改, 提高了软件的设备无关性。而所付出的代价也只是多建立了 一些参数表, 总的空间一般不超过2Kbytes,拓展性强,在技术上和工程上都确实可行。
应当理解的是,对本领域普通技术人员来说,可以才艮据上述说明加以 改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护 范围。
权利要求
1、一种FLASH的通用驱动方法,其包括以下步骤A1、获取至少一个供应商的各种型号FLASH的参数信息;A2、把参数信息相同的各种型号FLASH分为一类,为每类建立一个参数表,存储本类FLASH的参数信息;A3、采用FLASH的厂商号和设备号,建立各种型号FLASH与其所在参数表的对应关系表;A4、使用FLASH时,获取当前FLASH的所述厂商号和所述设备号;A5、根据所述厂商号和所述设备号,以及所述对应关系表得到所述当前FLASH对应的所述参数表,并将其置为当前参数表;A6、根据所述当前参数表中的参数信息,对所述当前FLASH进行操作。
2、 根据权利要求1所述的通用驱动方法,其特征在于,所述参数信 息包括容量、块大小、块分布、读写时延长短和各块的相对起始地址。
3、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A3具 体包括以下步骤分别将各种型号FLASH的所述厂商号和所述设备号合并 为一区别标识,建立各种型号FLASH的区别标识与各FLASH所在参数表 的对应关系表。
4、 根据权利要求3所述的通用驱动方法,其特征在于,步骤A5具 体包括以下步骤根据所述厂商号和所述设备号得到所述区别标识,查询 所述对应关系表中的所述区别标识,得到所述当前FLASH对应的所述参数 表,并将其置为当前参数表。
5、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A3具 体包括以下步骤采用FLASH的厂商号和设备号,建立各种型号FLASH 的设备表;并建立对应关系表,用于存储所述设备表中的各设备与各参数 表的对应关系。
6、 根据权利要求5所述的通用驱动方法,其特征在于,步骤A5具 体包括以下步骤根据所述厂商号和所述设备号,得到所述设备表中对应 的设备,查询所述对应关系表得到所述当前FLASH对应的所述参数表,并 将其置为当前参数表。
7、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A4中, 通过发送指令,获取正在使用的FLASH的所述厂商号和所述设备号。
8、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A6具 体包括以下步骤根据所述当前参数表中的参数信息,设置当前设备的各 参数变量,对所述当前FLASH进行操作。
9、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A6中, 对所述当前FLASH进行操作,是采用通用流程进行。
10、 根据权利要求1所述的通用驱动方法,其特征在于,步骤A6中, 所述操作包括读操作、写操作或擦除操作。
全文摘要
本发明公开了一种FLASH的通用驱动方法,其包括步骤获取至少一个供应商的各种型号FLASH的参数信息;把参数信息相同的各种型号FLASH分为一类,为每类建立一个参数表,存储本类FLASH的参数信息;采用厂商号和设备号,建立各种型号FLASH与其所在参数表的对应关系表;使用FLASH时,获取当前FLASH的厂商号和设备号;并根据对应关系表得到当前FLASH对应的参数表,将其置为当前参数表;根据相关参数信息,对当前FLASH进行操作。在FLASH器件变化时,驱动程序不需要进行修改,实现了自动适应各种FLASH型号的驱动,提高了软件的设备无关性;并且拓展性强,可适应相关技术的发展。
文档编号G06F12/02GK101196849SQ20071012548
公开日2008年6月11日 申请日期2007年12月24日 优先权日2007年12月24日
发明者彭文剑 申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1