在税控收款机中使用闪存时处理坏块的方法

文档序号:75090阅读:376来源:国知局
专利名称:在税控收款机中使用闪存时处理坏块的方法
技术领域
本发明涉及一种在单片机系统中使用闪存的操作方法,尤其涉及一种在税控收款机中使用闪存时处理坏块的方法。
背景技术
NANDFLASH由于其储存容量大,擦、写速度快,在数据储存系统中正在被大量使用,由于其接口类似于硬盘,正在向代替硬盘方向发展,目前的电子盘,如U盘,DOC(disk on chip),智能卡等都是使用NANDFLASH的。
目前,基于8位单片机的系统,很少有用到NANDFLASH做数据储存的。而基于32位ARM内核,LINUX平台的系统,使用的内存至少有几兆甚至于几十兆,程序也在其中运行,主频在70兆以上,跑任何算法都游刃有余。
其算法大概是这样的在第0块建一个2000*2的表,从第一块开始留出35个块作备用块,表指针指向实际的物理块,但有坏块发生时,需将第0块的16K字节读回RAM中,在RAM中对坏指针进行改写后,擦除第0块,再将16K字节写回第0块。
而8位单片机系统,由于程序量的限制,内存容量的限制,频率的限制而不能得到广泛的应用。而且NANDFLASH由于坏块的处理问题不能很好的应用在8位单片机系统上。

发明内容为解决上述问题本发明提供一种在税控收款机中使用闪存时处理坏块的方法,以实现对NANDFLASH进行坏块管理。
本发明提供的技术方案为、一种在税控收款机中使用闪存时处理坏块的方法,在闪存处理过程中在首扇区建立一逻辑块与物理块的映射表,一旦有坏块发生时,新的映射关系可以直接在首扇区中追加形成,当编程逻辑块X的第P页失败或擦除某逻辑块Y不成功时,先作坏块标识,再找出最大备用块号BLK及其表地址ADR,编程或擦除BLK+1直到成功,再将新物理块地址填入映射表中。
上述技术方案的进一步改进在于在编程逻辑块X的第P页失败时,还包括将前P-1页数据拷贝到该块后,把该块号写入ADR+2处的步骤,还包括找出X*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK值的步骤。
上述技术方案的进一步改进在于在擦除某逻辑块Y不成功时还包括将该块号BLK+N写入ADR+2处的步骤,还包括找出Y*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK+N的值的步骤。
上述技术方案的进一步改进在于还包括在数据区某位变通过ECC进行校验并纠正的步骤。
本发明的有益效果是基于本方法处理的坏块管理程序,程序量不超过2K,RAM使用不超过去30字节且是可覆盖的(不包括读数据用到的缓冲区),不需要做大数据量的搬迁工作,简单实用,易于理解和实现,占用代码量少,运行速度快且稳定,该方法在税控收款机上应用,系统切实可靠。
图1是本发明的一个编程实施例的流程图;图2是本发明的一个擦除实施例的流程图。
具体实施方式下面结合附图和具体实施方式
对本发明作进一步详述现以一容量32M闪存为例,该闪存共分2048个块,每块又划分成32页,每页上有512+16B字节,其中前512字节一般用来存放数据,后16B用来存放校验码和坏块标志。所以将容量设计成共有2000个逻辑块,每块32页,每页512字节,特理块0存放映射表,最后的47块为映射备用块。上述闪存的映射表设计如下a.规则芯片的物理块地址通过第0块中的映射表获得,如果一片芯片有超过47块坏块,或某对应块连续坏了4次且不是同时坏的,认为芯片坏;b.第0块共有16384B,每个逻辑块占用8字节,分别表示其第一,第二,第三,第四备用块,所以说每块最多只能坏四次;c.下表中,蓝色为映射块地址(块0),红色为该逻辑块所映射的物理块;d.逻辑块3的物理块为2001(0×7d1),因物理块3已坏。
e.逻辑块2000的物理块为2005(0×7d5),因物理块2000和物理坏2002先后均已坏。
f.用第0块的第31页的后256B记录已用备用块的最大块号,如在格式化时有三块坏块,则在3F00,3F01的值为07H,D1H(2001);3F02,3F03的值为07H,D2H(2002);3F04,3F05的值为07H,D3H(2003),对2000后的物理块不格式化,应用中处理(映射后不能操作则丢弃)。
如图1所示,在编程逻辑块X的第P页失败时,先进行坏块标识,并找出最大备用块号BLK及其表地址ADR,编程该块的第P页,失败再将BLK+1直到成功,将前P-1页数据拷贝到该块后,把该块号写入ADR+2处。同时找出X*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK值,如果8个字节全为非FF,提示FLASH坏。(因为应用中是滚动储存了,这种情况实际应用中出现的可能性极低),然后在数据区某位变通过ECC进行校验并纠正。
本发明另一个实施例中,如图2所示,在擦除某逻辑块Y不成功时,同样,先作坏块标识,再找出最大备用块号BLK及其表地址ADR,再擦除BLK+1直到成功,将该块号BLK+N写入ADR+2处,同时找出Y*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK+N的值,如果8个字节全为非FF,提示FLASH坏,然后在数据区某位变通过ECC进行校验并纠正。
权利要求
1.一种在税控收款机中使用闪存时处理坏块的方法,在闪存处理过程中在首扇区建立一逻辑块与物理块的映射表,一旦有坏块发生时,新的映射关系可以直接在首扇区中追加形成,当编程逻辑块X的第P页失败或擦除某逻辑块Y不成功时,先作坏块标识,再找出最大备用块号BLK及其表地址ADR,编程或擦除BLK+1直到成功,再将新物理块地址填入映射表中。
2.如权利要求
1所述的在税控收款机中使用闪存时处理坏块的方法,其特征在于在编程逻辑块X的第P页失败时,还包括将前P-1页数据拷贝到该块后,把该块号写入ADR+2处的步骤。
3.如权利要求
2所述的在税控收款机中使用闪存时处理坏块的方法,其特征在于还包括找出X*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK值的步骤。
4.如权利要求
1所述的在税控收款机中使用闪存时处理坏块的方法,其特征在于在擦除某逻辑块Y不成功时还包括将该块号BLK+N写入ADR+2处的步骤。
5.如权利要求
4所述的在税控收款机中使用闪存时处理坏块的方法,其特征在于还包括找出Y*8所在页,从左到右开始算,在最先出现FF的位置处记录下BLK+N的值的步骤。
6.如权利要求
1-5任何一项所述的在税控收款机中使用闪存时处理坏块的方法,其特征在于还包括在数据区某位变通过ECC进行校验并纠正的步骤。
专利摘要
本发明涉及一种在税控收款机中使用闪存时处理坏块的方法,解决了NANDFLASH由于坏块的处理问题不能很好的应用在8位单片机系统上的问题,采取的技术为在闪存处理过程中,在首扇区建立一逻辑块与物理块的映射表,一旦有坏块发生时,新的映射关系可以直接在首扇区中追加形成,当编程逻辑块X的第P页失败或擦除某逻辑块Y不成功时,先作坏块标识,再找出最大备用块号BLK及其表地址ADR,编程或擦除BLK+1直到成功,再将新物理块地址填入映射表中。该方法具有简单实用,易于理解和实现,占用代码量少,运行速度快且稳定,该方法在税控收款机上应用,系统切实可靠等优点。
文档编号G06F11/10GK1991788SQ200510121160
公开日2007年7月4日 申请日期2005年12月30日
发明者李伟民, 程永生, 邓武陵 申请人:深圳市桑达实业股份有限公司, 深圳桑达商用机器有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1