嵌入式Linux的文件系统分区及数据读写方法技术方案

技术编号:17779333 阅读:35 留言:0更新日期:2018-04-22 07:39
本发明专利技术涉及嵌入式Linux的文件系统分区及数据读写方法,1.设置内核NANDFlash分区;2.Kernel启动后自动挂载rootfs并启动应用程序;3.挂载用户数据分区至根目录下结点/userdata,挂载成功转步骤6,否则转下一步;4.擦除、格式化用户数据分区;5.挂载mtd3设备为UBI卷1,并转步骤3;6.挂载mtd1设备为UBI卷2;7.校验/userdata目录下的参数文件是否正确,正确转步骤9,否则转下一步;8.读取UBI卷2,将备份的参数恢复至参数文件;9.应用程序正常运行,当参数变化时将参数备份至UBI卷2。本发明专利技术可减少系统分区被破坏发生故障的概率,提高了分区损坏、挂载失败时的自恢复能力;减少用户参数的丢失,确保重要数据不丢失。

【技术实现步骤摘要】
嵌入式Linux的文件系统分区及数据读写方法
本专利技术涉及Linux系统的数据存储管理领域,特别是涉及一种基于NANDFlash存储器和UBIFS文件系统的嵌入式Linux的文件系统分区及数据读写方法。
技术介绍
目前Linux操作系统由于源码开放及技术成熟,从而大量使用在嵌入式产品的软件设计中。而嵌入式Linux的文件系统也由最初的jiffs2、yaffs2等系统发展到目前的UBIFS文件系统。UBIFS是Nokia工程师在theuniversityofSzeged大学帮助下开发的新的flashfilesystem,被认为是jiffs2文件系统的下一代。UBIFS涉及了三个子系统:1、MTD子系统,提供对flash芯片的访问接口,MTD子系统提供了MTDdevice的概念,比如/dev/mtdx,MTD可以认为是rawflash。MTD在内核层的API是structmtd_device、而用户空间的API接口是/dev/mtd0,这些接口提供了设备信息,读写可擦除块,擦除一个可擦除块,标记一个可擦除块是坏块,检查可擦除块是否是坏块。但是,MTD的API并不隐藏坏的可擦除块、也不做任何损耗平衡。2、UBIsubsystem,为flashdevice提供了损耗平衡以及坏块管理,UBI(UnsortedBlockImages)的内核API是include/mtd/ubi-user.h,用户空间的则是/dev/ubi0,提供损耗平衡,隐藏坏块,允许运行时容量创建、删除和修改,有点类似LVM功能。3、UBIFS文件系统,工作于UBI之上。目前常规Linux+UBIFS文件系统的MTD分区是这样的:将MTD分为2个区,其中第一区存放BootStrap、uboot及kernel,该区只读、长度8M,第二区存放rootfs(UBIFS)文件系统,长度为所有剩余长度,是可读/写的。系统启动时,先加载BootStrap,BoostStrap加载uboot,并把控制权交由uboo,uboot加载kernel再将控制权交由kernel,kernel启动后挂载根文件系统rootfs(ubifs),之后由启动角本启动应用程序。UBIFS文件系统属于日志型文件系统,无论速度、性能还是对NANDFlash的损益均衡都相对于jiffs2和yaffs2有了很大的改变。但UBIFS文件系统需要经常记录日志,在设备突然停电而系统又正在进行日志记录时,往往由于没有操作完而中断,会导致很多“unstablebits(不稳定位)”出现,这些“unstablebits”每次读取结果可能为1也可能为0,造成文件系统的数据校验不一致,导致系统挂载失败。在实际应用中,还有一些作法是分为三个区,即第一区存放BootStrap、uboot及kernel,该区只读、长度8M,第二区存放rootfs(UBIFS)文件系统,长度为32M,是可读/写的,第三个分区为用户数据分区,长度为剩余长度,是可读写的。将rootfs与用户数据分离的作法一定程度上可以保护rootfs不被破坏,增加系统健壮性,但用户数据区并未实现动态挂载、以及挂载失败后的恢复,还是可能出现系统不能正常运行的问题。
技术实现思路
为解决现有的UBI文件系统在抗掉电能力方面的不足,本专利技术通过将内核NANDFlash划分为系统分区和用户分区,动态挂载用户分区,并对挂载结果进行准确判断,如果挂载失败通过mtd-utils、ubi-utils等工具格式化用户分区,之后重新挂载用户分区,并通过mtd-utils恢复用户数据等,进一步提高嵌入式linux下文件系统的健壮性以及用户数据的安全性。本专利技术所采用的技术方案如下:嵌入式Linux的文件系统分区及数据读写方法,基于NANDFlash存储器和UBIFS文件系统,包括以下步骤:步骤1、设置内核NANDFlash分区,用于实现用户数据分区与系统数据分区的分离;步骤2、启动嵌入式Linux设备,Kernel启动后自动挂载rootfs,并启动应用程序;步骤3、应用程序启动后使用mount命令挂载用户数据分区至根目录下结点/userdata,如果挂载成功则转步骤6,否则转下一步;如果能挂载成功说明系统之前运行正常,用户数据分区没有损坏、无数据丢失;如果挂载不成功可能由于上次意外停电导致用户数据分区损坏,则需执行后面的步骤4、5来清除错误重新挂载;步骤4、使用mtd-utils工具包中的flash_erase擦除用户数据分区,使用ubi-utils工具包中的ubiformat格式化用户数据分区;步骤5、使用ubi-utils工具包挂载用户数据分区为UBI卷1,并转步骤3;步骤6、使用ubi-utils工具包挂载参数备份分区为UBI卷2,用于实现基于UBI的参数备份;步骤7、应用程序校验/userdata目录下的参数文件是否正确,如果正确转步骤9,否则转下一步;步骤8、读取UBI卷2,将其中备份的参数恢复至参数文件;步骤9、应用程序正常运行,当参数变化时使用ubi-utils工具包中的ubiformat-f命令将参数备份至UBI卷2。优选地,步骤1中将内核NANDFlash设置为四个分区,分区的大小与其要存储的内容相适应。优选地,所述四个分区中分区1存储系统映像,分区2存储基于UBI卷的参数备份,分区3存储rootfs根文件系统和应用程序,分区4存储用户数据。优选地,步骤3中通过分析/proc/mounts判断挂载是否成功。优选地,步骤5、步骤6中使用ubi-utils工具包中的ubiattach、ubimkvol进行挂载。优选地,步骤7中应用程序校验/userdata目录下的参数文件是否正确的方法是:采用参数的开头、结尾,以及CRC校验。用户数据一般包含参数和数据,其中参数是指系统运行所需的各类配置、参数,参数丢失将导致系统运行故障,故需使用另外一种方式存储于mtd1,而数据是指应用程序运行过程中存储的运行数据,丢失是可接受的。步骤6、7、8、9中使用基于UBI卷的参数备份是因为其它类似的读写NANDFlash指令如nandwrite、dd、nanddump都没有坏块隐藏和损耗平衡功能。本专利技术的有益效果如下:1、用户分区与系统分区的分离设计,可以大大减少系统分区被破坏、导致系统启动时发生故障的概率;2、由应用程序动态地挂载和处理挂载结果,提高了分区损坏、挂载失败时的自恢复能力;3、用户参数的备份,在挂载失败需要格式化时、可以确保大大减少用户参数的丢失;4、使用基于UBI卷的参数备份方法可以更好地隐藏坏块和保证损耗平衡;5、使用基于UBI卷的参数备份方法可以独立于任何文件系统,对数据进行原始读写,与文件系统形成原子操作,确保重要数据不丢失。附图说明图1是本专利技术的逻辑流程框图。具体实施方式下面结合附图,具体说明本专利技术的实施方式。如图1所示,是本专利技术的逻辑流程框图。嵌入式Linux的文件系统分区及数据读写方法,基于NANDFlash存储器和UBIFS文件系统,包括以下步骤:步骤1、设置内核NANDFlash分区,用于实现用户数据分区与系统数据分区的分离。本实施例以128M字节NANDFlash为例,将内核NANDFlash分为四个分区,具体的分区方式如下表所示。名称本文档来自技高网
...
嵌入式Linux的文件系统分区及数据读写方法

