Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux2.6内核下的YAFFS文件系统移植

一、YAFFS文件系统简介YAFFS,Yet Another Flash File System,是一种类似于JFFS/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,它减少了一些功能,因此速度更快、占用内存更少。YAFFS和JFFS都提供了写均衡,垃圾收集等底层操作。它们的不同之处在于:(1)、JFFS是一种日志文件系统,通过日志机制保证文件系统的稳定性。YAFFS仅仅借鉴了日志系统的思想,不提供日志机能,所以稳定性不如JAFFS,但是资源占用少。(2)、JFFS中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定要回收的块,通过这种方法能提供较好的写均衡,在YAFFS中是从头到尾对块搜索,所以在垃圾收集上JFFS的速度慢,但是能延长NAND的寿命。(3)、JFFS支持文件压缩,适合存储容量较小的系统;YAFFS不支持压缩,更适合存储容量大的系统。YAFFS还带有NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD( Memory Technology Devices,内存技术设备)是对Flash操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。二、YAFFS文件系统的移植yaffs代码可以从http://www.aleph1.co.uk/armlinux/projects/下载(yaffs代码包括yaffs_ecc.c,yaffs_fileem.c,yaffs_fs.c,yaffs_guts.c,yaffs_mtdif.c,yaffs_ramem.c。)表一 Yaffs文件系统源代码相关文件及功能描述文件名 功   能yaffs_ecc.c ECC校验算法yaffs_fileem.c 测试flashyaffs_fs.c 文件系统接口函数yaffs_guts.c Yaffs文件系统算法yaffs_mtdif.c NAND函数yaffs_ramem.c Ramdisk实现1.内核中没有YAFFS,所以需要自己建立YAFFS目录,并把下载的YAFFS代码复制到该目录下面。#mkdir fs/yaffs#cp *.c(yaffs source code) fs/yaffs2.修改fs/Kconfig,使得可以配置yaffs :source "fs/yaffs/Kconfig"3.修改fs/makefile,添加如下内容:obj-$(CONFIG_YAFFS_FS)          += yaffs/4.在fs目录下生成yaffs目录,并在里面生成一个makefile 和KconfigMakefile 内容为:yaffs-objs := yaffs_fs.o yaffs_guts.o yaffs_mtdif.o yaffs_ecc.oEXTRA_CFLAGS += $(YAFFS_CONFIGS) -DCONFIG_KERNEL_2_6Kconfig内容为:## YAFFS file system configurations#config YAFFS_FStristate "Yet Another Flash Filing System(YAFFS) file system support"helpYAFFS, for Yet Another Flash Filing System, is a filing systemoptimised for NAND Flash chips.To compile the YAFFS file system support as a module, choose M here:the module will be called yaffs.If unsure, say N.Further information on YAFFS is available at<http://www.aleph1.co.uk/yaffs/>.config YAFFS_MTD_ENABLEDbool "NAND mtd support"depends on YAFFS_FShelpThis adds the yaffs file system support for working with a NAND mtd.If unsure, say Y.config YAFFS_RAM_ENABLEDbool "yaffsram file system support"depends on YAFFS_FShelpThis adds the yaffsram file system support. Nice for testing on x86,but uses 2MB of RAM.  Don"t enable for NAND-based targets.If unsure, say N.comment "WARNING: mtd and/or yaffsram support should be selected"depends on YAFFS_FS && !YAFFS_MTD_ENABLED && !YAFFS_RAM_ENABLEDconfig YAFFS_USE_OLD_MTDbool "Old mtd support"depends on YAFFS_FS && 0helpEnable this to use the old MTD stuff that did not have yaffs support.You can use this to get around compilation problems, but the bestthing to do is to upgrade your MTD support. You will get better speed.If unsure, say N.config YAFFS_USE_NANDECCbool "Use ECC functions of the generic MTD-NAND driver"depends on YAFFS_FSdefault yhelpThis enables the ECC functions of the generic MTD-NAND driver.This will not work if you are using the old mtd.NB Use NAND ECC does not work at present with yaffsram.If unsure, say Y.config YAFFS_ECC_WRONG_ORDERbool "Use the same ecc byte order as Steven Hill"s nand_ecc.c"depends on YAFFS_FShelpThis makes yaffs_ecc.c use the same ecc byte order asSteven Hill"s nand_ecc.c. If not set, then you get thesame ecc byte order as SmartMedia.If unsure, say N.config YAFFS_USE_GENERIC_RWbool "Use Linux file caching layer"default ydepends on YAFFS_FShelpUse generic_read/generic_write for reading/writing files. Thisenables the use of the Linux file caching layer.If you disable this, then caching is disabled and file read/writeis direct.If unsure, say Y.config YAFFS_USE_HEADER_FILE_SIZEbool "Use object header size"depends on YAFFS_FShelpWhen the flash is scanned, two file sizes are constructed:* The size taken from the object header for the file.* The size figured out by scanning the data chunks.If this option is enabled, then the object header size is used,otherwise the scanned size is used.If unsure, say N.config YAFFS_DISABLE_CHUNK_ERASED_CHECKbool "Turn off debug chunk erase check"depends on YAFFS_FSdefault yhelpEnabling this turns off the test that chunks are erased in flashbefore writing to them.  This is safe, since the write verificationwill fail.  Suggest enabling the test (ie. say N)during development to help debug things.If unsure, say Y.#config YAFFS_DISABLE_WRITE_VERIFY# bool "Disable write verify (DANGEROUS)"# depends on YAFFS_FS && EXPERIMENTAL# help#   I am severely reluctant to provide this config. Disabling the#   verification is not a good thing to do since NAND writes can#   fail silently.  Disabling the write verification will cause your#   teeth to rot, rats to eat your corn and give you split ends.#   You have been warned. ie. Don"t uncomment the following line.##   If unsure, say N.#config YAFFS_SHORT_NAMES_IN_RAMbool "Cache short names in RAM"depends on YAFFS_FSdefault yhelpIf this config is set, then short names are stored with theyaffs_Object.  This costs an extra 16 bytes of RAM per object,but makes look-ups faster.If unsure, say Y.
  • 1
  • 2
  • 下一页
