CN100395704C - 一种在Nand Flash存储器中直接建立只读文件系统的方法 - Google Patents

一种在Nand Flash存储器中直接建立只读文件系统的方法 Download PDF

Info

Publication number
CN100395704C
CN100395704C CNB2005100444785A CN200510044478A CN100395704C CN 100395704 C CN100395704 C CN 100395704C CN B2005100444785 A CNB2005100444785 A CN B2005100444785A CN 200510044478 A CN200510044478 A CN 200510044478A CN 100395704 C CN100395704 C CN 100395704C
Authority
CN
China
Prior art keywords
read
data
address
file
nand flash
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.)
Expired - Fee Related
Application number
CNB2005100444785A
Other languages
English (en)
Other versions
CN1737759A (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.)
Hisense Group Co Ltd
Hisense Mobile Communications Technology Co Ltd
Original Assignee
Hisense Group Co Ltd
Hisense Mobile Communications Technology Co Ltd
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 Hisense Group Co Ltd, Hisense Mobile Communications Technology Co Ltd filed Critical Hisense Group Co Ltd
Priority to CNB2005100444785A priority Critical patent/CN100395704C/zh
Publication of CN1737759A publication Critical patent/CN1737759A/zh
Application granted granted Critical
Publication of CN100395704C publication Critical patent/CN100395704C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了在Nand flash存储器中直接建立只读文件系统的方法,包括微处理器,SDRAM,Nand flash存储器,通过编译系统的定位文件,把保存RomFs数据的文件在编译时,放置到软件系统各功能块列表的最高地址位置;Nand Flash存储器初始化,进行坏块检测并保存记录;计算RomFs数据在Nand中位置与SDRAM中位置的偏移量;通过Nand Flash页读取函数,计算页地址,得到RomFs数据,本发明解决了SDRAM中的空间大量被占用的问题,RomFs原来在SDRAM中的映射空间可以被随机分配使用,扩大了SDRAM的应用空间。

Description

