实时改变运行程序的方法

文档序号:6782098阅读:254来源:国知局
专利名称:实时改变运行程序的方法
技术领域
本发明涉及可擦除可编程存储器领域,特别涉及实时改变可擦除可编程 存储器扫描的方法。
背景技术
随着闪存工艺水平日益提高,闪存因其固有的特性,导致的不良率越来 越高,在生产的过程存在大量因闪存的好块数量达不到要求的闪存。如一片
闪存有1024块,如果合格标准是有1000个好块,若一片闪存只有999个好 块,则认为该片闪存为次品,无法作为合格品使用,造成浪费。
对由于闪存的好块数量达不到要求次品闪存,通过扫描闪存内的每个块, 确定坏块,并把坏块标记出来,好块可以使用,通过这种方法,大量由于闪 存的好块数量达不到要求次品闪存可以重新利用。在实际生产中次品闪存由 各种原因造成,可能相同型号的闪存,不同生产批次,坏块的原因也可能不 相同。还没有一种通用的扫描方法能够确定所有类型的坏块,只有使用不同 的扫描方法确定闪存坏块。目前主要利用上层软件对闪存进行扫描,通过上 层软件把数据写入到闪存,然后读出来,并由上层软件对写入数据和读出的 数据进行比较,从而确定坏块。该方法虽然可以改变扫描算法,但上层软件 与底层固件之间的通信量大,在扫描过程中耗费大量的时间,会严重影响扫 描效率。

发明内容
本发明解决的技术问题是提供一种实时改变运行程序的方法,方便灵活 改变扫描方法,同时在运行扫描程序时,上层软件与底层固件之间只有少量 数据交换,使得闪存的扫描效率较高。
本发明 一种实时改变运行程序方法,通过系统内的主机与控制器配合, 实现实时调用扫描程序对闪存进行扫描,包括步骤
检测闪存,以确定闪存是否存在;
根据检测结果,选择匹配的扫描程序;
根据上述选择的扫描程序对闪存进行扫描,输出扫描结果。
优选地,所述检测闪存,以确定闪存是否存在包括步骤
检测闪存是否存在;
根据检测结果,当系统存在闪存时,读取该闪存类型信息;根据闪存类型信息读取该闪存配置信息。
优选地,所述根据检测结果,选择匹配的扫描程序包括步骤 根据检测结果,读取闪存类型信息; 根据闪存类型信息,调用与该闪存匹配的扫描程序; 运行扫描程序对闪存进4亍扫描。
优选地,所述扫描程序为二进制或经过一定格式封装的数据包,该数据 包可以包括多个适应不同类型闪存的扫描程序,能对扫描程序进行修改或增 力口操作。
优选地,所述主机和控制器分别设有上层软件和底层固件,其中底层固 件和上层软件分别设有指令列表和配置列表。
优选地,所述配置列表包括各种类型闪存配置信息和匹配的扫描程序。
优选地,所述指令列表包括可变列表和固定列表,其中可变列表用于存 放私有指令,固定列表可以记录指令。
优选地,所述底层固件根据上层软件指令进行动作,其中所述底层固件 先根据所述上层指令调用闪存配置信息,再根据上层指令和配置信息运行扫 描程序。
优选地,所述扫描结果至少包括闪存好块和坏块信息。
本发明提供的一种实时改变运行程序的方法,通过对闪存进行检测,并 根据检测结果由控制器接收上层软件传送扫描程序,同时底层固件根据调用 的扫描程序对闪存进行扫描,对不同的闪存可以随时从主机扫描程序中调用 与之匹配的扫描程序进行扫描,可以实现灵活扫描不同的闪存,乂人而可以提 高闪存的扫描效率。


图l是本发明实施例提供的方法流程示意图; 图2是本发明实施例提供的检测闪存流程示意图; 图3是本发明实施例提供的对闪存进行扫描流程示意图; 图4是本发明实施例提供的底层固件工作流程示意图。 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。
具体实施例方式
本发明实施例由主机通过运行上层软件与控制器进行通信,同时控制器 上的底层固件根据主机指令进行动作,对闪存进行检测,根据检测结果选择匹配的扫描程序对闪存进行扫描,由控制器将扫描结果反馈给主机,可以实 现实时对不同类型闪存进行扫描,从而可以提高闪存的扫描效率。
本发明实施例提供一种实时改变运行程序的方法,通过系统内的主机与 控制器配合,实现实时调用扫描程序对闪存进行扫描,由主机控制控制器对 闪存进行检测,根据检测结果调用匹配的扫描程序对闪存进行扫描,可以实 现灵活扫描不同类型的闪存,从而可以提高闪存的扫描效率。
参照图l所示,为本发明实施例方法流程示意图,该实施例流程由控制器 根据主机指令进行动作,根据不同的类型闪存,可以实时选择匹配的扫描程
序对闪存进行扫描,其具体步骤包括
步骤S101,由主机控制控制器检测闪存,以确定闪存是否存在,当检测 到闪存时进行步骤S201;
步骤S201,根据步骤S101检测结果,当闪存存在时,由主机根据该闪存 类型信息选择与闪存匹配的扫描程序;
步骤S301 ,控制器根据主机指令调用选择的扫描程序对闪存进行扫描, 输出扫描结果。
具体地说,上述步骤S 101由主机根据系统反馈信息对系统是否有闪存进 行检测,以确定闪存是否存在。当系统有闪存时,系统将有闪存的信息反馈 给主机,同时主机向控制器发出指令,由控制器根据主机指令,读取当前闪 存闪存类型信息,主机再根据当前闪存类型读取该闪存的配置信息,其中反 馈信息根据不同的闪存类型反馈不同的信息。而当检测到系统没有闪存时, 系统不反馈信息给主机,此时主机不向控制器发出指令。同时控制器对是否 收接到主机指令进行判断,其中主机设有配置列表,该配置列表用于记录各 种类型闪存配置信息和匹配的扫描程序,如每个块的大小、闪存的容量以及 与该配置信息匹配的扫描程序等信息。用户可以对配置列表内的扫描程序和 配置信息进行^^改或增加等操作。该扫描程序为二进制或经过一定^P各式封装 的数据包,该数据包也可以包括与多个不同类型闪存匹配的扫描程序,每一 个扫描程序可以与 一种类型闪存匹配,也可以一种扫描程序与多个类型闪存 匹配,所述扫描程序可以包括一个或多个不同类型的具体的闪存扫描程序, 也可以对扫描程序进行修改或增加等操作;当主机确定了闪存类型,同时就 确定了该闪存的配置信息和匹配的扫描程序。
上述步骤S201使用选择的扫描程序,主机根据闪存配置信息向控制器发 出指令,由控制器调用与该闪存匹配的扫描程序。控制器根据主机的指令, 接收所调用的扫描程序。
上述步骤S301根据选择的扫描程序对闪存进行扫描,由控制器将扫描结 果反馈给主机,输出扫描结果,其中扫描结果至少包括闪存的好块和坏块信息,也可以根据需要产生其他信息。
本发明在第 一 实施例基础上还提出第二实施例,在所述主机和控制器内
分别设有上层软件和底层固件,通过执行上层^:件对系统是否有闪存进行片佥
测,主机根据检测结果确定闪存类型,控制器才艮据主机指令调用扫描程序对 闪存进行扫描,并将扫描结果反馈给主机,由主机输出扫描结果,从而实现 对不同闪存类型实时调用扫描程序进行扫描。
如图2所示,在上述步骤S101检测闪存中,在主机内设有供上层软件使用 的各种类型闪存配置信息和闪存匹配的扫描程序的配置列表,每个扫描程序
可以与一个或多个不同类型闪存匹配,当主机内的上层软件在判断有闪存时,
就确定了该闪存类型,同时得到闪存类型信息,根据闪存类型信息确定该闪
存的配置信息和扫描程序,具体步骤包括
步骤S1011,对闪存进行^r测前,上层软件进行初始化;
步骤S1012,由上层软件检测系统是否存在闪存,当系统存在闪存时,执
行下一步;当系统不存在闪存时,上层软件进4亍循环判断,直到系统存在闪
存时结束;
步骤S1013,根据步骤S1012上层软件检测到系统存在闪存时,读取当前 闪存类型信息;
步骤S1014,根据步骤S1013中上层软件所读取的闪存类型信息读取该闪 存的配置信息。
具体地说,上述步骤S1012由上层软件根据系统反馈给主机的信息检测闪 存,以确定闪存是否存在,若检测结果为系统不存在闪存时,上层软件始终 检测系统反馈给主机的信息是否存在闪存;当系统检测到存在闪存时,上层 软件向底层固件发出指令,底层固件根据上层软件指令返回检测结果,同时 上层软件执行下一步骤;
上述步骤S1013根据步骤S1012检测结果,当上层软件检测系统存在闪存 时,由上层软件读取闪存类型信息,同时上层软件给底层固件发出指令,底 层固件根据上层软件指令,返回当前闪存类型信息,其中闪存类型信息是指 不同的闪存之间存在一些操作上的差异,通过获取闪存类型信息后,能对其 进行操作,如Nand闪存,可以通过读取闪存内设置的标识符来确定类型。主 机与控制器之间通过USB总线协议和SCSI标准指令应答,控制器中的底层固 件除了需要实现标准的SCSI指令外,还可以实现与上层软件通信的私有指令。
上述步骤S1014,根据步骤S1013中上层软件所读取的闪存类型信息读取 该闪存的配置信息。控制器内设有指令列表,该指令列表可以包括可变列表 和固定列表,其中可变列表用于记录私有指令,固定列表可以记录指令,如SCSI标准指令,也可以记录其他的指令集,指令列表使底层固件支持原本不 支持的私有命令。
如底层固件和上层软件约定私有指令可以包括 指令l:
FF 01 00 00 00 00 00 00 00 00,该指令用于获取闪存的存在信息,底层固 件收到该指令后,返回字符串"This is our device!"给系统; 指令2:
FF 02 00 00 00 00 00 00 00 00,该指令用于调用指令列表,上层软件在发 送该指令后,会把指令列表作为该指令的数据发给底层固件; 指令3
FF 03 00 00 00 00 00 00 00 00,用于调用扫描程序,上层软件在发送该指 令后,系统中与闪存匹配的扫描程序作为该指令的数据发给底层固件,并放 到指定地址;
指令4
FE 04 00 00 00 00 00 00 00 00,用于扫描闪存,运行调用的扫描程序对系 统中的闪存进行扫描,该指令前四个位为扫描起始地址,第五、第六位为扫 描长度,扫描起始地址扫描长度可以根据需要进行设置。
底层固件支持指令l、指令2、指令3,但不支持指令4。
系统启动后,由上层软件根据系统反馈给主机的信息检测系统是否存在 闪存,如果检测存在闪存时,上层软件发送指令1给底层固件,同时底层固 件将相关信息反馈给主机,以确定系统存在闪存,然后上层软件发出指令由 主机读取当前闪存类型信息,再根据当前的闪存类型信息读取配置信息,从 而获得与当前闪存匹配的扫描程序。
上层软件发送指令2将指令4送给指令列表,同时上层软件还发送指令3 调用扫描程序,底层固件才艮据指令3调用扫描程序,由控制器暂存。此时, 底层固件就可以支持指令4,根据上层软件发送命令4,底层固件运行控制器 中扫描程序开始对闪存进行扫描,并将扫描结果反馈给主机,底层固件通过 上层软件指令调用程序,动态地支持一些原本不支持的命令。
如图3所示,在上述步骤S201对闪存进行扫描过程中,可以通过约定的 私有命令将设有主机内的扫描程序发送给控制器,底层固件根据上层软件指 令运行调用控制器中的扫描程序,对闪存进行扫描,输出扫描结果,具体步 骤包括
步骤S2011,调用与闪存匹配的扫描程序,由上层软件根据闪存配置信息 发出指令,底层固件调用主机内与闪存匹配的扫描程序;
步骤S2012,发送扫描指令,控制器根据上层软件发出的扫描指令运行所
8调用的扫描程序;
步骤S2013,输出扫描结果,控制器运行调用的扫描程序后,由控制器中 的底层固件将扫描结果反馈给上层软件,由主机输出扫描结果,该结果至少 包含被检测的闪存好块或/和坏块信息,可以根据需要生成其他信息;
步骤S2014,上层软件运行结束。
如图4所示,为本实施例底层固件工作流程,根据上层软件指令分别执行 不同步骤,该步骤包括
步骤S4011,上电初始化,当系统上电启动后,该底层固件开始进行初始
化;
步骤S4012,对是否接收到主机指令进行判断,上电初始化完成后,由底 层固件判断是否接收到由上层软件发出指令,若底层固件未接收到上层软件 发出的指令,则底层固件循环判断是否接收到上层软件指令,直到底层固件 接收到上层软件指令后,循环判断结束,并根据上层软件指令执行相关动作;
步骤S4013,根据步骤S4012,返回检测结果,当底层固件接收到的上层 软件指令为获取检测结果时,底层固件返回上层软件检测结果;
步骤S4014,根据步骤S4012,返回当前闪存类型信息,当底层固件接收 到上层软件指令为获取当前闪存类型时,底层固件返回上层软件获取的当前 闪存类型;
步骤S4015,根据步骤S4012,接收调用扫描程序,当底层固件接收到的 上层软件指令为调用与闪存匹配的扫描程序时,由控制器暂存调用的扫描程 序;
步骤S4016,根据步骤S4012,运行调用扫描程序,当底层固件接收到上 层软件指令为运行调用扫描程序时,控制器根据上层软件指令运行底层固件 所调用的扫描程序对闪存进行扫描;
步骤S4017,根据步骤S4012,当底层固件接收到上层软件结束指令后, 底层固件结束运行。
通过上层软件由主机读取闪存类型信息,并将读取的闪存类型信息反馈 给底层固件,同时上层软件根据闪存类型信息调用与闪存匹配的扫描程序和 配置信息中的指令列表。由控制器暂存底层固件调用的扫描程序和指令列表, 并根据上层软件指令运行底层固件所调用的扫描程序对闪存进行扫描,可以 满足不同的闪存对扫描程序的要求,同时设有上层软件的主机与设有底层固 件的控制器只有少量的数据交换,从而提高扫描效率。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围, 凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接 或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种实时改变运行程序的方法,通过系统内的主机与控制器配合,实现实时调用扫描程序对闪存进行扫描,其特征在于,该方法包括步骤检测闪存,以确定闪存是否存在;根据检测结果,选择匹配的扫描程序;根据上述选择的扫描程序对闪存进行扫描,输出扫描结果。
2. 根据权利要求1所述的实时改变运行程序的方法,其特征在于,所述4企 测闪存,以确定闪存是否存在包括步骤检测闪存是否存在;冲艮据检测结果,当系统存在闪存时,读取该闪存类型信息; 根据闪存类型信息读取该闪存配置信息。
3. 根据权利要求1所述的实时改变运行程序的方法,其特征在于,所述根 据检测结果,选择匹配的扫描程序包括步骤根据检测结果,读取闪存类型信息; 根据闪存类型信息,调用与该闪存匹配的扫描程序; 运行扫描程序对闪存进行扫描。
4. 根据权利要求1或3所述的实时改变运行程序的方法,其特征在于,所 述扫描程序为二进制或经过一定格式封装的数据包,该数据包包括多个不同 类型闪存的扫描程序,能对扫描程序进行修改或增加操作。
5. 根据权利要求1所述的实时改变运行程序的方法,其特征在于,所述主 机和控制器分别设有上层软件和底层固件,所述上层软件和底层固件分别设 有配置列表和指令列表。
6. 根据权利要求5所述的实时改变运行程序的方法,其特征在于,所述配 置列表包括各种类型闪存配置信息和闪存匹配的扫描程序。
7. 根据权利要求5所述的实时改变运行程序的方法,其特征在于,所述指 令列表包括可变列表和固定列表,其中所述可变列表用于记录私有指令,所 述固定列表可以记录指令。
8. 根据权利要求5所述的实时改变运行程序的方法,其特征在于,所述底 层固件根据上层软件指令进行动作,其中所述底层固件先根据所述上层指令 调用闪存配置信息,再才艮据上层指令和配置信息运行扫描程序。
9. 根据权利要求1所述的实时改变运行程序的方法,其特征在于,所述扫 描结果至少包括闪存的好块和坏块信息。
全文摘要
本发明公开了一种实现实时改变运行程序的方法,通过系统内的设有上层软件折主机与设有底层固件的控制器配合,实现实时调用扫描程序对闪存进行扫描,该方法包括检测闪存,以确定闪存是否存在;根据检测结果,选择匹配的扫描程序;根据上述选择的扫描程序进行扫描,输出扫描结果。由底层固件接收主机内的扫描程序,同时底层固件使用接收到的扫描程序对闪存进行扫描,对于不同的闪存可以随时从主机中调用与之匹配的扫描程序进行扫描。可以实现灵活扫描不同的闪存,从而可以提高闪存的扫描效率。
文档编号G11C29/14GK101540203SQ20081008405
公开日2009年9月23日 申请日期2008年3月21日 优先权日2008年3月21日
发明者钟智渊 申请人:深圳市朗科科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1