CN102880553A - 一种基于mcu的片外flash文件系统的读写方法 - Google Patents

一种基于mcu的片外flash文件系统的读写方法 Download PDF

Info

Publication number
CN102880553A
CN102880553A CN2012103458154A CN201210345815A CN102880553A CN 102880553 A CN102880553 A CN 102880553A CN 2012103458154 A CN2012103458154 A CN 2012103458154A CN 201210345815 A CN201210345815 A CN 201210345815A CN 102880553 A CN102880553 A CN 102880553A
Authority
CN
China
Prior art keywords
sector
physics
file system
flash
logic
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
CN2012103458154A
Other languages
English (en)
Other versions
CN102880553B (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.)
CICT Mobile Communication Technology Co Ltd
Original Assignee
Wuhan Hongxin Telecommunication Technologies 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 Wuhan Hongxin Telecommunication Technologies Co Ltd filed Critical Wuhan Hongxin Telecommunication Technologies Co Ltd
Priority to CN201210345815.4A priority Critical patent/CN102880553B/zh
Publication of CN102880553A publication Critical patent/CN102880553A/zh
Application granted granted Critical
Publication of CN102880553B publication Critical patent/CN102880553B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明提出一种基于MCU的片外FLASH文件系统的读写方法,在片外FLASH的文件系统和FLASH的驱动层之间增加逻辑转换层,所述逻辑转换层将一个物理sector划分为若干个与逻辑sector大小相等的区域并分配序号,通过做逻辑扇区和物理地址之间的转换,解决逻辑sector和实际物理sector大小不一致的问题,从而实现文件系统对FLASH物理sector的读写等操作。本发明解决了利用MCU较少RAM资源实现文件系统对FLASH块读写缓冲的需求。

Description