一种在Nand Flash存储器中直接建立只读文件系统的方法
技术领域
本发明属于移动通信终端技术领域,更具体地说是涉及到移动通信终端中的Nand Flash存储器中直接建立只读文件系统的实现方法。
背景技术
目前CDMA(码分多址)制式手机的应用技术开发,是建立在ARM嵌入式处理器的体系基础之上。CDMA手机的软件是由实时内核直接控制运行的,并没有操作系统的支持,所运行的软件代码需要能直接读取,因此如果CDMA手机中的代码存储在Nand Flash存储器中时,则无法直接运行,必须需要从Nand Flash存储器拷贝到SDRAM同步动态随机存储器中再运行,其拷贝是完全拷贝,占用了大量的SDRAM空间,随着现在百万像素手机、MP3音乐手机的广泛应用,需要SDRAM存储器提供更大的容量空间,因此目前SDRAM存储器难以满足需要。
发明内容
本发明的目的,就在于克服目前手机中读取软件代码时,需要把代码从Nand Flash存储器拷贝到SDRAM,占用大量的SDRAM存储器空间的缺点和不足,提供一种在Nand Flash存储器中直接建立只读文件系统的方法,在现在的软件结构中只读的数据占用了大量空间,其中大多数的数据采用只读文件系统的方式读取,因此可以建立一个在Nand Flash中的RomFs(Read only memory File system)只读文件系统,RomFs读取操作时直接从Nand Flash中读取,不需要拷贝到SDRAM中。本发明解决了SDRAM中的空间大量被占用的问题,RomFs原来在SDRAM中的映射空间可以被随机分配使用,扩大了SDRAM的应用空间。
为了达到上述目的,本发明提供了在Nand flash存储器中直接建立只读文件系统的方法,包括下述步骤:
通过编译系统的定位文件,把保存只读文件数据的文件在编译时,放置到软件系统各功能块列表的最高地址位置;
Nand Flash存储器初始化,进行坏块检测并保存记录;
计算只读文件数据在Nand中的存储地址与SDRAM中的映射的运行地址的偏移量;
计算Nand页地址,通过Nand Flash页读取函数,得到只读文件数据。
其中只读文件数据在Nand中位置与SDRAM中位置偏移共有三部分组成,第一部分是拷贝起始块,第二部分是坏块的偏移,第三部分是只读文件数据存储地址与运行地址的差值。
对于坏块的偏移采用顺推法规避坏块,拷贝起始块与坏块偏移在Nand Flash存储器初始化,坏块检测步骤时,记录了拷贝起始块和坏块的序号并存在保存区中。
第三部分只读文件数据存储地址与运行地址的差值由编译系统中的存储地址和运行地址这两个值相减得到。
应用ARM编译系统,只读文件数据存储地址是只读文件在存储中的起始地址,具体值是Load$$ROMFS_DATA$$Base。运行地址是只读文件在运行空间中的起始地址,具体值是Image$$ROMFS_DATA$$Base。
其中的读取只读文件数据的步骤,首先根据只读文件数据在Nand中位置与SDRAM中位置偏移的结果计算Nand Flash的页地址,读取此Nand页,根据页中的偏移量拷贝数据,得到只读文件数据,如果数据长度大于此页中读取的有效数据的长度,则页地址加页长度,指向下一页,对比页地址与坏块记录中坏块地址,重新计算偏移量,继续进行数据拷贝。
把SDRAM存储器中的堆Heap空间起始设置为ZI数据区的结束位置,覆盖只读文件的运行地址空间,增大了堆空间。可以在应用手机编辑高质量图片和音乐的时候,申请大的SDRAM空间。
附图说明
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明的方法流程图;
图2为本发明中的Nand Flash存储器坏块检测示意图;
图3为本发明中的手机初始化流程图;
图4为本发明中软件系统在二进制文件中的存储排列方式示意图;
图5为本发明中软件系统运行时在SDRAM中的排列方式示意图;
图6为本发明在Nand Flash中的RomFs读取数据的流程图;
图7为本发明的SDRAM中软件系统各部分运行地址列表的示意图。
具体实施方式
如图1所示,通过编译系统的定位文件,把保存RomFs数据的文件在编译时,放置到软件系统各功能块列表的最高地址位置,然后Nand Flash存储器初始化,进行坏块检测并保存记录,计算RomFs数据在Nand中位置与SDRAM中位置的偏移量,最后通过Nand Flash页读取函数,计算页地址,得到RomFs数据。
由于嵌入式软件需要在电脑中编译,然后在嵌入式系统中运行,所以其运行模式是在电脑编译时生成二进制文件,这个二进制文件是嵌入式系统的指令集合,然后通过专用工具下载到嵌入式系统的Flash闪存存储器或SDRAM中执行。
首先对源代码和ARM编译系统的定位文件进行修改。把RomFs的数据放置到专用的保存此数据的文件中,在编译时把此文件通过ARM编译系统的定位文件(Scatter Location file)放置在到整个软件系统的最后位置,也就是软件系统各功能块列表的最高地址的位置。
实施例1,对于只读数据文件ui_data.c和ui_ringer_data.c,在编译时,通过ARM编译系统的定位文件,放在软件系统各功能块列表的最高地址的位置上。
SOFT 0x0 0x2000000
{
  …………………..
  ROMFS_DATA+0
  {
    ui_data.o(+RO-DATA)
    ui_ringer_data.o(+RO-DATA)
    }
}
可以看到,把只读数据文件ui_data.c和ui_ringer_data.c放置在程序区ROMFS_DATA中,此程序区位于整个软件系统的最高地址的位置。
由于程序不能在Nand Flash存储器中直接运行,手机程序初始化时执行Nand Flash到SDRAM的拷贝程序,包括主程序区和可读写数据区,拷贝软件系统数据至SDRAM中,在拷贝时需要检测由Nand Flash特性所决定的无法避免的坏块,记录所有坏块信息。RomFs的数据保存在软件系统的数据的最后位置,可以不拷贝RomFs只记录坏块信息,但是此段Nand区域的坏块信息必须记录。
如图2所示,对Nand Flash存储器进行坏块检测,记录坏块的信息和程序拷贝的起始块。
如图3所示,手机初始化时,Nand Flash和SDRAM存储器均进行初始化,然后对Nand Flash存储器进行坏块检测,如果检测该块不是坏块,则读取数据并拷贝到SDRAM中,如果检测该块是坏块,则记录这个坏块的序号并存在保存区内,数据读取完毕,拷贝结束。
由于RomFs数据是以数组的形式存储的,软件系统执行时读取数据时是以RomFs的运行地址为基础的,而本发明中RomFs的操作程序读取则是从Nand Flash中读取数据,这两个位置之间存在偏移,读取RomFs数据时,必须计算两者之间的偏移。因此需要对RomFs数据在Nand中的存储地址与SDRAM中的映射的运行地址的偏移进行计算。
位置偏移共有三部分组成,第一部分是拷贝起始块,第二部分是坏块的偏移,对于坏块的偏移可以采用的是顺推法规避坏块,拷贝起始块与坏块偏移在坏块检测步骤时保存区中记录了拷贝起始块和坏块的序号,因此可以得到这两部分的数值。
第三部分是RomFs数据存储地址与运行地址的差值。第三个值可以通过ARM编译系统找到具体的地址,在所给出的的存储地址,即RomFs在存储中的起始地址,在实施例1中的通过ARM编译系统找到存储地址具体值是Load$$ROMFS_DATA$$Base。运行地址是RomFs在运行空间中的起始地址,在实施例1中运行地址的具体值是Image$$ROMFS_DATA$$Base。存储地址和运行地址这两个值相减得到可以得到第三部分中的差值。
如图4,图5所示,可以很明显的看出存储地址与运行地址的位置不同,图4是二进制文件中的存储排列方式,图5是软件系统运行时在SDRAM中的排列方式。而指针地址是按照运行地址来操作的,要得到存储地址,就需要得到这两个地址之间的差值。
上述的三个部分的值经过计算,就可以得到Nand中所保存的RomFs的数据的准确位置。
如图6所示,RomFs读取函数,其中的参数包含运行空间读取位置,长度和数据返回指针。计算页地址,采用Nand Flash页读取函数,得到RomFs数据,直到判断数据读取完毕。
在Nand Flash中的RomFs读取数据。首先需要修改RomFs软件中的读取函数,其读取数据的函数从直接拷贝SDRAM数据修改为Nand Flash页读取函数。
根据RomFs数据在Nand中位置与SDRAM中位置偏移的结果计算NandFlash的页地址,计算方式为:
页地址=(Nand中的实际存储地址/Nand页长度)*Nand页长度
由于是整数操作,这样就可以得到页地址,保留页内偏移地址。
页内偏移地址=Nand中的实际存储地址-页地址
读取此Nand页,根据页中的偏移量拷贝数据,得到RomFs数据。如果数据长度大于此页中读取的有效数据的长度,则页地址加页长度,指向下一页,对比页地址与坏块记录中坏块地址,重新计算偏移量,继续进行拷贝。
如图7所示,是SDRAM中软件系统各部分运行地址列表,包括程序区,RW数据区(初始值为非0的全局变量区),ZI数据区(初始值为0的全局变量区),RomFs数据区和剩余的RAM空间,其中剩余的空间即堆中的存储空间的使用是随机分配的,和软件系统编译时规定的运行地址无关。把堆(Heap)空间起始设置为ZI区的结束位置而不是整个程序结束位置,则可以覆盖RomFs的运行地址空间,增大了SDRAM中的堆空间容量。
由于高像素拍照手机支持百万像素的摄像,编辑图片需要申请大空间,所以使用了此发明可以增大SDRAM的堆空间使用容量。

