嵌入式Linux上JFFS文件系统的实现方法

嵌入式Linux上JFFS文件系统的实现方法,第1张

 

  1 引言

  近年来,随着电子技术的不断进步,嵌入式系统开发已成为热点,而Linux作为一个自由软件 ,也得到了极大的发展 ,嵌入式系统与Linux的结合,正日益被人们看好。Linux具有内核小,效率高,源代码开放等优点,还内含了完整的TCP/在嵌入式系统开发中,Flash 芯片以相对低廉的价格提供了高可靠性和高密度的存储,已成为嵌入式系统的重要组成部分。在很多嵌入式系统中, *** 作系统及应用程序直接固化在Flash上,系统启动时,代码直接在Flash上开始运行。

  2 在嵌入式系统中使用Flash

  当前的嵌入式系统开发,需要方便灵活地使用Flash,以嵌入式的Web Server为例,在运行过程中,要求能够动态地保存一些数据,并且当系统重新上电时,保存的数据依然存在。又比如将嵌入式处理器应用于工控领域,可能整个系统都集成在一小块电路板上,一些重要的工艺参数在控制过程中需要动态地改变并保存,而使用硬盘等存储介质又不太现实,在这种场合下,仅仅将Flash作为保存系统代码的ROM使用是“大材小用”了。需要充分发挥Flash可擦写的优势,在系统运行过程中,动态地擦写Flash来保存数据。针对嵌入式系统多样、灵活、专用性强等特点,可以发挥嵌入式 *** 作系统软件复用的优点,找到一种方便、快捷地使用Flash 的方法来缩短开发时间,提升系统性能,嵌入式Linux就提供了这样一条捷径。由遍布全世界的自由软件开发者为Linux提供支持,使得在嵌入式Linux上使用Flash变的十分容易。

  3 JFFS 文件系统简介

  我们使用的uClinux系统采用ROMFS作为根文件系统,它相对于一般的EXT2文件系统,具有节约空间的优势。但是ROMFS是一种只读的文件系统,不支持动态擦写保存,对于系统需要动态保存的数据只能采用虚拟ram盘的方法(ram盘使用EXT2文件系统)。

  针对ROMFS文件系统存在的问题,我们可以使用JFFS文件系统(Journaling Flash File System)。JFFS文件系统是瑞典的Axis CommunicaTIons公司(www.axis.com) 在GNU General Public License下发布的自由软件,主要用于嵌入式Linux。只需要在自己的嵌入式Linux中加入JFFS文件系统并做少量的改动,就可以使用JFFS文件系统。通过JFFS文件系统,可以用Flash来保存数据,即将Flash作为系统的硬盘来使用。可以像 *** 作硬盘上的文件一样 *** 作Flash芯片上的文件和数据。系统运行的参数可以实时保存到Flash芯片中,在系统断电后数据仍然存储在Flash芯片中。

  作为一种EEPROM,Flash可分为两种主要类型:NOR Flash 和NAND Flash。一片没有使用过的Flash,每一位的值都是逻辑1,对Flash的写 *** 作就是将特定位的逻辑1改变为逻辑0。而擦除就是将逻辑1改变为逻辑0。Flash的数据存储是以块(Block)为单位来组织的,Flash只能整块擦除,而Flash的寿命是以擦除次数来计算的,一般是每块100,000次。为了保证某块不早于其他块到达其寿命,就有必要在所有块中尽可能地平均分配擦除次数,这就是“损耗平衡”。JFFS 文件系统是一种“追加式”的文件系统,新的数据总是被追加到上次写入数据的后面。这种“追加式”的结构就自然实现了“损耗平衡”。

  要加入JFFS文件系统,需实现Linux下对Flash芯片的驱动,Axis CommunicaTIons公司提供了实现代码。在这个系统中,代码包括uClinux/linux/drivers/block/flash.c 和uClinux/linux/include/linux/flash.h。

  在flash.c中的设备初始化函数 flash—init()里,将Flash作为块设备向系统注册:

  

嵌入式Linux上JFFS文件系统的实现方法,第2张

 

  

嵌入式Linux上JFFS文件系统的实现方法,第3张

 

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存