一种基于MCU的片外FLASH文件系统的读写方法
技术领域
本发明涉及微控制单元技术领域,尤其是涉及一种基于MCU的片外FLASH文件系统的读写方法。
背景技术
MCU(Micro Control Unit)中文名称为微控制单元,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。因其片内集成ROM(只读内存)和RAM(随机存储器)资源,使用方便,成本低廉,广泛应用于各个领域。但由于其片内FLASH(闪存)容量通常较小,在有大容量存储需求的应用场景,通常使用外接大容量串行FLASH存储芯片以满足需求,如图1所示:MCU和外接FLASH连接,以MCU为核心设置以太网接口和调试串口用于通信和调试。文件系统是用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。而文件系统的使用会使得对于FLASH存储空间的分配和回收、文件的存储与拷贝、磨损平衡的处理等更为方便。由于FALSH擦除与写入必须按照以最小存储块为单元进行,通常为64KB或者更大,采用常用的文件系统的程序实现方法,必须在RAM开辟数个与存储块大小相等的存储空间,以供写FLASH时数据缓存。而这种实现方式对于RAM资源极其有限的MCU来说,几乎不可能实现。
发明内容
本发明公开了一种基于MCU的片外FLASH文件系统的读写方法,解决了利用MCU较少RAM资源实现文件系统对FLASH块读写缓冲的需求。
本发明的技术方案为一种基于MCU的片外FLASH文件系统的读写方法,在片外FLASH的文件系统和片外FLASH的驱动层之间增加逻辑转换层,所述逻辑转换层将片外FLASH的每一个物理sector划分为若干个与逻辑sector大小相等的区域并分配序号,基于逻辑转换层的读写操作实现方式如下,
在文件系统初始化阶段,逻辑转换层在将文件系统上所有逻辑sector分别映射到片外FLASH的物理sector中,将映射信息记录到物理sector的映射表,所述映射信息包括逻辑sector映射到物理sector的地址信息和逻辑sector在物理sector中的区域序号,所述逻辑sector映射到物理sector的地址信息包括逻辑sector地址和物理sector地址;
当文件系统进行读取操作时,逻辑转换层根据需要执行读操作的逻辑sector地址,首先查询映射表获得映射信息,然后读取相应的物理sector地址和区域序号并返回给文件系统,片外FLASH的驱动层根据直接读取物理sector中对应区域的信息;
当文件系统进行写入操作时,逻辑转换层申请片外FLASH中的空闲区域,并将逻辑sector的新信息写入,然后将逻辑sector重新映射到片外FLASH的物理sector中,修改映射表记录重新映射的映射信息; 
描述ctor用扇区少于用户要申请写入的扇区时,逻辑转换层就启动机    逻辑转换层始终保留片外FLASH的部分物理sector的所有区域处于空闲状态,将这部分物理sector作为回收中转区, 当文件系统中的可用空闲区域少于用户要申请写入的区域时,逻辑转换层启动垃圾回收;垃圾回收方式为,逻辑转换层统计各物理sector中垃圾区域的数量,根据垃圾区域的多少依次对物理sector进行回收;对于某个待回收的物理sector,逻辑转换层启用回收中转区的物理sector空闲区域,将待回收物理sector中的有用区域以单个区域为单位拷贝到回收中转区保留的空闲区域中;同时更新映射表重新建立映射,垃圾回收之后的空闲区域除作为新的回收中转区外,其余部分全部释放供重新申请。
而且,当文件系统进行写入操作时,若只对整个物理sector中部分区域进行写操作,则对物理sector中的其他区域全部写入0xff。
本发明包含的主要特点在于:(1)区别于常用文件系统,不直接由文件系统对实际FLASH物理sector(扇区)进行管理和读写。(2)将文件系统的逻辑sector大小设定为远小于(几分之一到几十分之一)FLASH芯片物理sector(物理可擦写块)容量,使得占用的缓存RAM资源大大降低。(3)在文件系统对逻辑sector的读写擦除等操作和FASLH驱动之间增加逻辑转换层,做逻辑扇区和物理地址之间的转换,解决逻辑sector和实际物理sector大小不一致的问题。(4)逻辑转换层主要特点就是将一个物理sector划分为若干个与逻辑sector大小相等的区域。(5)逻辑转换层核心功能就是建立文件系统逻辑sector到物理sector的映射表(MAP表),其中一个逻辑sector只能映射到一块物理sector,而物理sector容量远大于逻辑sector,所以可以有多个逻辑sector映射到同一个物理sector中不同的区域,所有的映射信息都记录在该映射表中。(6)对于文件系统对逻辑sector的读操作,查找映射表获取物理sector地址和块内序号,直接读取就可以实现。(7)对于文件系统对逻辑sector的写操作,首先根据映射表获取物理sector地址和块内序号,为避免对整个物理sector的其他逻辑sector数据擦除,逻辑转换层将申请一个新的物理扇区或块内申请新的序号空间,将数据写入,重新建立正确的映射关系。采用本发明的优点是:能够降低文件系统对RAM资源的利用,使得在资源有限的MCU处理器上实现外接FLASH的文件系统,非常有利于对FLASH的管理,降低编程难度。
附图说明
图1为本发明运行的硬件系统框图;
图2为本发明实施例的逻辑转换层位置图;
图3为本发明实施例的读操作流程示意图;
图4为本发明实施例的写操作流程示意图;
图5为本发明实施例的物理sector垃圾回收之前存储区状态示意图;
图6为本发明实施例的物理sector垃圾回收完成存储区状态示意图。
具体实施方式   
以下结合附图和实施例详细说明本发明技术方案。
为了使用本发明的目的、技术方案及优点更加的清楚明白,以下参考附图和实施例,对本发明进一步详细说明:
实施例的硬件系统框图参考图1实现, MCU采用 LM9D96芯片,外接FLASH采用FL128SA芯片。系统中MCU内置RAM大小为96KB,而FL128SA的物理sector(物理扇区)为64KB,以下对如何利用有限的RAM资源,通过在文件系统和FLASH驱动之间增加逻辑转换,从而实现文件系统对FLASH物理sector的读写管理作详细说明。
实施例将文件系统的逻辑sector(逻辑扇区)大小设定为远小于FLASH芯片的物理sector(物理可擦写块)容量,具体实施时可以设置逻辑sector大小是几分之一或几十分之一。
实施例在文件系统对逻辑sector的读写擦除等操作和片外FLASH的驱动层之间增加逻辑转换层,做逻辑扇区和物理地址之间的转换,如图2所示,依次为用户读写操作、文件系统(FFS,Flash File System)、逻辑转换层(FTL)、驱动层(driver)、物理设备(Flash)。逻辑转换层将片外FLASH的每一个物理sector划分为若干个与逻辑sector大小相等的区域并分配序号,
实施例基于逻辑转换层的读写操作具体实现过程为:
在文件系统初始化阶段,逻辑转换层在将文件系统上所有的逻辑sector映射到Flash上的物理sector中,可能需要连续映射到一个或多个物理sector中。这样多个逻辑sector映射到一个物理sector,并记录每个逻辑sector在物理sector中的区域序号。实施例记录一个与物理sector相应的映射表(实施例称为MAP表),该映射表包含了每个逻辑sector映射到物理sector的地址信息和在该物理sector中的区域序号,例如(逻辑sector地址0x00000000:物理sector地址0x00000000:区域序号0)。所述逻辑sector映射到物理sector的地址信息包括逻辑sector地址和物理sector地址。
如图3所示,当文件系统要进行读取操作(FFS READ)时,逻辑转换层根据需要执行读操作的逻辑sector地址,首先查询映射表,以获得映射信息,映射信息包含了逻辑sector映射到物理sector中的具体位置信息,包括逻辑sector地址、物理sector地址和逻辑sector在该物理sector中的区域序号,然后读取相应的物理sector地址和区域序号信息并返回给文件系统,片外FLASH的驱动层直接读取该sector中对应区域的信息,从而实现读映射。
当文件系统要进行写入操作(FFS WRITE)时,可能存在将bit 0修改为1的情况,也为了避免同一物理sector中其他序号区域的数据被擦除,逻辑层将申请空闲区域(即物理sector中的一个与逻辑sector大小相等且没有任何数据的区域),可能从一个新的物理sector或者是同一物理sector中申请一片未使用的区域。并将新信息写入,逻辑sector被重新映射到新的物理区域,然后将逻辑sector重新映射到片外FLASH的物理sector中,修改map信息,记录物理sector重新映射后的信息,包括逻辑sector映射到物理sector的地址信息和在该物理sector中的区域序号,记录申请的空闲区域的地址,从而实现写映射。在写入过程中,为了保证只对整个sector中特定的区域进行写操作,执行物理sector写命令,但在除了目标区域以外的其他区域全部写入0xff以保证其他区域数据不受影响。如图4所示,某逻辑sector之前的映射关系是指向物理sector某个区域的地址,写入后指向物理sector另一个区域的地址。
逻辑转换层对FLASH格式化后,随着不断的有文件写入或者修改,物理sector中可用的空闲区域(即从未被写入数据的区域)将被不断申请使用,原有的占用区域(即已被写入数据的区域)被不断的废弃成为垃圾区域(即已被写入数据但数据已经废弃的区域),系统中可用区域越来越少。但逻辑转换层始终会保留FLASH中的一小部分物理sector处于全部空闲状态,即这部分物理sector的所有区域为空闲区域。如图5中FLASH共有10个物理sector,记为sector1、sector2、sector3、sector4、sector5、sector6、sector7、sector8、sector9、sector10,每个物理sector分为6个区域,即支持6个逻辑sector映射到一个物理sector。其中sector9和sector10以作为后续步骤的回收中转区,其中的空闲区域是逻辑转换层为了方便管理、为了不需要每次擦除一块而付出的管理代价。图中,01表示垃圾区域,02表示有用区域,03表示空闲区域。占用区域中除垃圾区域以外的为有用区域。
当系统中的所有可用空闲区域(除回收中转区以外的空闲区域)少于用户要申请写入的区域时,逻辑转换层就启动机制解决这些垃圾问题,这个过程在逻辑层中称为垃圾回收。
       垃圾回收过程比较复杂,转换层会统计各物理sector中垃圾区域的数量,根据垃圾区域数量从多到少依次对所有物理sector来进行回收。如图5和图6垃圾回收前后状态图所示,和图5相比,所有的有用区域被集中,垃圾区域被擦除回收后集中成为可用区域,回收中转区依然存在,只不过物理位置发生了变化(sector1和sector2)。回收的整个过程实际就是将各物理sector中的有用数据集中到一起,以便将多余的空间重新初始化为空闲区域,供下一次被申请使用。具体回收的过程为:逻辑转换层启用在回收中转区保留的空闲区域,将待回收物理sector中的有用区域以单个区域为单位拷贝到回收中转区保留的空闲区域中,在数据写入过程中对于目标区域以外的其他区域全部写入0xff以保证其他区域数据不受影响,实现对该物理sector多次重复写入, 采用此方法即可将有用区域全部集中。同时更新MAP表重新建立映射,因为需要保留片外FLASH的部分物理sector的所有区域处于空闲状态,垃圾回收之后的空闲区域中仍保留一部分作为新的回收中转区,例如图6中的sector1和sector2,其余部分全部释放为空闲区域供重新申请。
       在文件系统的读写删除等操作过程中,不断循环重复的执行以上策略,即可实现利用几KB的读写缓存实现对64KB大小sector的管理与读写功能。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (2)

