版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 西华大学课程设计说明书数学与计算机学院课程设计说明书课 程 名 称: 嵌入式系统原理-课程设计 课 程 代 码: 8427300 题 目: cramfs文件系统移植 年级/专业/班: 计算机科学与技术09-3 学 生 姓 名: 蒋 敏 学 号: 312009080605316 开 始 时 间: 2012 年 5月 20 日完 成 时 间: 2012 年 6 月 3 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日i嵌入式系统原理课 程 设 计 任 务 书学院名称: 数学与计
2、算机学院 课程代码:_8427300_专 业: 计算机科学与技术 年 级: 2009 一、设计题目 cramfs文件系统移植二、主要内容 在arm9芯片开发板上完成文件系统的移植。加深对嵌入式linux的认识和理解。 学习利用busybox制作文件系统,内核编译以及裁剪。增加cramfs文件系统支持选项,删除不必要的选项。 提升动手能力,以及实际解决问题,在题目过程中会遇到很多意想不到的错误,一一去解决这些问题。三、具体要求及应提交的材料1、完成系统的需求分析:包含功能需求、数据需求、性能需求等。2、完成系统设计:包含系统概要设计(软件结构图)及详细设计(画出流程图)。3、测试:编写合适的测试
3、用例完成系统的测试工作并分析结果。4、完成后应上交的材料: 课程设计说明书:包含封面、任务书、说明书(说明书见后面模板)。 软件源程序光盘。四、主要技术路线提示1、认真阅读相关知识,完成系统的功能分析和系统设计。2、熟悉嵌入式linux开发板及开发环境。3、首先理解提供的相应设备的驱动程序。4、先在linux下完成应用程序的编译与调试,最后下载到开发板上进行验证。11 cramfs文件系统的移植五、进度安排1、第一周 完成系统分析和设计,并进行程序开发。2、第二周 完成程序开发,进行测试并分析结果,最后撰写课程设计报告。六、推荐参考资料1 潘巨龙.arm9嵌入式linux系统构建与应用m.北京
4、航空航天大学出版社.20062 马忠梅.armlinux嵌入式系统教程m.北京航空航天大学出版社.20043 革新科技. 嵌入式教学实验教程m.北京:革新科技指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日12目 录 1 引言11.1 问题的提出11.2 国内外研究现状11.3 任务与分析12 需求分析12.1 cramfs文件系统移植总体设计13 概要设计24 详细设计25 使用说明86 总结8附录1各包下载地址11参考文献12 西华大学课程设计说明书1 引 言 1.1 问题的提出 随着计算机的普及,物联网的观念越来越深入人心,嵌入式的发展由此而走向鹏飞的趋势。嵌入式系统具有着
5、高效率、低功耗、低成本、高性能、体积小等优点逐渐被人们所认可。而嵌入式的开发也是千变万化。随着技术的发展,对于flash的扩展已经不再是主流,此时嵌入式工程师们更倾向于精简系统,此时cramfs文件系统在嵌入式平台上的应用受到追捧。本报告就cramfs文件系统在嵌入式上的移植做一个详细的报告。以及故障的排除。1.2国内外研究的现状 对于嵌入式的发展国外较国内超前很多,我国的嵌入式发展才刚刚起步,在初级阶段,最重要的是要打牢基础,扎扎实实的学号基本知识,基本功练好,才能走得更长远。1.3任务与分析 本课题主要目的是体验嵌入式的移植功能,移植性能以及过程。其次对嵌入式的开发有一定的了解,体会其中的
6、过程,并从中学到知识。cramfs的移植过程中,涉及内核的编译与裁剪,嵌入式开发平台的搭建,以及文件系统制作等过程。这都是学习嵌入式linux的基本功。需要牢牢掌握,并从中体会嵌入式系统的优越性以及可移植性。2 需求分析 在嵌入式的环境之下,要求尽量节省系统硬件资源,特别是内存ram和外存flash资源都需要节约使用。如果使用基于ram的文件系统,比如ramdisk,则在系统运行加载文件系统时需要把存储在flash上的文件系统影像文件解压到内存ram中,构建其ramdisk环境,这样才能可以正常运行系统程序与应用程序。这样一来,系统在运行时就会占很大的空间,包括存放系统影像文件的flash空间
7、和存放解压后文件系统代码的ram空间。这不符合节省系统硬件资源的要求。因此,使用基于rom的文件系统是解决这个问题的一种方式,比如jffs2,cramfs都是不错的选择。2.1 cramfs文件系统移植总体设计11 cramfs文件系统移植 bootloader 此处我们选用u-boot引导内核内核版本 linux 2.6.30.4制作文件系统工具 busybox_1.16.0cramfs-1.1开发板 tq-2440 (天嵌,arm 9 芯片)采用交叉编译的方式,在pc机linux中编译和裁剪内核制作内核镜像文件,制作文件系统利用命令形成文件系统镜像,再在windows下进行烧写。3.概要设
8、计实验概要:实验的总体思路是在tq2440中用光盘文件中所提供的内核源码2.6.30.4编译裁剪使其支持cramfs文件系统,修改其对应的选项。编译生成内核文件,zimage.bin文件。至此内核编译完成。在虚拟机中安装,编译并配置busybox软件,来制作cramfs文件系统。生成_install目录后,将目录下的三个文件夹拷贝到要制作的文件系统目录下,接着安装mkcramfs工具,生成cramfs.bin文件,然后烧写至开发板nand flash 中运行,查看结果。搭建编译平台安装编译busybox制作文件系统烧写,测试 图3.1 总体步骤概要设计 4.详细设计实验详细步骤:bootloa
9、der 此处我们选用u-boot引导内核12 西华大学课程设计说明书 内核版本 linux 2.6.30.4 (相关文件下载请见附录1)制作文件系统工具包 busybox_1.16.0.tar.bzcramfs-1.1开发板 tq-2440 (天嵌,arm 9 芯片,rs232双母口串口线,usb下载线,电源线)装有red hat 9.0 虚拟机电脑一台(1)准备linux 2.6.30.4内核源码,打开电脑中的虚拟机(笔者用vmware)。(2)安装光盘自带交叉编译工具,并修改环境变量,具体步骤此处不做详细说明。(3)将linux_2.6.30.4.tar.bz解压至/opt/embedsk
10、y/目录下,进行内核的编译以及裁剪。具体操作指令:#tar jxvf linux_2.6.30.4 c / 注意此处的空格#cd /opt/embedsky/linux_2.6.30.4/#make menuconfig /内核的编译内容,此处注意如下列出的几个选项loadable module support * enable loadable module support* automatic kernel moudule loadingsystem type * s3c2410 dma supportboot options default kernel command string:n
11、oinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttysac#说明:mtdblock/3代表我的第四个root分区,它是我的rootfs# console=ttysac0,115200 使kernel启动期间的信息全部输出到串口0上# 2.6内核对于串口的命名改为ttysac0.floating poing emulationmemory technology devices (mtd)*mtd portioning support*command line partition table parsing其它的选项可以根据需要而选择。保存退
12、出,产生 .config 文件。(4)编译内核#make#make zimage此时目录下会产生一个zimage.bin 的二进制文件,至此内核的编译已经完成。如果在编译过程中出现错误请见附录2解决,若未列出其错误请自行检查步骤,再编译。(5)接下来我们将进入文件系统的制作,将busybox_1.1.6.tar.bz解压至linux的/opt/23 cramfs文件系统移植 (6)目录下,解压后会生成该文件目录,进入该目录。进行相关的编译和安装具体命令如下:#cd /home/ /此处已经默认将busybox拷入linux#tar jxvf busybox_1.1.6.tar.bz c /#c
13、d /opt/embedsky/busybox_1.1.6 进入源码后,修改makefile文件,把164修改为:cross_compile = arm-linux-189行改为arch = arm保存退出。#make menuconfig /此为配置菜单选项进入配置单图4.1 进入busybox 配置单14 西华大学课程设计说明书图 4.2 编译配置选项图4.3 编译配置选项二15 cramfs文件系统移植此处只列出必要选项,其余选项可以自行添加。然后编译busybox#make#make install编译完成后会生成一个_install的目录,将目录拷贝到自己在/opt/目录下建立的cr
14、amfs_2.6.30.4目录下#cd _install#cp f * /opt/cramfs_2.6.30.4(7)接下来我们可以构建自己的文件结构步骤如下进入我们的文件系统目录/opt/cramfs_2.6.30.4a.创建目录/bin、/dev、/etc、/lib、/sbin、/usr是不可缺少的其它目录可以根据自己需要选择。#cd /opt/cramfs_2.6.30.4#mkdir bin dev etc lib sbin usr f (8)编写必要的文件,准备启动所需的文件:linuxrc、rcs、inittab、fstab四个文件; linuxrc文件:#!/bin/shecho
15、 mount /etc as ramfs/bin/mount -f -t cramfs -o remount,ro /dev/bon/2 /bin/mount -t ramfs ramfs /var/bin/mkdir -p /var/tmp/bin/mkdir -p /var/run/bin/mkdir -p /var/log/bin/mkdir -p /var/lock/bin/mkdir -p /var/empty#/bin/mount -t usbdevfs none /proc/bus/usbexec /sbin/initrcs文件:-16 西华大学课程设计说明书-#!/bin/sh
16、/bin/mount a(2)这两个文件生成后,应该使其具有执行的权限,可使用chmod 775 linuxrc rcs来修改,linuxrc应该放在rootfs根目录,rcs应该放在rootfs/etc/init.d/目录。inittab文件:# this is run first except when booting:sysinit:/etc/init.d/rcs# start an askfirst shell on the console#:askfirst:-/bin/bash:askfirst:-/bin/sh# stuff to do when restarting the i
17、nit process:restart:/sbin/init# stuff to do before rebooting:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a rfstab文件:none /proc proc defaults 0 0none /dev/pts devpts mode=0622 0 0tmpfs /dev/shm tmpfs defaults 0 0这两个文件应该放在rootfs/etc/目录,应该注意其权限问题。(3)如果使用linux 2.6.xx内核,应该实现创建节点console、null。转到rootfs/de
18、v/目录来创建:sudo mknod console c 5 1sudo mknod null c 1 3否则就会提示“warning: unable to open an initial console.kernel panic - not syncing: attempted to kill init!”的类似错误。(4)将刚才在busybox的_install下的三个文件夹的打包文件复制到rootfs目录,解压后删除打包文件。(5)也可以将一些常用的lib文件复制到rootfs/lib/目录下,比如:ld-2.5.so libc-2.5.so libcrypt.so.1libgcc_s.
19、so.1libm.so.6 ld-linux.so.3libcrypt-2.5.solibc.so.6 libm-2.5.so等文件或符号连接,17 cramfs文件系统移植在复制时应该注意采用图形化的界面复制活打包后解包方式复制。转到cramfs_2.6.30.4的上一级目录,使用mkcramfs制作文件系统:#mkcramfs cramfs_2.6.30.4 cramfs_2.6.30.4.bin(9)然后将刚才生成的在zimage.bin,cramfs_2.6.30.4。bin拷贝到windows下,利用串口烧写进开发板。最后截图 图4.4 cramfs文件系统运行结果5.使用说明(1)
20、在上交的报告中,含编译好的文件系统镜像cramfs_2.6.30.4.bin和内核镜像zimage.bin文件,开发板从nor flash 启动,分别选择3,5依次烧写内核,文件系统。(2)将拨码开关拨至nand flash启动,复位,超级终端将会显示启动信息。6.总结由于开始并未做过类似的操作,走了很多的弯路!在实验过程中也体会到嵌入式的难度,18 西华大学课程设计说明书在以后的学习中也有了一个大致的方向,为以后的学习打好基础。现将试验过程中遇到的问题列出,仅供参考。常见编译故障排除,以及错误信息处理:(1) 编译找不到的解决方法:进入arc_linux 源代码目录 make include
21、/linux/version.h然后将version.h拷贝到busybox/include/linux(2)启动busybox过程中出现类似/bin/sh can access tty, job control turn off的错误为了简单的测试busybox,我的linuxrc为如下代码#!/bin/sh/bin/sh启动busybox后出现如上警告(busybox还是可以进的),使用inittab可以去掉该警告#ln -s /sbin/init linuxrc在etc下建立inittab,在inittab里面添加:tty1:respawn:/bin/sh(3)启动busybox显示完c
22、antt open init console之后死机原因有多方面的,一个原因可能是我们的文件系统的dev目录下没有console这个设备文件。(4)arm-linux-gcc 2.95.3编译busybox的问题(5)用2.95.3交叉编译器编译busybox,出现了一大堆错误。无论是高版本的还是低版本的bb。错误来源大体上有两个:route命令,如果在配置busybox时选了route命令,会出现很多错误,估计是2.95.3工具链的问题,去掉后正常通过编译,可是不能用route命令了.libbb/loop.c文件中的#include ,busybox好象提示linux/version.h有问题。在1.0.1的busybox中#include linux/version.h#if linux_version_code = kernel_version(2.6.0)#define .#elif linux_version_code kernel_version(2.6.0)#define .#else#defin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇科手术教学查房
- 修理厂老板管理培训
- 冬季幼儿护理
- 失智症精神行为症状的应对失智老年人照护
- 四年级数学三位数乘两位数同步测试训练题大全附答案
- 言语治疗技术语言中枢
- 制药厂安全教育培训内容
- 第16讲有机化学基础-高考化学二轮总复习习题
- y=14x4+3x+arcsin5x的导数计算详细过程
- 《听觉与前庭器官》课件
- 3.3解一元一次方程(3)-去分母 讲练课件 2023-2024学年人教版数学
- GB/T 25052-2024连续热浸镀层钢板和钢带尺寸、外形、重量及允许偏差
- 医院病历书写基本规范培训课件
- 国开2024年秋《机电控制工程基础》形考任务1答案
- 2024年典型事故案例警示教育手册15例
- 章质谱法剖析PPT课件
- 滑触线安装施工方案
- 绿化灌溉用水制度
- 一元三次、一元四次方程的基本解法毕业论文
- 管道开挖回填施工方案范本
- 《吊耳强度计算书》
评论
0/150
提交评论