一种基于NAND FLASH的电子盘及其运行控制方法
技术领域
本发明涉及电子盘,更具体地说,涉及一种基于NAND FLASH的电子盘及其运行控制方法。
背景技术
普通硬盘的工作机理是电机带动硬盘盘片高速旋转,通过磁头臂的摆动读取盘片数据。在工业控制和军事领域应用中,由于机械振动、粉尘、温度变化等的影响,硬盘很容易出故障而不能正常使用。而且普通硬盘接口复杂,体积大。
发明内容
本发明要解决的技术问题在于,针对现有技术的普通硬盘防机械振动、粉尘、温度变化性能差,以及接口复杂,体积大等缺陷,提供一种基于NANDFLASH的电子盘及其运行控制方法。
本发明解决其技术问题所采用的技术方案是:构造一种基于NAND FLASH的电子盘,包括NAND FLASH芯片和FPGA控制器,其中,FPGA控制器用于实现ISA总线与NAND FLASH芯片之间的数据交换,以及ISA总线对NAND FLASH的读写控制;计算机操作系统固化在NAND FLASH芯片中。
在本发明所述的基于NAND FLASH的电子盘中,所述FPGA控制器包括:
ISA总线接口,用于读取ISA总线发送的数据和控制信号,同时向ISA总线发送NAND FLASH芯片的数据和状态信息;
扩展ROM,用于存储扩展的BIOS数据;
读写控制器,用于根据NAND FLASH芯片的控制时序,向NAND FLASH芯片提供控制信号,并读取NAND FLASH芯片的状态信息。
在本发明所述的基于NAND FLASH的电子盘中,所述读写控制器包括:
写操作模块,用于将ISA总线发送的数据写入NAND FLASH芯片,并反馈写操作状态;
读操作模块,用于读取NAND FLASH芯片发送的数据,并反馈读操作状态;
块删除模块,用于根据ISA总线发送的控制信号,删除NAND FLASH芯片中相应的块地址内的存储单元;
ID识别模块,用于读取NAND FLASH芯片的ID号;
在本发明所述的基于NAND FLASH的电子盘中,所述读写控制器还包括错误控制模块,用于发现和纠正NAND FLASH芯片中数据的比特错误。
在本发明所述的基于NAND FLASH的电子盘中,所述读写控制器还包括坏块管理模块,用于实现NAND FLASH芯片内逻辑块和物理块间的有效映射,以便各逻辑块对应到无缺陷的物理块。
根据本发明的另一个方面,提供一种基于NAND FLASH的电子盘的运行控制方法,包括以下步骤:
S1:系统上电,BIOS搜索ROM扩展码,如果搜索到,进入步骤S2,否则,进入步骤S5;
S2:执行NAND FLASH芯片的启动信息代码;
S3:将INT13H的中断向量改为NAND FLASH芯片的中断向量;
S4:调用NAND FLASH芯片的INT13H的中断处理程序,对NAND FLASH芯片进行读写控制;
S5:结束。
在本发明基于NAND FLASH的电子盘的运行控制方法中,所述步骤S2包括:
S21:将NAND FLASH芯片的驱动代码搬移到与大小相配合的存储器执行空间;
S22:释放NAND FLASH芯片的映射空间。
在本发明基于NAND FLASH的电子盘的运行控制方法中,在所述步骤S3中还包括保存INT 13H的原中断向量。
在本发明基于NAND FLASH的电子盘的运行控制方法中,在所述步骤S4中的读写控制包括对NAND FLASH芯片进行ID识别、读操作、写操作、块管理、块检测和块删除。
实施本发明的基于NAND FLASH的电子盘及其运行控制方法,具有以下有益效果:在工业控制和军事领域应用中,能有效地防止机械振动、粉尘、温度变化等的影响,而且该电子盘采用简化的ISA接口,体积小,直接焊接到系统电路板,接触可靠,便于嵌入式工控的应用,由于该电子盘采用半导体制成,与普通硬盘相比其寿命大大提高,另外,将本发明的电子盘应用于工业计算机系统时,由于操作系统是固化在NAND FLASH芯片中,当有病毒入侵系统时,不能对操作系统进行任何修改,有效地防止了病毒的侵入。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明基于NAND FLASH的电子盘的电路原理框图;
图2是本发明基于NAND FLASH的电子盘的运行控制方法的流程图;
图3是本发明基于NAND FLASH的电子盘的映射电子的示意图。
具体实施方式
近年来,随着NANDFLASH闪存芯片技术的进步,NANDFLASH芯片的价格不断走低,单芯片容量目前可以做到4GB甚至更高;基于NANDFLASH的电子盘(DOC)由于其防振动、体积小、低功耗等固有的优点,在工业控制、移动多媒体等应用方面完全可以取代硬盘等存储媒体。本方案采用FPGA实现NANDFLASH控制器,配合BIOS扩展程序一起实现电子盘(DISK ON CHIP,DOC)的功能,取代硬盘完成各种计算机的启动、运行和数据存储处理功能。
如图1所示,在本发明的基于NAND FLASH的电子盘中,包括NAND FLASH芯片和FPGA控制器,其中,计算机操作系统固化在NAND FLASH芯片中,该FPGA控制器包括:ISA总线接口、扩展ROM、读写控制器;该读写控制器又包括、写操作模块、读操作模块、块删除模块、ID识别模块、错误控制模块和坏块管理模块;FPGA控制器在DOC系统中是底层的执行单元,它要实现的功能为接收/发送ISA总线数据、实现对NAND FLASH芯片的写操作、实现对NANDFLASH芯片的读操作、块删除操作、坏块识别、读NAND FLASH芯片的ID、对NAND FLASH芯片的复位。主机通过ISA总线访问电子盘,该电子盘采用FPGA芯片实现ISA总线接口、扩展ROM和读写控制器;ISA总线接口读写控制命令译码,扩展BIOS程序存储在扩展ROM内。
FPGA控制器的功能为a、DOC复位,由于ISA接口未提供复位信号,向命令寄存器写00H,复位读写控制器;b、NAND FLASH芯片复位,向命令寄存器写06H,复位NAND FLASH芯片;c、读NAND FLASH芯片的ID码,向命令寄存器写05H,读ID寄存器值;d、擦除NAND FLASH芯片的块,向命令寄存器写03H,向地址寄存器内写入NAND FLASH芯片的块地址,向地址结束码寄存器写入地址结束码,读状态寄存器,BIT6=1时:BIT0=0,擦除成功,BIT0=1,擦除失败;e、读NANDFLASH芯片,向命令寄存器写02H或22H(用此命令读SLC芯片的备用区域数据),向地址寄存器内写入NAND FLASH芯片的地址,向地址结束码寄存器写入地址结束码,读状态寄存器,BIT6=1时,依次读出各个字节,读完数据后向读写数据结束寄存器发送读结束命令;f、写NAND FLASH芯片,向命令寄存器写01H,向地址寄存器内写入NAND的FLASH芯片的地址,向地址结束码寄存器写入地址结束码,向数据寄存器依次写入数据,写完数据向读写数据结束寄存器发送读结束命令,读状态寄存器,BIT6=1时:BIT0=0,写成功,BIT0=1,写失败。另外,读写控制器的寄存器包括:命令寄存器(偏移地址:1FF0):主机通过ISA总线写命令,用以控制DOC;地址寄存器(偏移地址:1FF1):主机通过ISA总线写NAND FLASH芯片的地址;地址结束码寄存器(偏移地址:1FF2):地址码发送完成码,SLC和MLC的NAND FLASH芯片有不同的结束码;数据寄存器(偏移地址:1FF4):读写NAND FLASH芯片的数据;读写数据结束寄存器(偏移地址:1FF5):完成数据读写;NAND FLASH芯片的状态寄存器(偏移地址:1FF6):操作状态寄存器;ID寄存器1(偏移地址:1FF7):厂家ID;ID寄存器2(偏移地址:1FF8):器件ID;ID寄存器3(偏移地址:1FF9):器件内部描述;ID寄存器4(偏移地址:1FFA):器件内部描述。
ISA接口是NAND FLASH芯片与ISA总线间的桥梁,它负责获取来自ISA的数据与控制信号,并将数据及控制信号传给FPGA控制器的内部模块;同时也负责将来自FPGA控制器的内部的数据与状态信息送到ISA总线。其接口定义信号如下表1:
名称 | 方向 | 描述 |
ADD_DOC(12 downto 0) | 输入 | DOC地址输入 |
Data_DOC(7 downto 0) | 输入/输出 | DOC的数据输入/输出 |
WE_DOC | 输入 | DOC的写信号 |
OE_DOC | 输入 | DOC的读信号 |
CE_DOC | 输入 | DOC的片选信号 |
表1
扩展ROM在上位机启动时工作,其中ROM一共有8K,BIOS在上位机启动时来读取这8K的数据,其信号如下表2:
名称 | 方向 | 描述 |
Addr | 输入 | 8KB扩展ROM地址输入 |
Clk | 输入 | 32M时钟输入 |
Dout | 输出 | 扩展ROM数据输出 |
表2
读写控制器是按照NAND FLASH芯片的控制时序,给外接的NAND FLASH芯片提供控制信号,并从NAND FLASH芯片获取状态信息,从而实现对NANDFLASH芯片的各项操作。读写控制器内部包括六个独立的子模块,它们分别为:a、写操作模块,该模块负责将PC传送来的数据写入NAND FLASH芯片中,并负责向上位机传回写操作状态。b、读操作模块,该模块负责从NAND FLASH芯片中读取数据,并向上位机传回读操作状态,将数据通过其它模块送给上位机。c、块删除操作模块,该模块负责将上位机指定的块地址内的存储单元内容全部删除掉,删除后块地址内所有存储单元内容均为“FF”。d、ID识别模块,该模块负责读取NAND FLASH芯片的ID号,以便判别NAND FLASH芯片的种类。e、错误控制模块,该模块用于发现和纠正NAND FLASH芯片中数据的比特错误。f、坏块管理模块,该模块用于实现NAND FLASH芯片内逻辑块和物理块间的有效映射,以便各逻辑块对应到无缺陷的物理块。读写控制器的信号如下表3:
名称 | 方向 | 描述 |
write_operation_step | 读/写 | 写NAND FLASH芯片的状态寄存器(步骤寄存器) |
CE_n_write | 读/写 | 写操作时NAND FLASH芯片的片选信号寄存器 |
CLE_write | 读/写 | 写操作时NAND FLASH芯片的命令锁存使能信号寄存器 |
ALE_write | 读/写 | 写操作时NAND FLASH芯片的命令锁存使能信号寄存器 |
WE_write | 读/写 | 写操作时写NAND FLASH芯片的控制寄存器 |
RE_write | 读/写 | 写操作时读NAND FLASH芯片的控制寄存器 |
IO_CON_write | 读/写 | 写操作时IO读/写控制寄存器 |
FStatus_write | 输出 | 写操作时NAND FLASH芯片的状态寄存器 |
IO_write | 输出 | 写操作时读/写NAND FLASH芯片的端口寄存器 |
表3
该基于NAND FLASH的电子盘的运行控制方法,包括以下步骤:
S1:系统上电,BIOS搜索ROM扩展码,如果搜索到,进入步骤S2,否则,进入步骤S5;S2:执行NAND FLASH芯片的启动信息代码;S3:将INT13H的中断向量改为NAND FLASH芯片的中断向量;S4:调用NAND FLASH芯片的INT13H的中断处理程序,对NAND FLASH芯片进行读写控制;S5:结束。其中,步骤S2包括:S21:将NAND FLASH芯片的驱动代码搬移到与大小相配合的存储器执行空间;S22:释放NAND FLASH芯片的映射空间。在步骤S3中还包括保存INT 13H的原中断向量。在步骤S4中的读写控制包括对NAND FLASH芯片进行ID识别、读操作、写操作、块管理、块检测和块删除。
在具体工作中,根据BIOS的规范可知所有的扩展ROM只能放在C8000H~F0000H的区间内BIOS才能引导,扩展ROM有自己规范,即扩展ROM的前2个字节必须是0XAA55,然后是扩展ROM的长度,长度是以512个字节为单位,接着是ISA_FLASH驱动部分,这些部分总共加在一起的字节和要为0。电子盘作为机器的一个ISA设备,其驱动在BIOS程序看来就是一个扩展ROM,因此,计算机启动过程中将电子盘的驱动程序以只读方式自动导入PC内存,它在PC的扩展BIOS中安排了8kB的存储区域,其映射地址为OD8000H到OD9FFF的区域,其实现机制如图3所示。
计算机开机自检后,电子盘作为PC的BIOS标准操作的一部分,BIOS搜寻ROM扩展码,找到后BIOS执行相应的初始代码,此码将驱动程序首先搬移到内存的可用区域继续执行,并完成修改中断向量表等一系列操作,如图2。完成上述操作后电子盘将被标识为系统的一个磁盘,如磁盘A。
计算机启动后,BIOS首先进入地址OD8000H处搜寻ROM扩展码,判断是否存在0XAA55,若存在则读取驱动代码长度并继续执行;否则BIOS会自动到其他映射空间搜寻是否存在ROM扩展码。
待BIOS检测完ROM扩展码后,程序跳至显示电子盘启动信息代码处继续执行。由于电子盘8K的映射空间只能用做数据交换区,而不能用作应用程序的运行空间。接下来电子盘的驱动将执行一段驱动程序自我搬移的代码,将驱动代码由地址OD8000H处搬移到9E800H至0A0000H处,其中的起始地址9E800H并非固定值,只要保证其起始地址与0A0000H的空间大小等于代码长度即可。待程序代码搬移完毕后,修改IP寄存器和CS寄存器的值,跳转到驱动程序搬移后那段存储器空间继续执行,此时电子盘8K的映射空间便被释放出来用作数据交换区。HOOK_INT 13程序的作用是保存原INT 13H的中断向量并把INT 13H的中断向量更改为电子盘所用的中断向量,修改INT 13H中断向量的地址为0000H:004CH,此时INT 13H的中断便被电子盘所接管。此后每次调用INT 13H的中断都会进入电子盘的所建立的新中断服务程序中,在该中断服务程序里,首先对寄存器DL的值进行比较(与00H比较),若该参数反映的是电子盘,则会进一步查找功能函数表,从而调用电子盘的INT13H的中断处理程序,其中包括对电子盘的ID识别、读操作、写操作、块管理、块检测、块删除等处理,待相应的操作处理完毕后便进行中断返回(IRET);倘若寄存器DL的值反映的不是电子盘而是硬盘,则会将INT 13H中断向量恢复成电子盘接管INT 13H前的状态。HOOK_INT 13程序执行完毕后,接着就要修改常规内存容量,其修改地址是0000H:0413H,在该地址的内容里减去驱动的大小,以1024个字节为单位。应用程序每次调用INT 13H中断服务程序后便会判断是否调用成功,若成功则会正常返回(RETF),否则需要进行错误处理。
通过实际测试,使用本电子盘的读写误码率小于10E-10,使用ECC纠错算法误码率小于10E-12。另外,通过PCI-ISA桥和DOC结合将DOC可以设计为PCI插卡方式。
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。