1.一种基于MCU的片外FLASH文件系统的读写方法,其特征在于:在片外FLASH的文件系统和片外FLASH的驱动层之间增加逻辑转换层,所述逻辑转换层将片外FLASH的每一个物理sector划分为若干个与逻辑sector大小相等的区域并分配序号,基于逻辑转换层的读写操作实现方式如下,
在文件系统初始化阶段,逻辑转换层在将文件系统上所有逻辑sector分别映射到片外FLASH的物理sector中,将映射信息记录到物理sector的映射表,所述映射信息包括逻辑sector映射到物理sector的地址信息和逻辑sector在物理sector中的区域序号,所述逻辑sector映射到物理sector的地址信息包括逻辑sector地址和物理sector地址;
当文件系统进行读取操作时,逻辑转换层根据需要执行读操作的逻辑sector地址,首先查询映射表获得映射信息,然后读取相应的物理sector地址和区域序号并返回给文件系统,片外FLASH的驱动层根据直接读取物理sector中对应区域的信息;
当文件系统进行写入操作时,逻辑转换层申请片外FLASH中的空闲区域,并将逻辑sector的新信息写入,然后将逻辑sector重新映射到片外FLASH的物理sector中,修改映射表记录重新映射的映射信息; 
描述ctor用扇区少于用户要申请写入的扇区时,逻辑转换层就启动机    逻辑转换层始终保留片外FLASH的部分物理sector的所有区域处于空闲状态,将这部分物理sector作为回收中转区, 当文件系统中的可用空闲区域少于用户要申请写入的区域时,逻辑转换层启动垃圾回收;垃圾回收方式为,逻辑转换层统计各物理sector中垃圾区域的数量,根据垃圾区域的多少依次对物理sector进行回收;对于某个待回收的物理sector,逻辑转换层启用回收中转区的物理sector空闲区域,将待回收物理sector中的有用区域以单个区域为单位拷贝到回收中转区保留的空闲区域中;同时更新映射表重新建立映射,垃圾回收之后的空闲区域除作为新的回收中转区外,其余部分全部释放供重新申请。
2.如权利要求1所述基于MCU的片外FLASH文件系统的读写方法,其特征在于:当文件系统进行写入操作时,若只对整个物理sector中部分区域进行写操作,则对物理sector中的其他区域全部写入0xff。
CN201210345815.4A 2012-09-18 2012-09-18 一种基于mcu的片外flash文件系统的读写方法 Active CN102880553B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210345815.4A CN102880553B (zh) 2012-09-18 2012-09-18 一种基于mcu的片外flash文件系统的读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210345815.4A CN102880553B (zh) 2012-09-18 2012-09-18 一种基于mcu的片外flash文件系统的读写方法