【技术保护点】
嵌入式Linux的文件系统分区及数据读写方法,基于NAND Flash存储器和UBIFS文件系统,其特征在于,包括以下步骤:步骤1、设置内核NAND Flash分区,用于实现用户数据分区与系统数据分区的分离;步骤2、Kernel启动后自动挂载rootfs,并启动应用程序;步骤3、使用mount命令挂载用户数据分区至根目录下结点/userdata,如果挂载成功则转步骤6,否则转下一步;步骤4、使用mtd‑utils工具包中的flash_erase擦除用户数据分区,使用ubi‑utils工具包中的ubiformat格式化用户数据分区;步骤5、使用ubi‑utils工具包挂载用户数据分区为UBI卷1,并转步骤3;步骤6、使用ubi‑utils工具包挂载参数备份分区为UBI卷2;步骤7、应用程序校验/userdata目录下的参数文件是否正确,如果正确转步骤9,否则转下一步;步骤8、读取UBI卷2,将其中备份的参数恢复至参数文件;步骤9、应用程序正常运行,当参数变化时使用ubi‑utils工具包中的ubiformat‑f命令将参数备份至UBI卷2。

【技术特征摘要】
1.嵌入式Linux的文件系统分区及数据读写方法,基于NANDFlash存储器和UBIFS文件系统,其特征在于,包括以下步骤:步骤1、设置内核NANDFlash分区,用于实现用户数据分区与系统数据分区的分离;步骤2、Kernel启动后自动挂载rootfs,并启动应用程序;步骤3、使用mount命令挂载用户数据分区至根目录下结点/userdata,如果挂载成功则转步骤6,否则转下一步;步骤4、使用mtd-utils工具包中的flash_erase擦除用户数据分区,使用ubi-utils工具包中的ubiformat格式化用户数据分区;步骤5、使用ubi-utils工具包挂载用户数据分区为UBI卷1,并转步骤3;步骤6、使用ubi-utils工具包挂载参数备份分区为UBI卷2;步骤7、应用程序校验/userdata目录下的参数文件是否正确,如果正确转步骤9,否则转下一步;步骤8、读取UBI卷2,将其中备份的参数恢复至参数文件;步骤9、应用程序正常运行,当参数变化时使用ubi-utils工具包中的ubiforma...

【专利技术属性】
技术研发人员:孙明刚
申请(专利权)人:积成电子股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1