网站建设了推广方案,广州3d网站开发,旅游便宜的网站建设,做钢化膜网站1:文件系统分类#xff1a; 基于flash的文件系统#xff1a;flash有两种#xff0c;一种是NOR,另一种NAND。NOR型 FLASH主要用于存放程序。NAND型 FLASH主要用于存放数据。NOR的特点是可在芯片内执行。这样应用程序可以直接在flash内存内运行#xff0c;不必再把代码读到… 1:文件系统分类 基于flash的文件系统flash有两种一种是NOR,另一种NAND。NOR型 FLASH主要用于存放程序。NAND型 FLASH主要用于存放数据。NOR的特点是可在芯片内执行。这样应用程序可以直接在flash内存内运行不必再把代码读到系统的RAM中。NOR的传输效率很高但写入和擦除速度较低。而NAND结构能提供极高的单元密度。并且写入和擦除也很快。是提高数据存储密度的最佳选择。JFFS2型文件系统主要用于NOR型flash。其特点为可读写支持数据压缩的日志型文件系统.而yaffs文件系统一般是基于NAND FLASH上。yaffs文件系统与jffs相比减少了一些功能如支持数据压缩所以挂载时间更短速度更快对内存占用更小。cramfs文件系统既可以用在NOR型flash上也可以用在NAND型FLASH上。其特点为只读的压缩文件系统。 基于RAM的文件系统ramdisk文件系统严格的讲ramdisk并不是一种文件系统而只是一种磁盘访问技术。是将内存中一块区域当作磁盘来用。是一种将实际的文件系统(如ext2)装入内存的机制。还有一种initramfs文件系统也是基于RAM的。不做介绍了。进入主题。 cramfs是一个压缩式的文件系统它并不需要一次性地将文件系统中的所有内容都解压缩到内存中 而只是在系统需要访问到某个位置的数据的时候马上计算出该数据在cramfs中的位置将其实时地 解压缩到内存之中然后通过对内存的访问来获取文件中需要读取的数据。cramfs中的解压缩以及解 压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的用户并不需要了解具体的实现 过程因此这种方式增强了透明度对开发人员来说既方便、又节省了存储空间。 cramfs拥有以下一些特性 1、采用实时解压缩方式但解压缩的时候有延迟 2、cramfs的数据都是经过处理、打包的对其进行写操作有一定困难。所以cramfs不支持写操作这个特性 刚好适合嵌入式应用中使用Flash存储文件系统的场合 3、在cramfs中文件最大不能超过16MB 2.1 Linux根文件系统 根文件系统不同于普通文件系统它是在内核启动时挂载mount的第一个文件系统 内核代码映像文件保存在根文件系统中而系统引导启动程序会在根文件系统挂载之后把一 些基本的初始化脚本和服务程序等加载到内存中。 Linux 根文件系统是树型结构组织[1,3]它包含了内核和系统管理所需要的各种文档和程序等。一般来说根目录“/”下顶层目录都有一些比较固定命名和用途下面列出一 个Linux 根文件系统中的比较常见的目录结构。 /bin存放二进制可执行命令的目录。 /dev存放设备文件和目录。 /etc存放系统管理和配置文件和目录。 /home用户主目录比如用户user 的主目录就是/home/user,可以用~user 来表示。 /lib存放动态链接共享库的目录。 /sbin存放系统管理员使用的管理程序的目录。 /tmp公用的临时文件存储点。 /root系统管理员的主目录。 /mnt用以临时挂载其他的文件系统。 /proc虚拟文件系统可直接访问这个目录来获取系统信息。 /var某些大文件溢出区。 /usr存放应用程序和文件。 对于嵌入式 Linux 系统的根文件系统来说由于受系统资源的限制一般没有上述 那么复杂仅保留一些常用的目录即可。如/bin、/dev、/etc、/lib、/proc、/var、/tmp、/usr、 /mnt 等[2]。 由于嵌入式系统的设计冗余度小、系统紧凑通常存储容量有限因此必须选择 一个合适的根文件系统以使系统运行最佳。目前嵌入式Linux 根文件系统主要的根文件系 统类型有Romfs, JFFS2, RAMDISK, YAFFS/YAFFS2, Cramfs, Squashfs 等[1]。本文主要对 Cramfs 根文件系统进行讨论 3根文件系统的制作 (1):新建一个目录取名为rootfs,在其文件夹下创建根文件系统必须的目录。这些目录有bin,dev,etc,lib,proc,sbin,sys,usr,mnt,tmp,var.usr/bin,usr/lib,usr/sbin,lib/modules。 2创建设备文件以下两个设备文件必须创建。 mknod -m 666 console c 5 1 (说明C为字符型设备的意思5为主设备号1为次设备号) mknod -m 666 null c 1 3 (3)在/etc目录下装以上文件。inittab ,profile,fstab,init.d(文件夹)init.d/rcS.这几个文件必须要有我做实验的时候是直接拷的开发箱上的这几个文件。 (4)编译内核模块 make modules (5)安装内核模块 make modules_install INSTALL_MOD_PATH/XXX/rootfs(后面跟根文件系统路径,为什么要安装模块到根文件系统是因为这些模块是用的时候才加入内核中。保存在根文件系统的lib/modules目录中) 6配置busybox busybox主要是制作根文件系统下面的命令如ls,mkdir等。这是一个很好用的工具。最后编译成功会生成一个busybox文件然后这些命令最后都是链结到这个busybox文件上。busybox配置中注意的选项有:编译选项中选择使用静态链接库交叉编译环境的选择。特别注意里面有一个installation option.里面有一个busybox installation prefix把你建的rootfs的路径填进去。 7如果busybox成功配置好那么你转到rootfs下的bin目录就可以看到很多的命令和一个busybox文件。最后一步就是把rootfs打包成适合开发板的镜像文件了这一步根据你要选择的文件系统开发板的文件系统地址有关。我用的是jffs2文件系统。最后的命令为./mkfs.jffs2 -r rootfs -o rootfs.img -e 0x20000 --pad0xd00000