Publications (2)

Publication Number Publication Date
CN102880553A true CN102880553A (zh) 2013-01-16
CN102880553B CN102880553B (zh) 2015-09-16

Family

ID=47481887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210345815.4A Active CN102880553B (zh) 2012-09-18 2012-09-18 一种基于mcu的片外flash文件系统的读写方法

Country Status (1)

Country Link
CN (1) CN102880553B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015021822A1 (zh) * 2013-08-16 2015-02-19 深圳市汇顶科技股份有限公司 扩大mcu程序地址空间的方法及装置
CN105357453A (zh) * 2015-11-24 2016-02-24 长春乙天科技有限公司 基于多探测器成像相机的通讯群发群收控制方法
CN106502586A (zh) * 2016-10-17 2017-03-15 记忆科技(深圳)有限公司 一种提高固态硬盘顺序读性能的方法
CN106844229A (zh) * 2017-01-07 2017-06-13 郑州云海信息技术有限公司 固态硬盘固件映射表的组织方法、系统及装置
CN110286995A (zh) * 2018-03-19 2019-09-27 北京兆易创新科技股份有限公司 一种数据读写方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186946A1 (en) * 2003-03-19 2004-09-23 Jinaeon Lee Flash file system
CN1822230A (zh) * 2006-03-02 2006-08-23 浙江大学 基于NAND Flash存储器文件系统的实现方法
CN101046803A (zh) * 2006-03-28 2007-10-03 大唐移动通信设备有限公司 文件系统的安全管理方法及装置
CN101231617A (zh) * 2008-01-21 2008-07-30 中兴通讯股份有限公司 闪存设备的数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186946A1 (en) * 2003-03-19 2004-09-23 Jinaeon Lee Flash file system
CN1822230A (zh) * 2006-03-02 2006-08-23 浙江大学 基于NAND Flash存储器文件系统的实现方法
CN101046803A (zh) * 2006-03-28 2007-10-03 大唐移动通信设备有限公司 文件系统的安全管理方法及装置
CN101231617A (zh) * 2008-01-21 2008-07-30 中兴通讯股份有限公司 闪存设备的数据处理方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015021822A1 (zh) * 2013-08-16 2015-02-19 深圳市汇顶科技股份有限公司 扩大mcu程序地址空间的方法及装置
CN105357453A (zh) * 2015-11-24 2016-02-24 长春乙天科技有限公司 基于多探测器成像相机的通讯群发群收控制方法
CN106502586A (zh) * 2016-10-17 2017-03-15 记忆科技(深圳)有限公司 一种提高固态硬盘顺序读性能的方法
CN106502586B (zh) * 2016-10-17 2019-10-25 记忆科技(深圳)有限公司 一种提高固态硬盘顺序读性能的方法
CN106844229A (zh) * 2017-01-07 2017-06-13 郑州云海信息技术有限公司 固态硬盘固件映射表的组织方法、系统及装置
CN106844229B (zh) * 2017-01-07 2020-01-03 苏州浪潮智能科技有限公司 固态硬盘固件映射表的组织方法、系统及装置
CN110286995A (zh) * 2018-03-19 2019-09-27 北京兆易创新科技股份有限公司 一种数据读写方法和装置
CN110286995B (zh) * 2018-03-19 2022-02-25 北京兆易创新科技股份有限公司 一种数据读写方法和装置

