CN102103596B - 在嵌入式系统中实现文件系统的方法 - Google Patents

在嵌入式系统中实现文件系统的方法 Download PDF

Info

Publication number
CN102103596B
CN102103596B CN200910188992.4A CN200910188992A CN102103596B CN 102103596 B CN102103596 B CN 102103596B CN 200910188992 A CN200910188992 A CN 200910188992A CN 102103596 B CN102103596 B CN 102103596B
Authority
CN
China
Prior art keywords
file
fileinfo
information
storage
district
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.)
Active
Application number
CN200910188992.4A
Other languages
English (en)
Other versions
CN102103596A (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.)
Shenzhen Konka Holding Group Co ltd
Original Assignee
Konka Group 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 Konka Group Co Ltd filed Critical Konka Group Co Ltd
Priority to CN200910188992.4A priority Critical patent/CN102103596B/zh
Publication of CN102103596A publication Critical patent/CN102103596A/zh
Application granted granted Critical
Publication of CN102103596B publication Critical patent/CN102103596B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种在嵌入式系统中实现文件系统的方法,其包括步骤:建立由若干个用于分别描述每个文件信息的文件信息结构构成文件信息区和用于存储文件的文件数据区组成的文件系统;初始化文件系统;通过日志的方法来建立和维护文件信息区,每次对文件进行写操作时,在将文件写入到文件数据区后,再将文件信息的记录更新至文件信息区信息。本发明实现了一个可根据需要配置修改需存储文件个数和总容量;具备断电保护功能,对操作系统依赖性小便于移植,对文件读写操作效率高,并且代码小占用资源少的文件系统。

Description

在嵌入式系统中实现文件系统的方法
技术领域
本发明涉及文件操作方法,尤其是涉及一种在嵌入式系统中实现文件系统的方法。
背景技术
在已有的嵌入式文件系统技术中,大部分是FAT或Ext2fs文件系统,由于FAT和Ext2fs等文件系统是以IDE只支持像IDE那样的块设备,不但代码比较庞大,而且没有考虑设备擦写时序和时间要求,没有掉电保护。
而对于专用于嵌入式系统的JFFS2文件系统。除了本身比较复杂外,它主要设计应用于Linux操作系统,对Linux操作系统的运行机制依赖性比较大,因而难以移植;它是一种基于日志型的文件系统,导致了启动速度比较慢。另外JFFS2对损耗平衡是用概率的方法来解决的,这很难保证损耗平衡的确定性,在一定程度上造成了对擦写块不必要的擦写操作。
因此,目前嵌入式系统的这些文件系统过于强调通用性,而忽略了嵌入式系统对文件系统的特殊要求。在嵌入式系统中,一般要存储的文件个数不多;数据总容量不大;安全性要求比较高,要能断电保护;代码对操作系统依赖性要小,以便于移值;文件系统本身代码要简单,以节省系统资源。
发明内容
本发明提出一种在嵌入式系统中实现文件系统的方法,实现了一个可根据需要配置修改需存储文件个数和总容量,具备断电保护功能,对操作系统依赖性小便于移植,而且本身代码简单的文件系统。
本发明采用了如下技术方案来实现:一种在嵌入式系统中实现文件系统的方法,其包括步骤:
建立由若干个用于分别描述每个文件信息的文件信息结构构成文件信息区和用于存储文件的文件数据区组成的文件系统;
初始化文件系统;
通过日志的方法来建立和维护文件信息区,每次对文件进行写操作时,在将文件写入到文件数据区后,再将文件信息的记录更新至文件信息区信息。
其中,文件信息结构包括:文件长度信息、文件所占用的基本存储单元的个数、文件所占用的基本存储单元的位置信息数组。
其中,文件信息区的结构包括:日志版本号、文件信息结构数组、文件信息结构数组的校验信息、更新标识。
其中,文件系统初始化包括步骤:
获得并记录用于文件系统中文件数据区及存储器中各个区块的序号和存储容量大小的信息;
以基本存储单元获得各个区块中存储单元的状态信息建立存储单元状态数组;
获得并记录用于文件系统中文件信息区总容量、以及各个区块的序号和大小,把文件信息区按文件信息区结构为基本单位构成文件系统数据库单元数组;
遍历文件系统数据库单元数组,搜索日志版本号最大的数据库单元索引,维护该文件系统数据库单元数组中序号等于前述日志版本号最大的数据库单元索引值的数组元素所指向的文件信息区信息。
另外,对文件进行写操作的步骤包括:
判断进行写操作的基本存储单元的总容量是否大于待写入的数据长度,若是,则转入下一步骤,否则,擦除所有无效的基本存储单元使进行写操作的基本存储单元的总容量大于待写入的数据长度;
找到可进行写操作的基本存储单元对应的位置信息,顺序写入数据到基本存储单元;
在文件信息区更新文件信息。
与现有技术相比,本发明具有如下有益效果:
本发明提出了一种简单易于操作的文件系统实现方法,实现了一个可根据需要配置修改需存储文件个数和总容量;具备断电保护功能,对操作系统依赖性小便于移植,对文件读写操作效率高,并且代码小占用资源少的文件系统。
附图说明
图1是初始化文件系统的流程示意图;
图2是对文件系统写操作的流程示意图。
具体实施方式
本发明提出了一种简单易于操作的文件系统实现方法,实现了一个可根据需要配置修改需存储文件个数和总容量;具备断电保护功能,对操作系统依赖性小便于移植,对文件读写操作效率高,并且代码小占用资源少的文件系统。
本发明提出的文件系统配置如下:
1、根据具体需求确定文件系统能存储的最多文件个数FILE_NUM,及文件系统能存储的数据总容量大小MAX_SIZE。
2、根据具体需求确定文件系统的基本存储单元的容量UNIT_SIZE,一般可以为2K、4K等。如果MAX_SIZE大而FILE_NUM小,那么UNIT_SIZE可以设大点如为8K,16K等;如果MAX_SIZE小而FILE_NUM大,那么UNIT_SIZE可以设小些,如设为1K等。
3、本发明提出的文件系统由两部分组成:文件信息区和文件数据区。由个数是FILE_NUM的描述文件信息的结构构成了文件信息区,其中文件信息的结构及各成员含义如下表1所示:
表1:文件信息结构(file_unit)成员表
说明:假使unit_mask[2]=0x050x07,二进制表示为0000010100000111,在第6、8、14、15和16比特位为1,则说明在第6、8、14、15和16序号的基本存储单元上有该文件数据片段,片段的先后顺序和比特位顺序一致。
用FilesysDB来描述文件信息区结构,其成员及含义如下表2:
表2:文件信息区(FilesysDB)成员表
从上可以看出,N个基本存储单元构成了文件数据区;显然N=MAX_SIZE/UNIT_SIZE。用比特来充分表示数据片段的有无和序号信息,如果UNIT_SIZE=4K,那么用256个字节就可以表示8M(256*8*4K)长度文件的全部存储位置信息,使得一个文件信息的结构很小(只有256+12)。这样可以存储8个文件的文件信息区只占用了8*268+24个字节。
4、确定用于文件系统的存储器(一般为FLASH)各个区块(Block)的序号。这些Block可以不连续。假定每个Block的容量都为FB_SIZE,那么文件信息区需要1个或2个Block(使用2个可以更好地实现断电保护),文件数据区需要不少于MAX_SIZE/FB_SIZE个Block。
通过日志的方法来建立和维护文件信息区,每次写文件时在正确写入到文件数据区后,再记录更新最后的文件信息区信息。
如图1所示,文件系统初始化包括如下步骤:
步骤S11:获得并记录用于文件系统中文件数据区及各个Block的序号和存储容量大小的信息。
步骤S12:以基本存储单元容量UNIT_SIZE为单位获得各个Block中存储单元的状态信息建立存储单元状态数组UNIT_MAP[]。
步骤S13:获得并记录用于文件系统中文件信息区总容量FINFO_SIZE,以及各个Blcok序号和大小,把文件信息区按FilesysDB为基本单位构成文件系统数据库单元数组FSDB[M]。
步骤S14:遍历数组FSDB[M],找到status和wstatus都正确且act_ver最大的数据库单元索引FDBIndex。
步骤S15:若步骤S14操作失败,则擦除文件信息区所用Block和文件数据区所用Block,设置FDBIndex=0,初始化文件信息区FSDB[FDBIndex]存储FSDB[0]到FLASH中。
步骤S16:若步骤S14操作成功,则将获得的FSDB[FDBIndex]设为当前使用的文件信息区FilesysDB。
如图2所示,对文件系统进行写操作包括如下步骤:
步骤S210:获得些文件传入参数文件序号、数据指针data和数据长度d_len;根据需要对数据进行压缩,并获得新的数据指针data和数据长度d_len。
步骤S220:根据UNIT_MAP[]获得可直接写操作的基本存储单元个数以及总容量Wsize,判断Wsize是否大于数据长度d_len。若是,则转入步骤S270,否则转入步骤S230。
步骤S230:根据UNIT_MAP[]和当前FilesysDB信息,擦除所有无效的基本存储单元,并更新UNIT_MAP[]。
步骤S240:根据UNIT_MAP[]获得可直接写操作的基本存储单元个数以及总容量Wsize,判断Wsize是否大于数据长度d_len。若是,则转入步骤S270,否则转入步骤S250。
步骤S250:获得该序号文件已经占用的存储空间wed_size,判断wed_size+Wsize是否大于d_len,若是,转入步骤S260,否则提示存储空间不够的错误。
步骤S260:擦除该文件已经使用的基本存储单元,并更新UNIT_MAP[]。
步骤S270:按先后顺序从头到尾遍历UNIT_MAP[],找到可用的基本存储单元对应的位置信息,顺序写入数据到基本存储单元。
步骤S280:记录信息到FilersysDB中相应序号文件的文件信息结构中,并对FilesysDB的act_ver加1。
步骤S290:找到FilersysDB下一个基本存储单元位置FSDB[index],并更新写入文件信息区。
另外,读文件操作时,在当前FilesysDB中找到所需读文件的文件索引号进而获得该文件信息结构,然后根据File_len和Unit_mask[]等成员信息,找到在哪些索引的基本存储单元有该文件数据,结合unit_map信息按先后顺序读出各片段数据,再按实际需要进行解密获得该文件的原始数据返回给读函数调用者。

Claims (1)

1.一种在嵌入式系统中实现文件系统的方法,其特征在于,该方法包括步骤:
建立由若干个用于分别描述每个文件信息的文件信息结构构成文件信息区和用于存储文件的文件数据区组成的文件系统;
文件信息结构包括:文件长度信息、文件所占用的基本存储单元的个数、文件所占用的基本存储单元的位置信息数组;
文件信息区的结构包括:日志版本号、文件信息结构数组、文件信息结构数组的校验信息、更新标识;
初始化文件系统:
获得并记录用于文件系统中文件数据区及存储器中各个区块的序号和存储容量大小的信息;
以基本存储单元获得各个区块中存储单元的状态信息建立存储单元状态数组;
获得并记录用于文件系统中文件信息区总容量、以及各个区块的序号和大小,把文件信息区按文件信息区结构为基本单位构成文件系统数据库单元数组;
遍历文件系统数据库单元数组,搜索日志版本号最大的数据库单元索引,维护该文件系统数据库单元数组中序号等于前述日志版本号最大的数据库单元索引值的数组元素所指向的文件信息区信息;
通过日志的方法来建立和维护文件信息区,每次对文件进行写操作时,在将文件写入到文件数据区后,再将文件信息的记录更新至文件信息区信息;
对文件进行写操作的步骤包括:
判断进行写操作的基本存储单元的总容量是否大于待写入的数据长度,若是,则转入下一步骤,否则,擦除所有无效的基本存储单元使进行写操作的数据存储单元的总容量大于待写入的数据长度;
找到可进行写操作的基本存储单元对应的位置信息,顺序写入数据到基本存储单元;
在文件信息区更新文件信息。
CN200910188992.4A 2009-12-18 2009-12-18 在嵌入式系统中实现文件系统的方法 Active CN102103596B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910188992.4A CN102103596B (zh) 2009-12-18 2009-12-18 在嵌入式系统中实现文件系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910188992.4A CN102103596B (zh) 2009-12-18 2009-12-18 在嵌入式系统中实现文件系统的方法

Publications (2)

Publication Number Publication Date
CN102103596A CN102103596A (zh) 2011-06-22
CN102103596B true CN102103596B (zh) 2014-10-29

Family

ID=44156373

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910188992.4A Active CN102103596B (zh) 2009-12-18 2009-12-18 在嵌入式系统中实现文件系统的方法

Country Status (1)

Country Link
CN (1) CN102103596B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629259A (zh) * 2012-02-29 2012-08-08 青岛海信移动通信技术股份有限公司 嵌入式系统中只读文件系统建立方法,装置及嵌入式系统
CN103853791A (zh) * 2012-12-07 2014-06-11 腾讯科技(深圳)有限公司 快速检索文件的实现方法及装置
CN105243071A (zh) * 2014-07-12 2016-01-13 航天恒星科技有限公司 一种适用于无文件系统的可检索文件存取方法
CN104156432A (zh) * 2014-08-08 2014-11-19 四川九成信息技术有限公司 一种文件访问方法
CN105808534B (zh) * 2014-12-27 2019-06-11 株洲中车时代电气股份有限公司 一种异构数据融合文件中提取原始数据的方法
CN105549903B (zh) * 2015-12-07 2019-06-25 上海斐讯数据通信技术有限公司 易于移植的文件系统及其对外置存储器数据的管理方法
CN108958813A (zh) * 2018-06-13 2018-12-07 北京无线电测量研究所 文件系统构建方法、装置及存储介质
CN109857718A (zh) * 2019-02-01 2019-06-07 广州亚美信息科技有限公司 一种应用于嵌入式系统的日志式文件系统
CN111078632B (zh) * 2019-12-27 2023-07-28 珠海金山数字网络科技有限公司 一种文件数据的管理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1632765A (zh) * 2004-12-31 2005-06-29 大唐微电子技术有限公司 一种闪存文件系统管理方法
CN1805049A (zh) * 2005-11-22 2006-07-19 武汉国光通信有限公司 一种嵌入式系统中非易失性存储器的数据存取方法
CN101042696A (zh) * 2006-03-23 2007-09-26 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1632765A (zh) * 2004-12-31 2005-06-29 大唐微电子技术有限公司 一种闪存文件系统管理方法
CN1805049A (zh) * 2005-11-22 2006-07-19 武汉国光通信有限公司 一种嵌入式系统中非易失性存储器的数据存取方法
CN101042696A (zh) * 2006-03-23 2007-09-26 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法

Also Published As

Publication number Publication date
CN102103596A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
CN102103596B (zh) 在嵌入式系统中实现文件系统的方法
CN106527969B (zh) 一种寿命均衡的NandFlash存储器读写方法
US10101914B2 (en) Memory management method, memory control circuit unit and memory storage device
CN102508784B (zh) 视频监控设备中闪存卡的数据存储方法及其系统
KR20130031046A (ko) 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
CN112395212B (zh) 减少键值分离存储系统的垃圾回收和写放大的方法及系统
TWI406130B (zh) 資料處理系統、控制器及其搜尋特定記憶體區的方法
CN101819509A (zh) 一种固态硬盘读写方法
CN102136005B (zh) 数据查询方法和装置
CN109284252B (zh) 一种通信设备中轻量级文件系统管理方法
CN103279366B (zh) 固态硬盘及掉电后基于固态硬盘快速开机的方法
CN101980177A (zh) 一种操作Flash的方法和装置
CN102890620A (zh) 非易失性临时数据处理
CN101908023A (zh) NandFlash存储器中数据存储方法
CN103970669A (zh) 用于加速在固态设备中的回收操作的物理到逻辑地址映射
CN102355495B (zh) 数据处理方法、装置和系统
CN113419675B (zh) 用于存储器的写操作方法及读操作方法
CN113419975B (zh) 存储器的控制系统及地址映射方法和地址映射装置
CN109840218A (zh) 有效数据管理方法以及存储控制器
CN112882649B (zh) 数据储存装置以及非挥发式存储器控制方法
KR101400506B1 (ko) 비휘발성 메모리 제어기 및 그 제어 방법
CN105573918A (zh) 一种轻量级闪存系统和方法
US20190146909A1 (en) Valid data management method and storage controller
CN107506311B (zh) 一种固态硬盘的ftl表的刷写方法及装置
CN102135943A (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
TR01 Transfer of patent right

Effective date of registration: 20200630

Address after: 23 / F, Guangdong hi tech District

Patentee after: Shenzhen Konka Holding Group Co.,Ltd.

Address before: 518055 No. 9008 Shennan Avenue, Shenzhen, Guangdong, Nanshan District

Patentee before: KONKA GROUP Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 518057 23rd floor, Konka R & D building, No. 28, Keji South 12th Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen, Guangdong

Patentee after: Shenzhen Konka Holding Group Co.,Ltd.

Country or region after: China

Address before: 518057 23rd floor, Konka R & D building, No. 28, Keji South 12th Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen, Guangdong

Patentee before: Shenzhen Konka Holding Group Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address