文件系统的制作
- 格式:doc
- 大小:228.51 KB
- 文档页数:14
制作ramdisk文件系统制作一个最基本的文件系统(这里采用busybox1.1.0:准备:Busybox1.1.0源码;交叉编译工具链gcc-3.4.6;Linux2.6源码包;下面开始制作:一:建立交叉编译环境,将gcc-3.4.6解压到/opt下二:解压busybox-1.1.0.tar.bz2:busybox-1.1.0.tar.bz2jxf#tar三:进入解压后的目录busybox-1.1.0,开始进行busybox的编译配置:1.运行#make menuconfig后,选择Build Options2.选上选项:”Do you want to build BusyBox with a cross compiler?”(让它采用交叉编译工具链进行编译)选择要使用的工具链的路径:(./_install)BusyBox installation prefix:指定生成的文件的路径.4.再在其它的选项里选择好你要编译入文件系统的命令,保存退出!5.编译:#make clean allinstall#make这样,就在/busybox-1.1.0/_install下生成了bin,sbin,linuxrc四.开始制作文件系统:建立文件夹:mkdir bin dev home proc sbin tmp var boot etc lib mnt root sys usr etc/init.d u sr/etc___________________________________________________________mknod -m 600 dev/console c 5 1mknod -m 666 dev/null c 1 3___________________________________________________________vi etc/profile#!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsechoecho -n "Processing /etc/profile......"# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1USER = "`id -un`"LOGNAME=$USERPS1='[\u@\h\W]\$'PATH=$PATHecho "Done!"___________________________________________________vi etc/init.d/rcS#!/bin/sh# set hostname, needed host file in /etc directory#./etc/hosthostname `cat /etc/host`# mount all filesystem defined in "fstab"echo "#mount all......."/bin/mount -a#+yangdk/bin/chmod 0666 /dev/nullecho "# starting mdev...."/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s/usr/etc/initecho "******************************************" echo " Guoguifu linux-2.6.24.4 boot " echo " 2008-12-15 "echo " grandchips "echo "******************************************" ______________________________________________vi etc/fstabproc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0________________________________________________vi etc/inittab::sysinit:/etc/init.d/rcS::respawn:-/bin/shtty2::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r::shutdown:/bin umount -a -r::shutdown:/sbin/swapoff -a_________________________________________________ vi usr/etc/init#!/bin/shifconfig eth0 192.168.3.111 upifconfig lo 127.0.0.1_________________________________________________ vi mdev.conf (空的)_________________________________________________将下列几个必须库从工具链gcc-3.4.6的目录:gcc-3.4.6/mipsel-linux/lib拷贝到lib目录.ld.so.1, ld.-2.3.6.so, libcrypt.so.1, libc.so.6, libdl.so.2, libgcc_s.so.1, , libm.so.6, libpthread.so.o, libstdc++.so.6cp /opt/gcc-3.4.6/mipsel-linux/lib/库 lib/至此,文件系统制作完成!!五.将制作好的文件系统ramdisk放到linux2.6源码包的目录:linux26_3210/arch/mips/下,再回到linux26_3210根目录下进行内核配置,让内核采用ramdisk文件系统:1.进入:Device Driver->Block devices,选上”RAM disk support”选项,并在下面的三个ramdisk大小等参数进行配置,如下图所示:2.进入General setup,在”initramfs source file” 里输入ramdisk的路径:arch/mips/ramdisk,如下图所示:保存退出,完成内核配置!编译linux后,这个linux内核就选择ramdisk文件系统启动了,启动后可以看到刚做的简单文件系统在板上跑☺。
制作ramfs文件系统
1)准备
要有一个已经可以使用的文件系统,假设目录为/rootfs
Linux内核需要支持ext2文件系统及ramdisk支持(fs相应的选项要勾上)
2)在pc上制作ramdisk镜像
(1)dd if=/dev/zero of=ramdisk.img bs=1k count=4096 这样制作的镜像有4MB,可以根据自己的需要修改
(2)mkfs.ext2 -m0 ramdisk.img
将ramdisk.img格式化为ext2格式
(3)mount -o loop ramdisk.img /mnt/ramdisk/
将ramdisk.img挂载到/mnt/ramdisk目录
(4)cp -a /rootfs /mnt/ramdisk
将自己的文件系统全部拷贝到/mnt/ramdisk目录去
(5)umount /mnt/ramdisk
卸载ramdisk挂载
此时生成可用的ramdisk.img镜像
(6)gzip -v9 ramdisk.img
压缩镜像,我没试过加载压缩的镜像,应该也可以
3)修改开发板bootargs,添加 initrd=0x31000000,4096000 这里0x3100000是ramfs文件系统的加载地址,4096000是大小
重启开发板,应该正常加载ramfs文件系统。
实现一个简单的文件系统一个简单的文件系统是指一个用于管理文件和文件夹的系统,可以进行基本的文件和文件夹的创建、删除、重命名、查找、打开、关闭等操作。
以下是一个简单文件系统的实现,主要包括文件和文件夹的数据结构和相关操作。
1.数据结构:- 文件(File):包含文件名、文件内容、创建时间、修改时间等属性。
- 文件夹(Folder):包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及包括的文件和文件夹列表。
2.操作:-创建文件夹:可以根据输入的文件夹名和路径,在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
-创建文件:可以根据输入的文件名和路径,在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
-删除文件夹:可以根据输入的文件夹名和路径,将对应的文件夹对象从上级文件夹的文件夹列表中删除,并删除其包含的所有文件和文件夹。
-删除文件:可以根据输入的文件名和路径,将对应的文件对象从所在文件夹的文件列表中删除。
-重命名文件夹:可以根据输入的原文件夹名和路径以及新文件夹名,将对应的文件夹对象重命名。
-重命名文件:可以根据输入的原文件名和路径以及新文件名,将对应的文件对象重命名。
-查找文件夹/文件:可以根据输入的文件夹名和路径,查找对应的文件夹对象。
-打开文件:可以根据输入的文件名和路径,打开对应的文件对象,并显示其内容。
-关闭文件:可以关闭当前打开的文件。
3.实现:- 定义一个文件夹类(Folder),包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及一个存储文件夹对象的列表。
- 定义一个文件类(File),包含文件名、文件内容、创建时间、修改时间等属性。
- 实现创建文件夹的方法(createFolder),在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
- 实现创建文件的方法(createFile),在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
制作根文件系统有两种方法1、利用开发板提供的映像文件制作ramdisk2、利用busybox制作根文件系统(制作过程复杂)采用第一种方法制作需要的ramdisk1、拷贝已有的uramdisk.image.gz 到新建的tmp/下,cp uramdisk.image.gz tmp/2、去掉mkimage生成的64 bytes 的文件头,生成新的ramdisk.image.gz$ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=13、 gunzip解压ramdisk.image.gz 生成ramdisk.image$ gunzip ramdisk.image.gz4、新建挂载目录“ramdisk”,并将ramdisk.image挂载$ sudo mount -o loop,rwramdisk.imageramdisk5、接下来,只需要将ramdisk目录下的内容全部拷贝到rootfs下即可cp -R ramdisk /* rootfs这样就有了自己的rootfs,省去利用busybox制作的麻烦了有了制作好的rootfs,下面就开始制作映像文件了1、创建镜像文件ramdisk8M.image,并设置大小为8M,文件系统格式为ext2$dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192$mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0$tune2fs ramdisk8M.image -i 0$chmod 777 ramdisk8M.image大小可以按照需要自己调整,但是最好不要超过32M,创建ramdisk目录,将ramdisk8M.image 挂载到该目录下$mkdirramdisk$mount -o loop ramdisk8M.image ramdisk/接下来,只需要将rootfs目录下的内容全部拷贝到ramdisk下即可$cp -R rootfs/* ramdisk注意,这里cp的参数一定是R而非r。
Linux-2.6.31交叉编译器版本:arm-linux-gcc 4.1.2操作系统平台:Linux -- Red Hat 9.0开发板平台:QT2440使用的工具:Busybox-1.15.2第一步:创建根文件系统目录,主要包括以下目录:/bin,/etc,/dev,/home,/lib,/mnt,/opt,/proc,/root,/sbin,/sys,/tmp,/usr,/var.建一个名为root 的文件夹mkdir root在该文件夹下创建以上目录mkdir bin etc dev ……………第二步:获取busybox1.15.2 源码,在/downloads/ 找到busybox-1.15.2.tar.bz2这个压缩包,下载,解压:tar xjvf busybox-1.15.2进入源码目录,修改Makefile第164 行,CROSS_COMPILE = arm-linux-第190 行,ARCH = arm执行#make menuconfig进行配置busybox配置完后,执行#make make install然后就会在上一级目录下生成rootfs 文件夹,里面包含几个文件夹/bin /sbin /usr linuxrc把这些文件全部复制到刚建好的root目录下,#cp –rf * ../root第三步:在dev 目录下,创建两个设备节点:#mknod console c 5 1#mknod null c 1 3进入etc 目录,添加文件:拷贝Busybox-1.15.2/examples/bootfloopy/etc/* 到当前目录下。
# cp –r ../../busybox-1.15.2/examples/bootfloopy/etc/* ./包括文件:fstab init.d inittab profile拷贝/etc/passwd, /etc/group, /etc/shadow 到当前目录下。
制作ramdisk类型文件系统ramdisk也就是内存盘的意思。
所谓的RAM驱动器,实际上是把系统内存划出頒分当做硬盘使用。
对于操作系统来讲内存的存取速度远远大于机械磁盘,所以RAM驱动器肯定要比机械的硬盘快得多。
你可以把整个应用程序都安装在ramdisk的驱动器中,然后用内存的速度运行它。
使用RAM驱动器技术对于延长笔记本电脑电池使用时间也是十分有利的,因为这样做可以减少访问〃耗电大户”的次飢Ram:内存,Disk :磁盘,在Linux中可以将一部份内存当做分区来使用,称之为Ramdisk。
对于一些时常被访问、并且不会被更改的文件,可以将它们通过Ramdisk 放在内存中,能够明显地提高系统性能。
Ramdisk工作于虚拟文件系统(VFS )层,不能格式化,但可以创建多个Ramdisk。
虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,Ramdisk还是很好用的。
如果对计算速度要求很高,可以通过增加内存来实现,使用ramdisk技术。
一个A Ramdisk 就是把内存假设为一个硬盘驱动器,并且在它的上面存储文件,假设有几个文件要频繁的使用,如果将它们加到内存之中,程序运行速度会大幅度提高,因为内存的读写速度远高于硬盘。
划出部份内存提高整体性能,不亚于更换新的CPU。
像Web服务器这样的计算机,需要大量读取和交换特定的文件。
因此,在Web服务器上建立Ramdisk会大大提高网络读取速度。
从制作Ramdisk根文件系统的方法上来说,是很简单的。
1 .配置Linux内核支拮Ramdisk类型的文件系统。
2.制作好根文件系统,使用之前实验案例制作好的根文件系统。
3.将制作好的根文件系统制作成Ramdisk类型文件系统。
4.下载到TPAD上使用测试。
实现1 .对内核进行配置,使得内核能够支持Ramdisk类型的文件系统,如图・9 ,图・10 ,图•11。
$ cd /home/tarena/workdir/tools/linux-2.6.35.7$ make menuconfig$ make zlmage$ cp arch/arm/boot/zlmage /tftpboot图・9S-10config • Linux Kernel V2.6.35.7 ConfigurationArrow keys navigate the nenu. <Enter> selects submenus Highlighted letters are hotkeys. Pressing <Y> includes9 <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit, <?> for Help.</> for Search. Legend: [w] built-in [ ] excluded <M> module < ><w> M nory Technology Device <HTD) support <xarelLeL uoiLt s|[w] BLock devicesI■j HI>c uevxce><> ATA/ATAPI/MFM/RLL support (DEPRECATED)CSI device support -•<> serial ATA and Parallel ,] M IttpXe devices driver ♦] N twork device support]ISDN support > ATA drivers —> support (RAID and LVM)Select Exit > < Help >图・11config - Ltn ConArrow keys navigate the nenu. <Enter> selects subnenus --->• Highlighted letters are hotkeys.Pressing <Y> includes f <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit. <?> for Help. <f> for Search. Legend: [*] built-in [ ] excluded <M> module < >•・・ DRBD disabled because PROOFS f INET or CONNECTOR not se < > N twork block device support<*^^^A^DiocKaevlcesup^rt (16) default number of RAM disks2.制作Ramdisk文件系统的过程,如图・12 ,图・13 ,图・14 ,图・15 ,图・16所$ cd /home/tarena/workdir/tools/busybox-1.19.4/_lnstall/dev$ sudo mknod console c 5 1$ sudo mknod null c 1 3$ cd /home/tarena/workdir/tools/busybox-1.19.4$ dd if=/dev/zero of=initrd.img bs=lk count=8192$ sudo mkfs.ext2 -F initrd.img$ sudo mkdir /mnt/initrd$ sudo mount -t ext2 -o loop initrd.img /mnt/initrd$ sudo cp Jnstall/* /mnt/initrd -a$ sudo amount /mnt/initrd$ gzip -best -c initrd.img > ramdisk.img$ sudo chmod 777 ramdisk.img$ cp ramdisk.img /tftpboot图・12consoke^tQQls libbb ______ util^ltnux记県丫8192♦。
Yaffs2文件系统移植到mini2440现在大部分开发板都可以支持yaffs2 文件系统,它是专门针对嵌入式设备,特别是使用nand flash作为存储器的嵌入式设备而创建的一种文件系统,早先的yaffs仅支持小页(512byte/page)的nand flash,使用yaffs2 就可以支持大页的nand flash。
所谓的根文件系统,就是创建各个目录,并且在里面创建各种文件,比如在/bin,/sbin/目录下存放各种可执行的程序,在/etc目录下存放配置文件,在/lib目录下存放库文件,下面就开始文件系统的移植。
一、准备工作1.Yaffs2源代码的获取在bbb:///node/346可以下载到最新的yaffs2 源代码,如果使用git工具,在命令行输入:就可以下载到yaffs2的源代码,到当前目录下。
2.下载Busybox-1.13.3可以从bbb:///downloads/下载Busybox-1.13.3。
3.下载Yaffs2的整理工具可以到友善之臂的网站下载,mkyaffs2image.tgz,其中解压出来有两个可执行的文件,一个是针对小页的,一个是针对NandFlash大页的,其名字为mkyaffs2image-128M,一开始在这里犯了错误,我的NandFlash是128MB的,可以按照网上用的是mkyaffs2image文件,所以老是出来假坏块的提示,仔细一分析,NandFlash不可能一下子出来这么多的坏块,而且我用他们公司提供的根文件系统却没有任何的问题,所以问题处在了整理Yaffs2的工具上面。
因为这两种大小NandFlash的ECC校验是不一样的,也就是spare区的大小是不一样的,造成了ECC校验出错。
4.链接库整理根文件系统时,要使用到链接库,这里直接使用友善之臂根文件系统中的链接库。
从网站下载root_qtopia.tgz。
使用lib目录下的链接库。
5.给内核打上YAffs2补丁然后进入yaffs2源代码目录执行:#cd yaffs2#./patch-ker.sh c /opt/mini2440/linux-2.6.33.3此时进入linux-2.6.32.2/fs目录,可以看到已经多了一个yaffs2目录。
linux创建文件系统的步骤
1. 确认磁盘分区:使用fdisk或parted等工具对磁盘进行分区,确保分区正确。
2. 格式化分区:使用mkfs命令对分区进行格式化,例如:mkfs.ext4 /dev/sda1。
3. 挂载分区:使用mount命令将分区挂载到指定的挂载点上,例如:mount /dev/sda1 /mnt。
4. 配置/etc/fstab文件:将分区的挂载信息添加到/etc/fstab 文件中,以便系统在启动时自动挂载。
5. 设置权限:使用chmod和chown命令设置文件系统的权限和所有者。
6. 创建目录:使用mkdir命令创建需要的目录。
7. 配置文件系统:根据需要,可以使用tune2fs等工具对文件系统进行配置,例如:tune2fs -c 10 /dev/sda1,表示每10次挂载后进行一次文件系统检查。
8. 测试文件系统:使用df和du等命令检查文件系统的使用情况,确保文件系统正常工作。
1. 首先格式化nand flash;在vivi界面下输入f;2.将已经制作好的uboot.bin烧写到nand flash 的bootloader 分区(1):在vivi界面下输入q 进入命令界面:(2):在vivi界面下输入part show 查看nand flash 的分区情况:(2):在vivi界面下输入命令load flash 0 0x00040000 u 将uboot.bin 烧写到nand flash 的boot loader 分区:(3):烧写完成后,使mini2440开发板从nand flash 启动:3.将制作好的uImage 烧写到nand flash 对应的内核分区:(1):运行命令“tftp 0x30000000 192.168.1.1:uImage”,(192.168.1.1为tftp服务器地址)将内核镜像uImage 下载到内存0x30000000地址处:址处的整个kernel 分区:(3):运行命令“nand write 0x30000000 0x00060000 400000”将位于0x30000000出的内核镜像烧写到nand flash的整个内核分区:(4):改变bootcmd 的值,让uboot 在加载模式下能自动启动内核:setenv bootcmd 'nboot 0x30007fc0 0 0x00060000;bootm'(5)saveenv保存4.设置启动参数setenv bootargs noinitrd console=ttySAC0 root=/dev/mtdblock3init=/linuxrc rootfstype=cramfs5.mknod mtdblock0 b 31 0mknod mtdblock1 b 31 1mknod mtdblock2 b 31 2mknod mtdblock3 b 31 36.把制作好的rootfs制作成镜像mkcramfs rootfs rootfs_cramfs.img7.将制作好的rootfs_cramfs.img烧写到nand flash 对应的root分区:(1):运行命令“tftp 0x30000000 rootfs_cramfs.img”,将rootfs镜像下载到内存0x30000000地址处:(2):nand erase 0x00560000 0x00a00000(3):nand write 0x30000000 0x00560000 600000。
使用新的busybox-1.13.3制作jffs2文件系统由于之前使用的文件系统中的busybox是1.5版本,结果很多工具都没有完善,这一次,在上下载了当前的最新稳定版本,busybox-1.13.3来制作,总算搞定了,但也出现了一些问题,贴出我的过程跟大家分享一下,也给有需要的人一点帮助,希望如此。
全文如下:2009-3-26陈纪煌今天尝试了移植新的文件系统,使用的是busybox-1.13.3稳定版本由于之前所使用的版本是busybox-1.5.0,结果发现很多东西无法支持,比如nfs无法挂在,并且clear等工具无法正常使用所以下了一个新的版本进行尝试1.解压该包tar xf busybox-1.13.3.tar.bz2cd busybox-1.13.32.修改Makefile找到CROSS_COMPILE ?=修改为CROSS_COMPILE ?=arm-linux-找到ARCH ?= $(SUBARCH)修改为ARCH ?= arm3.进行默认配置make defconfig4.对配置信息进行修改make menuconfig检查Miscellaneous Utilities--->taskset 是否已经去除同时设置如下:Busybox Settings --->Build Options --->[*]Build BusyBox as a static binry (no shared libs)()Cross Compiler prefix=/usr/local/arm/3.4.1/bin/Installation Options --->[*]Don't use /usrBusyBox installation=${PROJECT}/rootfs/rootfs_1.13这几个设置对于之前做过相关工作的人来说是比较熟悉的,都很容易知道为何如此做。
嵌入式实训任务书一、设计题目文件系统的制作二、设计背景近年来,现代科学技术的发展日新月异,方便实用性已成为现代人生活和工作更为关注的话题。
与此同时,电子产品越来越向智能化、小型化、人性化、低功耗等方面发展。
随着计算机技术、微电子技术和网络技术的迅速发展,嵌入式系统在工农业等诸多领域得到了广泛的应用.传统的8位单片机已经暴露了本身资源有限的缺点,越来越不能适应日渐复杂的应用需求,而随着32位处理器价格的不断下降,采用更高性能的32位处理器作为嵌入式系统的核心成为更加合理的选择.ARM处理器是目前公认的业界领先的32位嵌入式RISC微处理器,已成为许多行业嵌入式解决方案的RISC标准.开发一个集嵌入式控制、高效数据采集和网络通信于一体,并提供友好的人机操作界面的硬件平台,对于提高智能嵌入式系统可靠性、组网灵活性很有意义.三、设计内容及目标设计内容:嵌入式系统与通用PC 机不同,一般没有硬盘这样的存储设备而是使用Flash 闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置,熟悉嵌入式系统中常用的存储设备及其管理机制,制作常用的基于FLASH 的文件系统类型。
根据具体的硬件配置,制作嵌入式Linux 系统中文件系统,编译后,能在我们的实验装置上运行起来。
设计目标:动手制作一个文件系统的映像文件,修改正确,能够再实验装置上运行。
四、进度安排工作内容预定目标次星期一至星期三图书硬件原理图设计馆查相关资料;星期四至星期五完成硬件设计;星期一至星期二进实验室进行硬件调试;星期三至星期五进行软件设计;完成硬件设计,软件方案设计星期一至星期二进实验室进行软件调试;星期三至星期五完成软件设计;完成软件设计星期一至星期四进实验室进行联合调试;星期五整理实验报告。
完善硬件及软件设计,整理报告初稿星期一至星期四进实验室进行联合调试;星期五完成报告。
完成实习报告五、设计时间:2013 年9 月2 日到2013 年10 月 4 日通信教研室指导教师:孙守昌_1、前言 (1)1.1课题的背景、目的和意义 (1)1.2课题的现状 (1)1.3发展趋势 (1)2、课题设计 (2)2.1实验的原理 (2)2.2流程图设计 (3)2.3交叉工具 (3)2.3.1启动secureCRT (4)2.3.2将压缩包解压 (4)2.3.3添加pathmunge /usr/local/4.4.3/bin (4)2.3.4执行source /etc/profile (4)2.3.5执行arm-linux-gcc -v检查是否安装完成 (4)2.4配置busybox (4)2.4.1执行make menuconfig进行配置 (4)2.4.2将busybox installation prefix设置位置为/xxx/rootfs (5)2.4.3输入编译,安装busybox命令 (5)2.5配置cramfs文件系统制作工具 (5)2.6根文件系统制作 (5)2.6.1准备根文件系统 (5)2.6.2创建设备文件 (6)2.6.3安装/etc (6)2.6.4编译内核模块 (6)2.6.5安装内核模块 (6)2.6.6busybox编译生成bin目录下文件 (7)2.6.7生成CramFS 文件系统映像文件cram.img (7)3、结论 (7)参考文献 (7)1、前言1.1课题的背景、目的和意义近年来,现代科学技术的发展日新月异,方便实用性已成为现代人生活和工作更为关注的话题。
与此同时,电子产品越来越向智能化、小型化、人性化、低功耗等方面发展。
随着计算机技术、微电子技术和网络技术的迅速发展,嵌入式系统在工农业等诸多领域得到了广泛的应用.传统的8位单片机已经暴露了本身资源有限的缺点,越来越不能适应日渐复杂的应用需求,而随着32位处理器价格的不断下降,采用更高性能的32位处理器作为嵌入式系统的核心成为更加合理的选择.ARM处理器是目前公认的业界领先的32位嵌入式RISC微处理器,已成为许多行业嵌入式解决方案的RISC标准.开发一个集嵌入式控制、高效数据采集和网络通信于一体,并提供友好的人机操作界面的硬件平台,对于提高智能嵌入式系统可靠性、组网灵活性很有意义.熟悉Linux文件系统目录结构,创建自己的文件系统,用文件系统生成cramfs文件系统映象文件。
1.2课题的现状进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。
在通信领域,数字技术正在全面取代模拟技术。
在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。
数字音频广播(DAB)也已进入商品化试播阶段。
硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。
目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。
而且巨大的市场需求给我们提供了学习研发的资金和技术力量。
从软件方面讲,也有相当部分的成熟软件系统。
国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。
我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,中科院推出的Hopen嵌入式操作系统(虽然还不够完善)。
同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。
嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。
网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。
1.3发展趋势未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。
传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。
软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。
2、课题设计2.1实验的原理文件系统是Linux 系统必备的一个部分,主要是一些系统文件和应用文件存储的地方,但是通常使用的PC 上的文件系统包括很多功能,但是体积比较大通常有几百兆之多,但是在嵌入式系统中要使用这样的文件系统是不可能的,所以,嵌入式系统中的文件系统是一个简化版,包括必须的几个目录和文件,完成需要的功能即可。
下面我们就来对文件系统中包含的东西和文件进行些简要的说明。
文件系统要求建立的目录有/bin,/sbin,/etc,/dev,/lib,/mnt,/proc,/usr。
/bin 目录下需要包含常用的用户命令,如sh 等。
/sbin 目录要包含所有系统命令,如reboot 等。
/etc 目录下是系统配置文件。
/boot 目录下是内核映像/dev 目录含有系统所有的特殊设备文件/lib 目录包含系统所有的库文件/mnt 目录只用于挂接,可以是空目录/proc 目录是/proc 文件系统的主目录,包含了系统的启动信息/usr 目录含有用户选取的命令。
Mount:挂接根文件系统时使用的命令有些Linux开发商将此文件安排在/sbin下ls:列出目录下的文件需使用的命令。
ping:基本的网络测试命令,运行在网络层。
目录/lib 需包含libc.so.6 ,ld-linux.so.2 ,libcom_err.so.2 libcrypt.so.2 ,libpam.so.0 ,libpam_misc.so.2,libuuid.so.2,libnss_files.so.2,libtermcap.so.2 和security。
这些库文件的作用是:libc.so.6:Linux 系统中所有命令的基本库文件。
ld-linux.so.2:基本库文件libc.so.6 的装载程序库。
libcom_err.so.2:对应命令出错处理的程序库。
libcrypt.so.2:对应加密处理的程序库。
libpam.so.0:对应可拆卸身份验证模块的程序库。
libpam_misc.so.2:对应可拆卸身份验证模块解密用的程序库。
libuuid.so.2:对应于身份识别信息程序库。
libnss_files.so.2:对应名字服务切换的程序库。
libtermcap.so.2:用于描述终端和脚本的程序库。
security:此目录用来提供保证安全性所需的配置,与libpam.so.0 配合使用。
目录/mnt 和/proc 可以为空。
2.2流程图设计安启建立交叉配安装cramfs文件系统建制作根文件2.3交叉工具交叉编译(arm-linux-gcc-4.4.3)是在宿主机使用交叉编译器编译源代码的过程。
两个机子有不同的机器指令。
工具链指编译、汇编、链接等一整套工具。
在x86的linux系统下运用交叉编译器进行编译,然后将编译完的代码加载到arm 环境的硬件中执行。
2.3.1启动secureCRT启动secureCRT远程登录到虚拟机centos6.4系统目录下,使用yum install lrzsz安装lrzsz工具,可通过CRT在物理机和虚拟机中的linux系统传送文件,下载arm-linux-gcc-4.4.3.tar.gz,通过rz命令将压缩包传入虚拟机。
2.3.2将压缩包解压tar zxvf arm-linux-gcc-4.4.3.tar.gz -C /2.3.3添加pathmunge /usr/local/4.4.3/bin我们为了可以在任何目录下直接使用上述编译器,我们需要修改文/etc/profile 这个文件,添加pathmunge /usr/local/4.4.3/bin2.3.4执行source /etc/profile2.3.5执行arm-linux-gcc -v检查是否安装完成2.4配置busyboxBusyBox 是一个集成了一百多个最常用linux命令和工具的软件。
BusyBox包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。
有些人将BusyBox称为Linux工具里的瑞士军刀。
简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux 的许多工具和命令。
2.4.1执行make menuconfig进行配置将压缩包传入centos中,将busybox解压出来,进入busybox目录执行make menuconfig进行配置2.4.2将busybox installation prefix设置位置为/xxx/rootfs该选项表示编译后的busybox安装的位置2.4.3输入编译,安装busybox命令make ARCH=arm CROSS_COMPILE=arm-linux-make install2.5配置cramfs文件系统制作工具CRAMFS文件系统是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3.如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先得把flash上的映像文件全部解压到ram中,构造ramdisk环境,才可以运行程序,但有一个致命的弱点,在正常情下,同样的代码不仅在flash占用了空间,而且还在ram中占用极大的空间,这违背了嵌入式中节省资源的原则。