Also Published As

Publication number Publication date
CN102880553B (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
CN103049397B (zh) 一种基于相变存储器的固态硬盘内部缓存管理方法及系统
CN101937319B (zh) 存储器系统及其映射方法
CN103336744B (zh) 一种固态存储设备的垃圾回收方法及其系统
CN102298555B (zh) 基于nand技术的模块化闪存管理系统
CN102163175B (zh) 一种基于局部性分析的混合地址映射方法
CN101382918B (zh) 一种基于数据交换区的NAND Flash闪存优化管理方法
CN102521160B (zh) 写缓冲检测器、并行通道写入方法
KR100772863B1 (ko) 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
TWI399644B (zh) 非揮發記憶體區塊管理方法
TW201729105A (zh) 混合模式存取固態硬碟驅動器之方法及裝置
CN101464834B (zh) 闪存数据写入方法及使用此方法的控制器
CN101634967B (zh) 用于闪存的区块管理方法、储存系统与控制器
US20100042775A1 (en) Block management method for flash memory, and storage system and controller using the same
CN101169751A (zh) 具有闪存设备的系统及其数据恢复方法
CN104360958A (zh) 基于块保留区替换的坏块管理系统及管理方法
CN101625897B (zh) 用于快闪存储器的数据写入方法、储存系统与控制器
CN109671458A (zh) 管理闪存模块的方法及相关的闪存控制器
CN102880553B (zh) 一种基于mcu的片外flash文件系统的读写方法
CN102193869A (zh) 存储器管理与写入方法及其存储器控制器与储存系统
WO2016138785A1 (zh) 一种运行进程的方法及装置
US20120210045A1 (en) Data access method, and memory controller and memory storage apparatus using the same
CN112035061A (zh) 固态硬盘资源分配方法、装置和存储介质
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
CN110531928B (zh) DRAM-Less固态硬盘的数据随机写入方法、装置及DRAM-Less固态硬盘

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
CP03 Change of name, title or address

Address after: 430205 Hubei city of Wuhan province Jiangxia Hidden Dragon Island Tan lake two Road No. 1

Patentee after: CITIC Mobile Communication Technology Co., Ltd

Address before: 430073 Hubei province Wuhan Dongxin East Lake high tech Development Zone, Road No. 5

Patentee before: Wuhan Hongxin Telecommunication Technologies Co.,Ltd.

CP03 Change of name, title or address
CP01 Change in the name or title of a patent holder

Address after: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee after: CITIC Mobile Communication Technology Co.,Ltd.

Address before: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee before: CITIC Mobile Communication Technology Co., Ltd

CP01 Change in the name or title of a patent holder