Claims (7)

1.一种在Nand flash存储器中直接建立只读文件系统的方法,其特征在于包括下述步骤:
通过编译系统的定位文件,把保存只读文件数据的文件在编译时,放置到软件系统各功能块列表的最高地址位置;
Nand Flash存储器初始化,进行坏块检测并保存记录;
计算只读文件数据在Nand中的存储地址与SDRAM中的映射的运行地址的偏移量;
计算Nand页地址,通过Nand Flash页读取函数,得到只读文件数据。
2.根据权利要求1所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于位置偏移共有三部分组成,第一部分是拷贝起始块,第二部分是坏块的偏移,第三部分是只读文件数据存储地址与运行地址的差值。
3.根据权利要求1或2所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于对于坏块的偏移采用顺推法规避坏块,拷贝起始块与坏块偏移在坏块检测步骤时,记录了拷贝起始块和坏块的序号并存在保存区中。
4.根据权利要求1或2所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于第三部分只读文件数据存储地址与运行地址的差值由编译系统中的存储地址和运行地址这两个值相减得到。
5.根据权利要求4所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于ARM编译系统中只读文件数据存储地址具体值是Load$$ROMFS_DATA$$Base,运行地址是只读文件在运行空间中的起始地址,具体值是Image$$ROMFS_DATA$$Base。
6.根据权利要求1所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于首先根据只读文件数据在Nand中的存储地址与SDRAM中的映射的运行地址偏移的结果,计算Nand Flash的页地址,应用Nand Flash页读取函数,读取此Nand页,根据页中的偏移量拷贝数据,得到只读文件数据,如果数据长度大于此页中读取的有效数据的长度,则页地址加页长度,指向下一页,对比页地址与坏块记录中坏块地址,重新计算偏移量,继续进行数据拷贝。
7.根据权利要求1所述的在Nand flash存储器中直接建立只读文件系统的方法,其特征在于把SDRAM存储器中堆空间起始设置为ZI数据区的结束位置,覆盖只读文件的运行地址空间。
CNB2005100444785A 2005-08-27 2005-08-27 一种在Nand Flash存储器中直接建立只读文件系统的方法 Expired - Fee Related CN100395704C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100444785A CN100395704C (zh) 2005-08-27 2005-08-27 一种在Nand Flash存储器中直接建立只读文件系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100444785A CN100395704C (zh) 2005-08-27 2005-08-27 一种在Nand Flash存储器中直接建立只读文件系统的方法