2007年Linux新技术简看重新回到Linux的环抱相关资讯      Linux内核 
  • IT人员必须了解的六项Linux内核变  (今 12:05)
  • Linux 内核更新:3.10.98、3.14.62  (02月26日)
  • Linux:让手机运行主线内核  (11/26/2015 22:16:17)
  • Linux内核自防护项目  (05月24日)
  • Linux 内核架构的理解  (12/09/2015 09:01:01)
  • Linux内核被指缺乏安全性  (11/07/2015 08:28:47)
本文评论 查看全部评论 (2)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼 LPC1788 发表于 2011/12/13 11:32:15
恩智浦Cortex-m3LPC1788内集成有LCD接口自带DMA控制器,可以不依赖CPU和其他系统功能而独立工作;内置的FIFO可作为显示数据的缓冲器,在提供系统时序灵活性的同时,其硬指针支持还可进一步减少显示所需的CPU时间。
LPC1788微控制器还支持超扭曲向列(STN)和薄膜晶体管(TFT)图像显示面板,像素最高达1024×768像素,同时支持单色和最高24位真彩色。
120MHz(可以超频哦。呵呵)的LPC178x微控制器片载最大内存支持512KB闪存、96KBSRAM和4KBEEPROM。
32位外部存储控制器支持SDRAM、SRAM,NOR和NandFLASH器件,提供四种芯片选择LQFP208 LQFP144 TFBGA208 TFBGA180 。
LPC178x系列还支持其他多个外设,包括:
1个LCD控制器
1个USB主机和设备控制器、
1个10/100T以太网控制器、
防篡改事件记录器、
8通道通用DMA(GPDMA)控制器、
12位ADC、10位DAC、
马达控制PWM和正交编码器接口、
5个UART、
3个I2C、
1个I2S音频接口、
3个SSP/SPI、智能卡接口、
4个计时器、窗口看门狗定时器、
1个超低功耗RTC
以及最多165个通用I/O引脚。

恩智浦低成本开发工具平台,LPC1788现已批量供货,价格大幅下降。QQ:19001579 E-MAIL:19001579@QQ.COM TEL:13510231143 可以询价,如需资料请发邮件或加QQ

LPC178x微控制器支持IAR、Keil MDK EmbeddedAr