CN101923570A - 一种在Windows CE环境下建立大页面NAND Flash存储系统的方法 - Google Patents

一种在Windows CE环境下建立大页面NAND Flash存储系统的方法 Download PDF

Info

Publication number
CN101923570A
CN101923570A CN 201010235291 CN201010235291A CN101923570A CN 101923570 A CN101923570 A CN 101923570A CN 201010235291 CN201010235291 CN 201010235291 CN 201010235291 A CN201010235291 A CN 201010235291A CN 101923570 A CN101923570 A CN 101923570A
Authority
CN
China
Prior art keywords
page
nand flash
size
windows
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010235291
Other languages
English (en)
Other versions
CN101923570B (zh
Inventor
陈一新
莫家贵
廖颖
汪玮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 38 Research Institute
Original Assignee
CETC 38 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 38 Research Institute filed Critical CETC 38 Research Institute
Priority to CN2010102352914A priority Critical patent/CN101923570B/zh
Publication of CN101923570A publication Critical patent/CN101923570A/zh
Application granted granted Critical
Publication of CN101923570B publication Critical patent/CN101923570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种在Windows CE操作系统环境下建立大页面NAND Flash存储系统的方法,其采用大页面NAND Flash器件,以及其与内部自带NAND Flash控制器的嵌入式处理器之间的硬件接口方式;将Windows CE系统启动装载程序EBoot代码中设备块尺寸定义等于NAND Flash器件的块尺寸,设备页面的尺寸定义等于NAND Flash器件的页面尺寸,页地址和块地址之间互相转换的宏定义符合实际器件定义;设备驱动程序代码中FMD xxx系列函数的实现中的存取缓冲区大小与大页面NAND Flash存储器件的页尺寸相同;通过修改FAT文件系统的扇区大小来匹配大页面NAND Flash的页面大小。适用于任意页面尺寸和块尺寸的NAND Flash。

Description

一种在Windows CE环境下建立大页面NAND Flash存储系统的方法
技术领域
本发明涉及一种在Windows CE环境下建立大页面Nand Flash存储系统的方法,属于计算机操作系统与存储系统领域。
背景技术
NAND Flash是一种新型的存储器件,由于其具有存储密度大、写入擦除速度快、成本低廉等突出优点,目前已经成为市场上嵌入式系统的主流存储器件。和另一种主流的闪存技术NOR Flash相比,NAND Flash写(编程)和擦除操作快,但随机存取慢;NOR Flash随机存取快,能以字节为单位写,但擦除慢。NAND相对于NOR存储单元密度高、成本低、性价比好,适合作为大容量存储。
Windows CE嵌入式操作系统是微软公司在1996年推出的一种全新开发的操作系统,具备抢先式多任务功能以及强大的通信能力,专门应用在信息设备、移动应用、消费类电子产品以及嵌入式应用等非PC领域。
NAND Flash由块(block)构成,块由页(page)构成。擦写以块为单位,读写以页为单位。每个页包含数据区和空闲(spare)区,spare区用于纠错码(ECC)等软件开销。NAND Flash复用指令、地址和数据总线,串行地存取数据和发指令,节省芯片引脚数,不用改变硬件设计就可支持更大容量的芯片。
对NAND的操作主要有读、写、擦除三种:页写入、块擦除将块全部字节编程为0xFF来回收空间.工作时序都是:先发操作指令,再发要操作单元的地址,待芯片就绪后进行各自的处理,如读操作是读数据并做ECC校验。
早期的Nand Flash器件(如三星的K9K5608、K9F1208等型号)页面大小均为512字节,其最大容量一般不超过1Gbit,读写速度一般限制在12.65MByte/s和2.33MByte/s以下。为了进一步扩大容量,提高性能,目前新一代的NAND Flash(如三星的K9F1G08、K9K2G08,现代的HY27UF084G等型号)普遍采用了2048字节的大页面结构,最大容量可达32Gbit,理论读写速度分别可以达到16.13MByte/s和5.2M/s,使器件的容量和性能得到了显著的提高。在未来,采用4096乃至8192字节页面的超大容量NAND Flash也即将问世。
但与常规页面器件相比,大页面NAND Flash在命令码、读写地址等方面的操作都有所不同;目前在Windows CE操作系统环境下使用的主要是FAT文件系统,目前仅能应用于512字节页面的常规NAND Flash,无法应用于大页面NAND Flash器件;有其他专利提出将大页面NAND Flash器件虚拟成多个常规页面器件的方法,但是操作效率低下,不能充分利用器件本身的特点和性能优势,且占用了额外的系统资源。
发明内容
本发明的目的在于克服上述Windows CE操作系统环境下FAT文件系统扇区与实际大页面NAND Flash器件页面大小不一致而无法建立存储系统的问题,提供一种在WindowCE操作系统环境下建立大页面NAND Flash器件存储系统的方法。
本发明解决其技术问题采用的技术方案如下:
一种在Windows CE环境下建立大页面Nand Flash存储系统的方法,其特征在于:采用2048字节及其以上大页面的NAND Flash器件,以及其与内部自带NAND Flash控制器的嵌入式处理器之间的硬件接口方式;
将Windows CE系统启动装载程序EBoot代码中设备块尺寸定义等于NAND Flash器件的块尺寸,设备页面的尺寸定义等于NAND Flash器件的页面尺寸,页地址和块地址之间互相转换的宏定义符合实际器件结构的定义;
设定Windows CE设备驱动程序代码中FMD xxx系列函数的实现中的存取缓冲区大小与大页面NAND Flash存储器件的页尺寸相同,以及向FAL闪存抽象层返回的信息符合器件内部结构信息;
根据大页面NAND Flash器件的实际页面大小改造FAT文件系统扇区大小,包括对核心文件fatfsd.dll和fatutil.dll的修改和重编译方法使文件系统扇区大小与实际器件页面大小相一致。
本发明通过修改FAT文件系统的扇区大小来匹配新型大页面NAND Flash的页面大小的方法,有效的解决了Windows CE操作系统环境下FAT文件系统扇区与实际大页面NAND Flash器件页面大小不一致而无法建立存储系统的问题,且最大程度地利用了器件本身的结构特点,使存储系统的存取效率达到了极大的优化。适用于任意页面尺寸和块尺寸的NAND Flash。
附图说明
图1为大页面NAND Flash与嵌入式处理器的连接关系图;
图2为S3C2440与K9F1G08U0A接口电路图;
图3为S3C2440处理器NAND Flash操作信号时序图;
图4为Windows CE环境下NAND Flash存储系统软件结构。
具体实施方式
下面结合附图对本发明作进一步的说明。
1、硬件接口电路设计
图1所示为三星公司S3C2440A嵌入式处理器。S3C2440A采用ARM920T内核,主频为400MHz,并自带NAND Flash控制器,能方便地与各种NAND Flash器件进行接口,通过对内部寄存器的读写实现对NAND Flash器件的操作。Nand Flash器件采用三星的2048字节大页面K9F1G08芯片。其管脚作用见表1。
表1
Figure BSA00000203061200021
Figure BSA00000203061200031
S3C2440通过内部寄存器进行对外部NAND Flash器件的控制,并通过管脚NCON、GPG13、GPG14、GPG15来设置外部NAND Flash的类型;根据K9F1G08U0A的特征,NCON设置为高电平表示大页面器件,GPG13设置为高电平表示页面大小为2048字节,GPG14设置为低电平表示NAND Flash需要4次地址周期操作,GPG15设置为低电平表示器件数据总线宽度为8位。电路设计如图2所示。
在操作前,首先需要先对S3C2440的NAND Flash配置寄存器NFCONF进行正确的设置,以确定外部连接的NAND Flash器件的页面大小、地址周期以及数据总线宽度等信息。
当需要进行一次写数据操作时,首先对寄存器NFCMMD写入命令码,处理器就会自动先将命令控制信号CLE置高,然后通过8位数据总线DATA[7..0]发出写命令码,并通过发出低电平的写使能信号nFWE将命令码写入NAND Flash器件,最后通过设备就绪信号RnB确定操作是否成功。在命令发送成功后,对寄存器NFADDR写入地址,处理器会将地址使能信号ALE置高,并通过8位数据总线DATA[7..0]送出地址,待RnB信号反馈操作成功后,对寄存器NFDATA写入数据即可实现NAND Flash的数据写入。读数据以及擦除等其他操作也与此过程类似。信号时序关系如图3所示(图中HCLK信号为处理器内部总线时钟信号)。
如果所用处理器不含NAND Flash控制器,则需要根据NAND Flash的信号时序要求用通用输入输出引脚模拟出所需的命令使能、地址使能、数据总线等信号。
2、软件设计实现步骤
Windows CE环境下与NAND Flash相关的软件包括EBoot、块设备驱动程序和FAT文件系统三个部分;其中,块设备驱动程序、文件系统和Windows CE的分区管理程序构成了操作系统的存储子系统。各个功能模块的结构关系如图4所示。
步骤1:修改EBoot
EBoot是Windows CE自带的一个Bootloader程序,其中包含了系统启动和初始化的一系列代码,完成系统参数初始化、创建分区及文件系统、提供USB接口及以太网通信、烧写、装载和运行操作系统镜像等一系列功能,其中对分区及文件系统的操作就包含了对NAND Flash进行操作的代码。
EBoot的代码中和NAND Flash有关的部分主要涉及对分区及文件系统进行操作的几个函数,其对NAND Flash的操作也是通过调用与块设备驱动程序共用的FMD_xxx系列函数来完成的。除此之外还需要对EBoot的头文件Loader.h中的几个相关的宏定义进行修改:
#define SECTOR_SIZE      204811  //定义页面大小
#define PAGES_PER_BLOCK  64      //定义块中的页面数
#define SECTOR_TO_BLOCK(sector)      ((sector)>>6)//页地址到块地址的转换,页地址右移6位即为块地址
#define BLOCK_TO_SECTOR(block)((block)<<6)//块地址到页地址的转换,块地址左移6位即为页地址
步骤2:编写块设备驱动程序
Windows CE操作系统为包括NAND和Nor在内的Flash器件建立了统一的块设备驱动程序结构,由MDD层的FAL(闪存抽象层)和PDD层的FMD_xxx系列函数组成。FAL包含存储组织、损耗平衡、坏块管理等代码,通过调用FMD_xxx系列函数完成器件的底层操作,向上层操作系统提供完备的块设备驱动程序接口,其成员和功能见表2所示。
表2
  函数   功能
  FMD_Init   驱动程序加载初始化
  FMD_Deinit   驱动程序卸载
  FMD_GetInfo   获取Flash器件信息(器件类型、块页的大小、数量等)
  FMD_GetBlockStatus   获取块状态
  FMD_SetBlockStatus   设置块状态
  FMD_ReadSector   读取页面数据
  FMD_WriteSector   写入页面数据
  FMD_EraseBlock   擦除块
  FMD_PowerUp   电源管理
  FMD_PowerDown   电源管理
  FMD_OEMIoControl   为上层的DeviceIoControl函数调用提供底层实现
EBoot和块设备驱动程序Flashdrv.dll都通过FMD_xxx系列函数对NAND Flash进行底层操作,下面是读扇区函数FMD_ReadSector的部分代码:
BOOL FMD_ReadSector(SECTOR_ADDR startSectorAddr,LPBYTE pSectorBuff,
                      PSectorInfo pSectorInfoBuff,DWORD dwNumSectors)
{
……
  NF_CLEAR_RB();//释放Ready信号
  NF_CMD(0x00);//送第一次读操作码
  NF_ADDR(0x00);//送列地址低位
  NF_ADDR(0x00);//送列地址高位
  NF_ADDR((startSectorAddr)&0xff);//送行地址低位
  NF_ADDR((startSectorAddr>>8)&0xff);//送行地址高位
  NF_CMD(0x30);//送第二次读操作码
  NF_DETECT_RB();//等待器件的Ready信号
for(i=0;i<2048;i++){
              pSectorBuff[i]=(BYTE)NF_DATA_R();//读取一个页面的数据到缓冲区
    }
    ……
}
其他函数的实现也与此类似。同时,FMD_GetInfo函数还需要向FAL返回当前器件的各种信息:
BOOL FMD_GetInfo(PFlashInfo pFlashInfo)
{
  pFlashInfo->flashType=NAND;//Flash器件类型,NAND或NOR
  pFlashInfo->dwNumBlock=1024;//块数目
  pFlashInfo->dwBytesPerBlock=64*2048;//每块包含的字节数
  pFlashInfo->wSectorsPerBlock=64;//每块内的页面数目
  pFlashInfo->wDataBytesPerSector=2048;//页面大小
  return TRUE;
}
步骤3:改造FAT文件系统
文件管理系统处于整个存储系统的最上层,包括分区装载程序和文件系统。操作系统启动时,由分区加载程序mspart.dll检查块设备的分区表,并根据每个分区的文件系统标识加载相应的文件系统。系统一般设有二个分区,第一个采用BinFS文件系统,用于存储Windows CE操作系统的镜像文件NK.bin;另一个分区采用FAT文件系统,用于存储用户数据。FAT文件系统一般由fatfsd.dll和fatutil.dll两个文件组成,前者负责文件系统的挂载、卸载、读取、写入、搜索等操作,后者则包含了对FAT分区的扫描、格式化等功能代码;应用层软件通过FAT文件系统对存储子系统及存储器件进行操作。
常规页面NAND Flash和Nor Flash的页面大小与FAT文件系统所定义的扇区大小恰好相同,均为512字节,因此微软公司在设计Windows CE操作系统的FAT文件系统时就利用了这一特性,使文件系统的虚拟扇区大小与Flash器件的页面大小相同。Windows CE操作系统启动时,会通过分区加载程序mspart.dll加载NAND Flash分区;由于其加载时会通过fatutil.dll判断存储设备的页面大小是否为512字节,如果不是就停止装载,因此需要解决NAND Flash器件的页面大小与FAT文件系统虚拟扇区大小不一致的问题。
假设Windows CE开发包安装在D盘下,首先在目录D:\WINCE420\PRIVATE\WINCEOS\COREOS\FSD\FATFS\下找到文件fatfmt.h,在目录D:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\FSD\FATUTIL\MAIN目录下找到文件fatutilp.h,将两个文件中的参数宏定义DEFAULT_SECTOR_SIZE由512改为2048,并根据该参数修改FAT文件系统源代码的相关部分;然后在Windows CE 4.2版本的开发工具Platform Builder(PB)环境下,点击菜单“Build->Open Build Release Directory”,打开编译环境命令行窗口,在两个目录下分别执行build命令重新编译,在目录D:\WINCE420\PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL下就会生成全新的静态库文件fatfsd.lib和fatutil_main.lib。最后在PB工程中加入对FAT文件系统的支持,重新编译生成镜像文件NK.bin;这样,新生成的FAT文件系统使用的虚拟扇区大小为2048,就能够完善地支持大页面NAND Flash器件。
3、性能测试结果
将K9F1208(页面大小512字节)和K9F1G08(页面大小2048字节)二种器件,在同样的条件下(Windows CE环境,采用400MHz S3C2440A处理器)采用不同的读缓冲区大小进行了速度测试。从测试结果来看,利用本方法实现的大页面NAND Flash存储系统与常规页面NAND Flash器件实现的存储系统相比有着显著的性能优势;测试结果如表3所示
表3
Figure BSA00000203061200061
(单位:MByte/s)

Claims (1)

1.一种在Windows CE环境下建立大页面Nand Flash存储系统的方法,其特征在于:采用2048字节及其以上大页面的NAND Flash器件,以及其与内部自带NAND Flash控制器的嵌入式处理器之间的硬件接口方式;
将Windows CE系统启动装载程序EBoot代码中设备块尺寸定义等于NAND Flash器件的块尺寸,设备页面的尺寸定义等于NAND Flash器件的页面尺寸,页地址和块地址之间互相转换的宏定义符合实际器件结构的定义;
设定Windows CE设备驱动程序代码中FMD_xxx系列函数的实现中的存取缓冲区大小与大页面NAND Flash存储器件的页尺寸相同,以及向FAL闪存抽象层返回的信息符合器件内部结构信息;
根据大页面NAND Flash器件的实际页面大小改造FAT文件系统扇区大小,包括对核心文件fatfsd.dll和fatutil.dll的修改和重编译方法使文件系统扇区大小与实际器件页面大小相一致。
CN2010102352914A 2010-07-21 2010-07-21 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法 Active CN101923570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102352914A CN101923570B (zh) 2010-07-21 2010-07-21 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102352914A CN101923570B (zh) 2010-07-21 2010-07-21 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法

Publications (2)

Publication Number Publication Date
CN101923570A true CN101923570A (zh) 2010-12-22
CN101923570B CN101923570B (zh) 2012-07-04

Family

ID=43338503

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102352914A Active CN101923570B (zh) 2010-07-21 2010-07-21 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法

Country Status (1)

Country Link
CN (1) CN101923570B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866862A (zh) * 2012-07-26 2013-01-09 浪潮电子信息产业股份有限公司 一种基于4k扇区硬盘性能优化的方法
CN105843360A (zh) * 2016-03-23 2016-08-10 中国电子科技集团公司第三十八研究所 一种降低指令高速缓冲存储器功耗的装置及方法
CN106681893A (zh) * 2016-12-29 2017-05-17 记忆科技(深圳)有限公司 一种nand flash模拟器的实现方法
CN111966369A (zh) * 2020-10-20 2020-11-20 延锋伟世通电子科技(南京)有限公司 一种nand存储器离线烧录镜像制作及验证方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060114730A1 (en) * 2004-12-01 2006-06-01 Samsung Electronics Co., Ltd. Nonvolatile memory devices and programming methods using subsets of columns
US20070233939A1 (en) * 2006-03-31 2007-10-04 Mosaid Technologies Incorporated Flash memory system control scheme
CN101101790A (zh) * 2006-07-07 2008-01-09 乐金电子(昆山)电脑有限公司 与非闪存的读取方法
CN101145385A (zh) * 2006-08-04 2008-03-19 三星电子株式会社 存储卡以及在存储卡上存储数据的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060114730A1 (en) * 2004-12-01 2006-06-01 Samsung Electronics Co., Ltd. Nonvolatile memory devices and programming methods using subsets of columns
US20070233939A1 (en) * 2006-03-31 2007-10-04 Mosaid Technologies Incorporated Flash memory system control scheme
CN101101790A (zh) * 2006-07-07 2008-01-09 乐金电子(昆山)电脑有限公司 与非闪存的读取方法
CN101145385A (zh) * 2006-08-04 2008-03-19 三星电子株式会社 存储卡以及在存储卡上存储数据的方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866862A (zh) * 2012-07-26 2013-01-09 浪潮电子信息产业股份有限公司 一种基于4k扇区硬盘性能优化的方法
CN105843360A (zh) * 2016-03-23 2016-08-10 中国电子科技集团公司第三十八研究所 一种降低指令高速缓冲存储器功耗的装置及方法
CN105843360B (zh) * 2016-03-23 2018-06-12 中国电子科技集团公司第三十八研究所 一种降低指令高速缓冲存储器功耗的装置及方法
CN106681893A (zh) * 2016-12-29 2017-05-17 记忆科技(深圳)有限公司 一种nand flash模拟器的实现方法
CN106681893B (zh) * 2016-12-29 2019-07-12 记忆科技(深圳)有限公司 一种nand flash模拟器的实现方法
CN111966369A (zh) * 2020-10-20 2020-11-20 延锋伟世通电子科技(南京)有限公司 一种nand存储器离线烧录镜像制作及验证方法
CN111966369B (zh) * 2020-10-20 2021-02-26 延锋伟世通电子科技(南京)有限公司 一种nand存储器离线烧录镜像制作及验证方法

Also Published As

Publication number Publication date
CN101923570B (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN100456272C (zh) 利用快闪存储器引导的系统和方法
KR100755111B1 (ko) 컨트롤러, 메모리 카드 및 그 제어 방법
CN100520734C (zh) 闪存的控制装置与方法
US8131911B2 (en) Data writing method, and flash storage system and controller using the same
CN101366182B (zh) 输出nand接口的nand闪存控制器
KR101395778B1 (ko) 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
CN101814318B (zh) 多层存储单元与非型闪存储存系统及其控制器与存取方法
KR100921787B1 (ko) 낸드 플래시 메모리 제어장치
US20100042773A1 (en) Flash memory storage system and data writing method thereof
EP2053501A2 (en) Initialization of flash storage via an embedded controller
US20070300009A1 (en) Flash driver support techniques
WO2009085408A1 (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US20080002469A1 (en) Non-volatile memory
CN101923570B (zh) 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法
CN110765032A (zh) 基于系统管理总线接口对i2c存储器进行读写的方法
CN103136111A (zh) 数据写入方法、存储器控制器与存储器储存装置
CN100365574C (zh) 一种嵌入式芯片及其程序空间扩展的方法
CN112199121B (zh) Dsp按需扩容加载程序方法
US7644247B2 (en) System controller for flash memory
CN112148649A (zh) 一种u-boot系统下的eMMC HS400传输模式实现方法及装置
CN103677868A (zh) 一种通过芯片内部的mcu配置芯片内置fpga的方法
CN101030172A (zh) 用于编程与非闪存和存储系统的方法
CN110209433B (zh) 一种识别不同型号集中器的方法
CN102122269B (zh) 闪存的写入逾时控制方法及其记忆装置
CN102760061B (zh) 屏蔽固态硬盘存储接口差异的方法及存储系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant