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

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

Info

Publication number
CN1737759A
CN1737759A CN 200510044478 CN200510044478A CN1737759A CN 1737759 A CN1737759 A CN 1737759A CN 200510044478 CN200510044478 CN 200510044478 CN 200510044478 A CN200510044478 A CN 200510044478A CN 1737759 A CN1737759 A CN 1737759A
Authority
CN
China
Prior art keywords
nand
data
address
romfs
page
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 200510044478
Other languages
English (en)
Other versions
CN100395704C (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存储器中直接建立只读文件系统的方法,包括微处理器,SDRAM,Nand_flash存储器,还包括下述步骤:
通过编译系统的定位文件,把保存RomFs数据的文件在编译时,放置到软件系统各功能块列表的最高地址位置;
Nand_Flash存储器初始化,进行坏块检测并保存记录;
计算RomFs数据在Nand中的存储地址与SDRAM中的映射的运行地址的偏移量;
计算Nand页地址,通过Nand_Flash页读取函数,得到RomFs数据。
其中RomFs数据在Nand中位置与SDRAM中位置偏移共有三部分组成,第一部分是拷贝起始块,第二部分是坏块的偏移,第三部分是RomFs数据存储地址与运行地址的差值。
对于坏块的偏移可以采用顺推法规避坏块,拷贝起始块与坏块偏移在Nand_Flash存储器初始化,坏块检测步骤时,记录了拷贝起始块和坏块的序号并存在保存区中。
第三部分RomFs数据存储地址与运行地址的差值可以由编译系统中的存储地址和运行地址这两个值相减得到。
应用ARM编译系统,RomFs数据存储地址是RomFs在存储中的起始地址,具体值是Load$$ROMFS_DATA$$Base。运行地址是RomFs在运行空间中的起始地址,具体值是Image$$ROMFS_DATA$$Base。
其中的读取RomFs数据的步骤,首先根据RomFs数据在Nand中位置与SDRAM中位置偏移的结果计算Nand_Flash的页地址,读取此Nand页,根据页中的偏移量拷贝数据,得到RomFs数据,如果数据长度大于此页中读取的有效数据的长度,则页地址加页长度,指向下一页,对比页地址与坏块记录中坏块地址,重新计算偏移量,继续进行数据拷贝。
把SDRAM存储器中的堆(Heap)空间起始设置为ZI数据区的结束位置,覆盖RomFs的运行地址空间,增大了堆空间。可以在应用手机编辑高质量图片和音乐的时候,申请大的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中位置偏移的结果计算Nand_Flash的页地址,计算方式为:
页地址=(Nand中的实际存储地址/Nand页长度)*Nand页长度
由于是整数操作,这样就可以得到页地址,保留页内偏移地址。
页内偏移地址=Nand中的实际存储地址-页地址
读取此Nand页,根据页中的偏移量拷贝数据,得到RomFs数据。如果数据长度大于此页中读取的有效数据的长度,则页地址加页长度,指向下一页,对比页地址与坏块记录中坏块地址,重新计算偏移量,继续进行拷贝。
如图7所示,是SDRAM中软件系统各部分运行地址列表,包括程序区,RW数据区(初始值为非0的全局变量区),ZI数据区(初始值为0的全局变量区),RomFs数据区和剩余的RAM空间,其中剩余的空间即堆中的存储空间的使用是随机分配的,和软件系统编译时规定的运行地址无关。把堆(Heap)空间起始设置为ZI区的结束位置而不是整个程序结束位置,则可以覆盖RomFs的运行地址空间,增大了SDRAM中的堆空间容量。
由于高像素拍照手机支持百万像素的摄像,编辑图片需要申请大空间,所以使用了此发明可以增大SDRAM的堆空间使用容量。

Claims (7)

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

Cited By (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存储介质的固件程序检测方法
CN102792296A (zh) * 2011-08-15 2012-11-21 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
CN105513630A (zh) * 2015-11-30 2016-04-20 深圳市江波龙电子有限公司 Dram的初始化方法及装置
US10592426B2 (en) 2018-01-23 2020-03-17 Asmedia Technology Inc. Physical region page address converter and physical region page list access method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
GB2404748B (en) * 2003-08-01 2006-10-04 Symbian Ltd Computing device and method

Cited By (6)

* 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存储介质的固件程序检测方法
CN102792296A (zh) * 2011-08-15 2012-11-21 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
CN102792296B (zh) * 2011-08-15 2016-10-26 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
CN105513630A (zh) * 2015-11-30 2016-04-20 深圳市江波龙电子有限公司 Dram的初始化方法及装置
US10592426B2 (en) 2018-01-23 2020-03-17 Asmedia Technology Inc. Physical region page address converter and physical region page list access method

Also Published As

Publication number Publication date
CN100395704C (zh) 2008-06-18

Similar Documents

Publication Publication Date Title
US11748258B2 (en) Method for managing a memory apparatus
KR101185617B1 (ko) 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
US7890550B2 (en) Flash memory system and garbage collection method thereof
US7039788B1 (en) Method and apparatus for splitting a logical block
EP3662379B1 (en) Memory addressing
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
US8402202B2 (en) Input/output control method and apparatus optimized for flash memory
CN1420440A (zh) 快闪存储器管理方法
EP2665065A2 (en) Electronic device employing flash memory
US7702845B2 (en) Method and apparatus for managing blocks according to update type of data in block-type memory
CN1700188A (zh) 用于控制非易失性存储器的控制器
CN1822217A (zh) 将数据存储在非易失性高速缓冲存储器中的设备和方法
US10606744B2 (en) Method for accessing flash memory module and associated flash memory controller and electronic device
US20100042775A1 (en) Block management method for flash memory, and storage system and controller using the same
CN1737759A (zh) 一种在Nand Flash存储器中直接建立只读文件系统的方法
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US20100174850A1 (en) Data moving method and system utilizing the same
CN111338562A (zh) 数据存储装置与数据处理方法
US11543993B1 (en) Fast garbage collection in zoned namespaces SSDs
Kaiser et al. Extending SSD lifetime in database applications with page overwrites
US12099735B2 (en) Memory system
US11941273B2 (en) Variable capacity Zone Namespace (ZNS) flash storage data path
KR100895429B1 (ko) 플래시 메모리 파일 장치 및 그 마운트 방법
US8935460B2 (en) Memory apparatus
CN1776686A (zh) Fat文件系统中基于位置的接口访问方法及其装置

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