Publications (2)

Publication Number Publication Date
CN1737759A CN1737759A (zh) 2006-02-22
CN100395704C true CN100395704C (zh) 2008-06-18

Family

ID=36080562

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100444785A Expired - Fee Related CN100395704C (zh) 2005-08-27 2005-08-27 一种在Nand Flash存储器中直接建立只读文件系统的方法

Country Status (1)

Country Link
CN (1) CN100395704C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100449549C (zh) * 2007-09-30 2009-01-07 浙江大学 嵌入式系统中NAND Flash存储器上建立文件系统的方法
CN101710302B (zh) * 2009-01-09 2011-08-17 深圳市江波龙电子有限公司 基于NandFlash存储介质的固件程序检测方法
US9471584B2 (en) * 2011-08-15 2016-10-18 Spreadtrum Communications (Shanghai) Co., Ltd. Demand paging method for mobile terminal, controller and mobile terminal
CN105513630B (zh) * 2015-11-30 2019-08-13 深圳市江波龙电子股份有限公司 Dram的初始化方法及装置
TWI662409B (zh) 2018-01-23 2019-06-11 祥碩科技股份有限公司 實體區域頁面位址轉換器與實體區域頁面清單存取方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040083348A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
WO2005013125A1 (en) * 2003-08-01 2005-02-10 Symbian Software Limited A method of accessing data in a computing device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040083348A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
WO2005013125A1 (en) * 2003-08-01 2005-02-10 Symbian Software Limited A method of accessing data in a computing device

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
一种嵌入式Flash文件系统的设计和实现. 潭小安,候成刚,徐光华.仪器仪表用户,第11卷第1期. 2004
一种嵌入式Flash文件系统的设计和实现. 潭小安,候成刚,徐光华.仪器仪表用户,第11卷第1期. 2004 *
大容量Nand Flash在ARM嵌入式系统中的应用. 蔡锦达,王德福,黄小松,申屠理峰,吴美娟.工业控制计算机,第17卷第5期. 2004
大容量Nand Flash在ARM嵌入式系统中的应用. 蔡锦达,王德福,黄小松,申屠理峰,吴美娟.工业控制计算机,第17卷第5期. 2004 *

Also Published As

Publication number Publication date
CN1737759A (zh) 2006-02-22

Similar Documents

Publication Publication Date Title
US11520697B2 (en) Method for managing a memory apparatus
US7788441B2 (en) Method for initializing and operating flash memory file system and computer-readable medium storing related program
US8086787B2 (en) Wear leveling method, and storage system and controller using the same
US8862855B2 (en) Reading/writing control method and system for nonvolatile memory storage device
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
US7127551B2 (en) Flash memory management method
CN100487672C (zh) 用于分割一逻辑块的方法及设备
US7702845B2 (en) Method and apparatus for managing blocks according to update type of data in block-type memory
US20100011153A1 (en) Block management method, and storage system and controller using the same
US20080109590A1 (en) Flash memory system and garbage collection method thereof
US20100011154A1 (en) Data accessing method for flash memory and storage system and controller using the same
US20090164696A1 (en) Physical block addressing of electronic memory devices
US20130227198A1 (en) Flash memory device and electronic device employing thereof
US20120151125A1 (en) Data processing method for nonvolatile memory system
CN100395704C (zh) 一种在Nand Flash存储器中直接建立只读文件系统的方法
CN101727395A (zh) 闪存设备的管理系统、方法及闪存设备
KR20080007470A (ko) Mram을 이용하는 비휘발성 메모리 시스템
US10606744B2 (en) Method for accessing flash memory module and associated flash memory controller and electronic device
US20160188462A1 (en) Method and apparatus for partial garbage collection in filesystems
US8010734B2 (en) Method and system for reading instructions from NAND flash memory and writing them into SRAM for execution by a processing device
JP2006252137A (ja) 不揮発性記憶装置の最適化方法
KR20180076276A (ko) 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
CN107391191B (zh) 一种程序模块动态装载方法
CN100444166C (zh) Fat文件系统中基于位置的接口访问方法及其装置
US8751770B2 (en) Semiconductor recording apparatus and semiconductor recording system

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080618

Termination date: 20130827