2010-6-嵌入式文件系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1TM嵌入式系统第6章嵌入式文件系统2TM22课程大纲文件系统基础知识嵌入式Linux文件系统简介Linux文件系统框架和特性嵌入式文件系统相关实验3TM3操作系统、内核、文件系统操作系统?负责对计算机硬件直接控制及管理的系统软件内核操作系统的核心部分文件系统操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。操作系统中与管理文件有关的软件和数据。屏蔽底层硬件的处理细节,用户可以按名字访问数据4TM4Linux文件系统的特点Linux的文件系统Vs.Windows的文件系统Windows文件系统以驱动器的盘符为基础的每一个目录是与相应的分区对应Linux文件系统一个文件树它的所有文件和外部设备(如硬盘,光驱等)都是以文件的形式挂结在这个文件树上总之,在Windows下,目录结构属于分区;Linux下,分区属于目录结构5TM5Linux的目录结构/mntlibprocsbintmphomeetcusrdevbootvarbingrubrc.dsysconfig...testvbird...cdromfloppy...srcbinsbinlogspoolcache6TM6Linux文件系统中的挂载(mount)实现硬件管理手段和软件目录管理手段的统一每一个分区和某一个目录相对应对目录的操作就是对这个分区的操作把分区和目录对应的过程叫做挂载(mount)这个挂载在文件树中的位置就是挂载点这种对应关系可以由用户随时中断和改变7TM7mount命令功能:加载指定的文件系统语法:mount[-afFhnrvVw][-L标签][-o选项][-t文件系统类型][设备名][加载点]例如:mount-tvfat/dev/hda1/mnt/c8TM8Linux文件的类型Linux对目录和设备都当作文件来进行处理分类普通文件目录文件链接文件设备文件9TM91.普通文件如同Windows中的文件包括文本文件shell脚本二进制的可执行程序各种类型的数据10TM102.目录文件目录也是文件包含文件名和子目录名以及指向那些文件和子目录的指针Linux通过上下链接目录文件系统来实现对整个文件系统的操作什么是根目录?11TM113.链接文件又称软链接,符号链接类似于Windows中的“快捷方式”功能实现对不同的目录、文件系统甚至是不同机器上的文件直接访问,并且不需要重新分配磁盘空间命令格式:ln[-s]source_pathtarget_path例如:ln-shttpd.confhttpd2.conf12TM124.设备文件Linux把设备都当作文件来进行操作与设备相关的文件一般都在/dev目录下块设备文件字符设备文件块设备数据的读写是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如硬盘(/dev/hda1)等字符设备指串行端口等接口设备13TM13Linux中常见的文件系统—EXT2Ext2是GNU/Linux系统中标准的文件系统特点单一文件大小及文件系统本身的容量上限与文件系统本身的簇大小有关一般常见的X86系统中,簇最大为4KB,则单一文件大小上限为2048GB,而文件系统的容量上限为16384GB14TM14Linux常见的文件系统-EXT3Ext3是Ext2的下一代在保有目前Ext2的格式之下再加上日志功能日志文件系统(JournalFileSystem)整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪15TM15Linux常见的文件系统--swap交换空间Linux使用整个分区来作为交换空间Windows使用交换文件自定义大小一般这个SWAP格式的交换分区的容量大小是主内存的2倍16TM1616课程大纲文件系统基础知识嵌入式Linux文件系统简介Linux文件系统框架和特性嵌入式文件系统相关实验17TM17嵌入式文件系统Vs.桌面文件系统专有性Vs.通用性嵌入式系统针对特殊目的而定制嵌入式文件系统要为嵌入式系统的设计目的服务不同用途的嵌入式操作系统下的文件系统不同18TM18嵌入式文件系统的设计目标使用简单方便安全可靠实时响应接口标注的开放性和可移植性可伸缩性可配置性开放的体系结构资源有效性功能完整性热插拔19TM19嵌入式操作系统嵌入式文件系统QNX实时操作系统POSIX,SMB,FAT,CD-ROM.VxWorksFFS,FAT,RTllFS,RAWFS,TAPEFS嵌入式LinuxJFFS2,YAFFS,CRAMFS,ROMFS,RAMFS20TM20桌面文件系统不适合嵌入式系统(Ext2fs)为像IDE设备那样的块设备设计的不太适合扇区大小因设备不同而不同的闪存设备没有提供对基于扇区的擦除/写操作的良好管理闪存具有有限的擦除寿命在出现电源故障时,Ext2fs不是防崩溃的不支持损耗平衡Flash中所有被擦写的单元保持相同的擦写次数,因此缩短了扇区/闪存的寿命在设计块驱动程序方面较为困难21TM21存储设备嵌入式Linux文件系统选择嵌入式文件系统的关键点不同的文件系统类型有不同的特点根据存储设备的硬件特性、系统需求等有不同的应用场合嵌入式设备很少使用大容量的IDE硬盘,往往采用RAM、ROM、FLASH存储器等作为存储设备。设计合适的文件系统22TM22FlashMemory(闪存)NAND串行;顺序读取;适合大容量;通常需MTD存储单元被分为页,由页组成块读写以块和页为单位不足:随机存取速度较慢,无法按字节写适合于大容量的多媒体应用中。NOR并行;随机读取;不足:写入和擦除速度较低适合数据或程序存储;XIPXSbase开发平台上所使用的闪存:IntelStrataFlashMemory28F128J3A,NOR23TM23嵌入式存储设备嵌入式Linux文件系统?NANDFlashYAFFSNORFlashJFFS2RAMRAMFSNetworkNFS24TM24JFFS/JFFS22000年Axis公司发布了日志式Flash文件系统jffs在Flash的存储空间中,数据和辅助信息都依次存放2001年初RedHat公司在此基础上推出了jffs2文件系统针对嵌入式系统中的Flash存储器进行设计25TM25JFFS缺陷关于空间回收,jffs并没有进行太多优化不支持对数据进行压缩之后进行存储不支持硬链接,每一个存储块中都保存了对应的文件名26TM26JFFS2:改进jffs2的节点头部中增加了一些新的信息包括CRC校验码和节点类型等改进jffs空间回收方式的缺陷jffs2不再像jffs中只有一种节点;有3种节点类型分别用于表示擦除块的标记,普通文件,目录可以很快取得的数据并不保存在内存之中增加了对数据的压缩开始支持硬链接27TM27YAFFS/YAFFS2JFFS/JFFS2应用于NANDFlash存在问题通过jffs_node维护Flash中的日志节点每个节点需要占用48个字节的内存空间JFFS/JFFS2在挂载时需要扫描整个Flash的内容找出所有的日志节点,建立文件结构28TM28YAFFSYetAnotherFlashFileSystem专门针对NANDFlash特点编写的日志文件系统克服JFFS/JFFS2的缺点很小的内存空间占用很短的挂载时间跨平台的文件系统29TM29YAFFS2YAFFAS存在的问题不支持数据压缩仅对512字节页(后简称小页)大小的NANDFlash很多大容量的NANDFlash(128MB以上),使用大小为2KB的页(后简称为大页)YAFFS2实现对大页Flash的支持在内存空间占用,垃圾回收速度,读写速度等方面均有大幅度提升30TM30Cramfs最初是LinusTorvalds编写的一个文件系统具有简单、压缩和只读等特点用于保存只读的根文件系统内容特点将文件数据以压缩形式存储,在需要运行的时候进行解压缩不能直接在Flash上运行可以节约很多Flash存储空间,但是文件系统运行需要将大量的数据拷贝进RAM中,造成一定的浪费31TM31创建CRAMFS根文件系统映像工具mkcramfs和cramfsck使用如下命令来制作一个CRAMFS映像${ROOTFS}为目标根文件系统所在目录~$mkcramfs${ROOTFS}/cramfs.img32TM3232课程大纲文件系统基础知识嵌入式Linux文件系统简介Linux文件系统框架和特性嵌入式文件系统相关实验33TM33Linux文件系统与存储设备现代操作系统都提供多种访问存储设备的方法Linux文件系统有两条独立控制设备驱动的途径通过设备驱动的接口直接读写磁盘,但是给操作系统带来麻烦,降低稳定性特殊环境下使用,例如数据库管理系统按“块”访问通过文件管理器接口提高系统稳定性按文件结构来读写34TM34Linux文件系统框架设备驱动磁盘设备API文件API文件管理器设备驱动磁盘POSIX文件APIPOSIX文件APIVFS磁盘独立转换器(a)传统文件系统(b)Linux文件系统35TM35Linux文件系统特点在UNIX操作系统中,文件按照树的形式来组织一个文件系统只有一个根目录根目录挂载(mount)Unix文件系统通过文件管理器的操作以及对文件、目录的定位来控制存储设备Linux文件管理器VFS36TM36目录树虚拟文件系统JFFS2RAMFSMTD字符设备MTD块设备MTD设备驱动RAMNORFlash用户层内核层底层驱动硬件层37TM37VFSLinux内核借鉴了很多“面向对象”的思想虽然Linux内核是用C语言来写面向对象中的概念VFS层对应“抽象基类”具体文件系统对应这个抽象基类的“派生类”对文件的操作实现了一个类似于“纯虚函数”的接口如open,write,read等38TM3838课程大纲文件系统基础知识嵌入式Linux文件系统简介Linux文件系统框架和特性嵌入式文件系统相关实验39TM39文件系统实验一建立JFFS2根文件系统二基于BusyBox构建根文件系统三建立ramfs文件系统四NFS文件系统实验五samba介绍与应用40TM40JFFS2在Linux中的两种使用方式根文件系统普通文件系统在系统启动后被挂载41TM41建立JFFS2根文件系统内核配置映像生成42TM42建立JFFS2文件系统-内核配置GeneralSetup项“root=1f03rwconsole=ttyS0,115200init=/linuxrc”MTD驱动在menuconfig中调用flashmemory设备驱动选择CFIFlashdevicemappedontheXSBASE255PXA255board43TM4344TM44JFFS2文件系统支持项还需要在FileSystem选项中选择[*]JournallingFlashFileSystemv2(JFFS2)support45TM45JFFS2映像生成mkfs.jffs2工具创建成imagemkfs.jffs2用法-e选项确定闪存的擦除扇区大小(通常是64K)-p选项用来在映像的剩余空间用零填充-o选项用于输出文件,这里是rootfs.img利用bootloader将生成的rootfs.img下载后写入flash再次重起开发板,内核就能加载JFFS2作为根文件系统./mkfs.jffs2–orootfs.img–e0x40000–rroot_XSBASE–p-l46TM46二:基于BusyBox构建根文件系统Busybox配置Busybox利用BusyBox制作JFFS2的根文件系统47T

1 / 87
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功