基于skyeye的嵌入式linux系统设计--课程设计报告--学士学位论文.doc
郑州航空工业管理学院嵌入式系统课程设计报告题目:基于SKYEYE的嵌入式Linux系统设计目 录一、引言二、设计目的三、设计要求(1) 建立VMWARE虚拟机。(2) 安装Linux RHEL AS4操作系统环境。(3) 建立Windows操作系统与Linux操作系统的共享功能。(4) 建立交叉编译环境;安装SKYEYE仿真软件。(5) 配置并编译U-Boot-1.3.2软件。(6) 配置并编译Linux-2.6.14内核源代码。(7) 制作Linux根文件系统。(8) 使用SKYEYE仿真嵌入式系统的运行。四、实验进展安排五、考核评价六、总体设计七、总结八、参考文献一、引言以手机和信息家电为代表的嵌入式系统的应用开发已经成为现代工业最热门的领域之一,其灵魂就是嵌入在其中的计算机系统嵌入式系统。嵌入式系统仿真环境是支持嵌入式系统软件开发的一种快速、高效和低成本的工具,对于提高嵌入式系统的开发效率和开发质量具有重要意义。SkyEye是一个支持多架构、多核并且具有高度可扩展性的硬件仿真平台,是国内最优秀的开源软件(opensource software)项目之一,中文名字是“天目”。SkyEye的目标是在通用的Linux和Windows平台实现一个仿真集成开发环境,模拟常见的嵌入式计算机系统使“Clinux以及uCOSII等多种嵌入式操作系统和各种系统软件(如TCPIP、图形子系统、文件子系统等)能够良好运行,并可对它们进行源码级的分析和测试。如果要学习Linux操作系统或者进行嵌入式系统开发,但缺少硬件支持,嵌入式系统仿真环境软件SkyEy是一个非常有效的学习工具和开发手段。如果想研究与具体硬件无关的系统软件(如TCPIP协议栈等),采用SkyEye可以有效地提高工作效率。使用的Linux操作系统是Linux RHEL AS4。采用Linux2.6内核,功能更加强大,更加健全二、设计目的通过对嵌入式系统的基本知识及相关概念的了解,在熟悉Linux操作系统的基础上,利用SKYEYE仿真软件,对嵌入式系统的开发过程进行软件仿真,从而掌握嵌入式Linux系统开发中的主要方法。具体地,在设计过程中,达到以下目标:掌握嵌入式Linux系统基础部分的U-Boot软件、Linux内核的配置、编译与应用;掌握BusyBox软件及根文件系统的制作方法;掌握SKYEYE软件的使用方法,通过SKYEYE仿真软件运行U-Boot文件、vmLinux文件映像及根文件系统root.cramfs映像。 最终,能在掌握嵌入式系统开发过程及SKYEYE软件使用方法的基础上,建立更有效的嵌入式系统开发方法,提高嵌入式系统的开发与应用的效率。三、设计要求1. 任务要求要求能独立地分析题目意义、设计实现步骤、制作相关软件、调试嵌入式系统“三大基础部分”。该设计的具体要求如下:(1) 建立VMWARE虚拟机。(2) 安装Linux RHEL AS4操作系统环境。(3) 建立Windows操作系统与Linux操作系统的共享功能。(4) 建立交叉编译环境;安装SKYEYE仿真软件。(5) 配置并编译U-Boot-1.3.2软件。(6) 配置并编译Linux-2.6.14内核源代码。(7) 制作Linux根文件系统。(8) 使用SKYEYE仿真嵌入式系统的运行。2. 设计所需的软硬件设备(1)硬件环境配置计算机:Intel(R) Pentium(R) 及以上内存:1GB及以上(2)软件环境配置操作系统:Microsoft Windows XP Professional Service Pack 2虚拟机:VMware WorkStation 7Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)嵌入式交叉编译器:arm-linux-gcc 3.4.4版本Linux内核版本:Linux-2.6.14SKYEYE版本:skyeye-1.2.4U-Boot版本:U-Boot-1.3.2BusyBox版本:BusyBox-1.2.0六、总体设计1建立VMWARE虚拟机使用Vmware虚拟机是安装linux最容易的方式之一,在Windows系统中安装VMWARE虚拟机从而建立Linux系统便于操作和资源查找。VMWARE虚拟机采用VMWARE Workstaion 7,安装版本如下(1)VMWARE Workstaion的安装和其他软件安装基本相同,下面简单图示安装过程。双击进行安装。(2) 安装完毕后,填写注册信息,这里需要注册码,按要求将对应各项填写完以后,直接点击Enter按钮进行信息注册,并进入下一步(3) 如果安装了保护卡的电脑不要选择“Restart Now”;反之,选择“Restart Now”,重新启动系统。重新启动系统后,点击开始->所有程序->VMware WorkStation运行Vmware虚拟机2. 安装Linux RHEL AS4操作系统环境。1 在Vmware虚拟机的运行界面中,点击菜单栏中的File项,在弹出的下拉菜单中选New项,再点击弹出菜单的Virtual Machine项。出现新的虚拟机安装向导2 在弹出的安装向导中提供两个选项,这里选择自定义安装(Custom),进入下一步 3 选择Vmware虚拟机平台,不同的Vmware虚拟机平台支持的硬件特性不同。这里选择Workstation6.5-7.0,进入下一步。4 选择要安装的Linux操作系统光盘镜像,同时使用Vmware虚拟机的“Easy Install”功能自动安装Linux操作系统。选择第一张安装光盘镜像,进入下一步。5 设置安装的Linux系统的用户名和密码信息。进入下一步。6 设置Linux虚拟机的显示名称及安装路径。根据自己的情况选择安装路径,名称可以选择默认。进入下一步。7 配置虚拟机使用的处理器。配置处理器数量、处理器的内核数,这里使用默认的设置:1个单核处理器。进入下一步。8 配置虚拟机使用的存储器空间,这里设置为512MB。进入下一步。9 设置网络类型。选择Use network address translation(NAT),,进入下一步。10设置I/O适配器类型,进入下一步。11 创建一个虚拟磁盘,在其上安装Linux操作系统。进入下一步12 选择使用的磁盘类型,按默认的设置即可。进入下一步。13 设置硬盘的空间大小,50GB,进入下一步。14 设定存储磁盘文件的路径。根据自己的情况进行选择,进入下一步。15 对话框汇总了前面的设置项目,如果没有错误,不需要修改,直接点击Finsh按钮,进行Linux系统的安装。16第1张光盘安装完毕,需要第2张安装光盘的镜像。点击右下方的“Change Disc”按钮,在弹出的对话框中点击“Browse.”按钮在弹出的对话框中双击选择第2个光盘的镜像。第3张和第4张操作相似。17 Linux系统安装完毕后会自动启动,会出现登陆界面。18 在界面中输入刚开始设置的用户名和密码,进入Linux系统的桌面环境。3.建立Windows操作系统与Linux操作系统的共享功能。为了Windows操作系统与Linux操作系统的文件共享。我们需要设置共享功能。而Samba服务可以提供Windows操作系统与Linux操作系统之间的文件共享。如下进行配置。1 点击“Applications”->“SystemSettings”->“Security Level”,弹出“Security Level Configuration”对话框。在“Security Level Configuration”对话框中,将“Security Level”项设置为“Disable firewall”,即无防火墙3 点击“Applications”->“SystemSettings”->“Samba”,在弹出的“Samba服务器配置”对话框中进行配置。而显示的配置内容为空,这说明还没有配置Samba服务器4 点击“ADD”图标,添加1个Samba服务共享,在弹出的对话框中选择“Basic”选项卡,在其中进行设置:在“Directory”文本框输入/home/zcnet;在“Share name”文本框中输入zcnet;在“Basic Permissions”选项中选择“Read/Write”。接着切换到“Access”选项卡,其中有两项选择,一项是仅允许特定的用户访问,另一项是允许所有用户访问。在这里选择“Allow access to everyone”选项。 5 点击“Preferences”->“Server Settings.”,弹出“服务器设置”对话框。 在“Basic”选项卡内,按默认内容设置“Workgoup”与“Description”;在“Security”选项卡内“Authentication Mode”项选择“Share”,“Encrypt Passwords”项选择“NO”,“Guest Account”项选择“No Guest Account” 6 设置/home/ zcnet文件夹的属性7 在windows操作系统环境下,右键点击“网络邻居”图标,在弹出的“网络连接”对话框中,可以看见有一个“VMware Network Adapter VMnet8”连接项,右键点击该项,在弹出的菜单中点击选择“属性”选项,接着会弹出“VMware Network Adapter VMnet8”属性对话框,其中,在“常规”选项卡里面有一个“此连接使用下列项目(O)”文本框,点选其中的“Internet 协议(TCP/IP)”项,然后点击下方的“属性”按钮,会弹出“Internet 协议(TCP/IP)属性”对话框,其中显示的“IP地址(I)”为:192.168.0.6,在下面将相关的IP地址都配置在同一网段中。 8设置Samba服务器IP地址 点击“Applications”->“System Tools”->“Network Device Control”项,弹出“网络设备控制”对话框。点击选定“eth0”设备,确认“Status”栏的内容为“Active”(如果“Status”栏的内容为“Inactive”,需要先点击右侧的“Activate”按钮,将其激活),再点击右边的“Configure.”按钮,弹出“网络配置”对话框,其中显示了已有的网络设备,将其中的IP地址配置为和上一步中在同一网段的IP地址9 点击VMware虚拟机的“VM”菜单,选择“Settings.”项。在“Hardware”选项卡中左侧选择“Network Adapter”项,相应的,在右侧的Network connection中选择“NAT:Use to share the host's IP address”项, directly to the同时,在“Devices status”框中选择“Connected”与“Connect at power on”项 10 启动Smaba服务器,启动终端,在终端输入命令service smb start,启动samba服务。 11 在windows下访问共享文件夹。在windows系统中点击“开始”->“运行”,输入samba服务器的IP地址,点击“确定”按钮,就可以看到Linux系统下的共享文件夹/home/zcnet 4 .建立交叉编译环境;安装SKYEYE仿真软件 Gcc交叉编译环境的安装在网上下载Gcc交叉编译包。放在目录home中在终端运行如下命令:设置环境变量,将交叉开发工具的设置更新到系统环境中,这样就可有直接在命令行使用,设置环境变量的方法如下:(1)在终端运行命令:vi /root/.bashrc(2)编辑/root/.bashrc文件,在最后一行添加export PATH=$PATH:/home/usr/local/bin.(3)注销Redhant系统,重新登录,使以上设置生效。启动终端,在命令行输入arm-linux-gcc v,出现如下图示的信息,说明交叉编译环境已经成功安装。SKYEYE的安装:将下载好的skyeye-1.2.4压缩包放在目录home里在终端运行5 .配置并编译U-Boot-1.3.2软件 5.1 交叉编译U-Boot-1.3.2软件 把U-Boot-1.3.2压缩文件放到/home文件夹下在终端中输入:cd /home 进入到home文件夹下,在终端中输入:tar xjvf u-boot-1.3.2.tar.bz2 C ./ 把u-boot-1.3.2解压到home文件夹下,在终端中输入:cd u-boot-1.3.2 进入到cd u-boot-1.3.2文件夹下, make smdk2410_config CROSS_ROMPILE=arm-linux- 配置编译环境make CROSS_ROMPILE=arm-linux- 选择嵌入式交叉编译工具进行编译,编译完成后,可以得到U-boot各种格式的映像文件和符号表。5.2使用SKYEYE仿真软件测试编译得到的U-Boot文件 新建一个文件,命名为skyeye_s3c4210.conf,并把内容配置为skyeye config file for S3C2410X在/home 文件夹下的U-Boot-1.3.2里找到u-boot,和u-boot.bin文件,把这两个文件和skyeye_s3c2410.conf一同复制到home/ skyeye-1.2.4/binary文件夹里在终端中输入命令:cd /home/ skyeye-1.2.4、binary在终端中输入命令:./skyeye c skyeye_s3c2410.conf e u-boot在u-boot可以在“SMDK2410#”后 输入命令echo li jian ,测试U-boot。6. 配置并编译Linux-2.6.14内核源代码 6.1交叉编译Linux内核源代码软件 把Linux 2.6.14压缩文件放到/home文件夹下 在终端中输入cd /home 进入到home文件夹下 在终端中输入tar -xjvf linux-2.6.14.tar.bz2 把Linux 2.6.14压缩文件解压到home文件夹下 在终端中输入cd /home/linux-2.6.14使用vi编辑器打开该目录下的Makefile文件,修改第192行与第193行,改为:ARCH ?=arm CROSS_COMPILE ?=/home/usr/local/bin/arm-linux- 分别指定编译的内核架构与使用的交叉编译工具。在终端中输入:cp arch/arm/configs/smdk2410_defconfig .config make ARCH=arm menuconfig启动内核配置菜单,参考书中各个选项的配置,特别要注意系统类型、启动选项、设备驱动程序和内核调试的配置。课本中对于各个选项的配置以及作用叙述的很详细,这里就不再累述。但特别要注意系统类型、启动选项、设备驱动程序和内核调试的配置。这几项改动地方较多,需要认真配置。配置完成保存后,需要更改程序运行的物理地址修改include/asm-arm/arch-s3c2410/memory.h文件Linux内核的编译:cd /home/linux-2.6.14 make ARCH=arm CROSS_COMPILE=arm-linux-内核编译完毕后,将得到三个重要的文件,分别位于根目录下的vmlinux、位于Linux-2.6.14安装目录中arch/arm/boot/路径下的Image与zImage。6.2 使用SKYEYE仿真软件测试编译得到的Linux内核文件vmLinux 复制vmlinux到/home/ilovechina/skyeye-1.2.4/binary cp vmlinux /home/zcnet/skyeye-1.2.4/binary/ 建立skyeye.conf配置文件到/home/ilovechina/skyeye-1.2.4/binary cd /home/zcnet/skyeye-1.2.4/binary/ vi skyeye.conf skyeye.conf配置文件的内容为: #skyeye config file for s3c2410cpu:arm920tmach:s3c2410x#physical memorymem_bank:map=M,type=RW,addr=0xc0000000,size=0x00800000mem_bank:map=M,type=RW,addr=0xc0800000,size=0x00800000,file=./initrd.imgmem_bank:map=M,type=RW,addr=0xc1000000,size=0x01000000#all peripherals I/O mapping areamem_bank:map=I,type=RW,addr=0x48000000,size=0x20000000mem_bank:map=I,type=RW,addr=0x19000300,size=0x00000020net:type=cs8900a,base=0x19000300,size=0x20,int=9,mac=0:4:3:2:1:f,ethmod=tuntap,hostip=10.0.0.1lcd:type=s3c2410x,mod=gtk#dbct: state=on 复制文件系统initrd.img到/home/ilovechina/skyeye-1.2.4/binary把SKYEYE的测试工具包压缩文件放到/home文件夹下。在终端中输入命令:cd /home在终端中输入命令:tar xjvf skyeye-testsuite-2.3.tar.bz2在终端中输入命令:cd skyeye-testsuite-2.3/linux/s3c2410/s3c2410x-2.6.14在终端中输入命令:cp initrd.img /home/zcnet/skyeye-1.2.4/binary使用SKYEYE仿真Linux系统在终端中输入命令:cd /home/zcnet/skyeye-1.2.4/binary在终端中输入命令:./skyeye -e vmlinux 7. 制作Linux根文件系统 7.1编译安装BusyBox1 在home文件夹中新建一个文件夹命名为ilovechina2 把BusyBo x压缩文件放到/home/ilovechina下3 在终端中输入命令:cd /home/ilovechina 进入BusyBox-1.2.0的存放位置4 在终端中输入命令:tar -xjvf busybox-1.2.0.tar.bz2 进行解压5 在终端中输入命令:cd busybox-1.2.0 6 在终端中输入命令:make menuconfig 进入BusyBox的主配置菜单7 参考书中提供的资料进行设置各个选项8 配置完成各个选项后,保存设置9 在终端中输入命令:make 对BusyBox进行编译,进行编译后得到两个主要的文件:BusyBox与BusyBox_unstripped。10 在终端中输入命令:make install 安装BusyBox以后会在BusyBox-1.2.0目录中产生_install目录,这是BusyBox默认的安装目录。在安装目录_install中还得到了bin、sbin、usr等三个目录以及Linuxrc文件BusyBox经过设置、编译与安装在默认的安装目录_install下得到了bin、sbin、usr等三个目录以及Linuxrc文件。在 BusyBox安装目录_install的基础上进行扩展以后可以得到根文件系统。根文件系统中包括了bin、dev、etc、home、initrd、lib、lost+found、proc、root sbin 、tmp 、usr 、var等13个目录以及linuxrc文件,其中home、initrd、lib、lost+found、proc、root、tmp、var 等目录为空目录,暂时没有内容,另外,用户自己还需要创建dev目录与etc目录,dev目录用以存放设备文件,etc目录用来存放启动文件。7.2创建根文件系统的dev目录:1 在终端中输入命令:mkdir _install/dev2 在终端中输入命令:cp /dev/ttyS0/dev/console/dev/ram0 _install/dev/ -a这样就在dev目录中添加了串口终端设备、系统控制台设备、RAM磁盘设备等三个常用的硬件设备文件7.3创建根文件系统的etc等目录及配置文件 这一部分的配置内容较多,也比较繁琐,为了使相应的目录与配置文件的建立过程相对简单,编写make_rootfs.sh来实现该部分的操作。 1创建make_rootfs.sh脚本文件,内容如下:echo "setp of make_rootfs"echo "1:create folders"mkdir -pv etc etc/init.d home initrd lib proc root tmp var lost+foundecho "2:etc/inittab"cat > etc/inittab << "EOF":sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:restart:/sbin/init:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -r:shutdown:/sbin/swapoff -aEOFecho "3:create etc/init.d/rcS/"cat > etc/init.d/rcS << "EOF"#!/bin/sh/bin/mount -t proc none /procsbin/ifconfig lo 127.0.0.1 upsbin/ifconfig eth0 10.0.0.2 uphostname skyeyemkdir /var/tmpmkdir /var/logmkdir /var/runmkdir /var/lockcat /etc/motd#sbin/ifconfig eth0 172.17.51.171 netmask 255.255.0.0 up#route ass sefault gw 172.17.1.2/bin/ashEOFecho "3(1)chmod etc/init.d/rcS"chmod 555 etc/init.d/rcSecho "4:create etc/mtab"cat > etc/mtab << "EOF"rootfs / rootfs rw 0 0/dev/root / nfs rw,v2,rsize=4096,wsize=4096,hard,udp,nolock,addr=172.17.51.4 0 0none /proc proc rw 0 0EOFecho "5:create etc/motd"cat > etc/motd << "EOF"Welcome to ARMLinuxARMLinux for SkyeyeFor further information please check:http:/www.skyeye.org/EOF2 将编写的make_rootfs.sh脚本文件放在BusyBox的安装目录_install中,然后进入安装目录运行该脚本在终端中输入命令:cd _install在终端中输入命令:./make_rootfs.sh在终端中输入命令:cd /home/ilovechina/BusyBox-1.2.0 这样,根文件系统的完整结构就在安装目录_install中建立出来了,下一步,将使用安装目录_install中的内容创建文件系统映像 在终端中输入命令:dd if=/dev/zero of=./initrd.img count=2048 bs=1024 在终端中输入命令:mke2fs -F -m0 initrd.img其中,dd是Linux/UNIX系统中一个非常有用的命令,使用dd命令可以复制一个文件到指定大小块空间,并在复制该文件的同时进行指定文件转换。上面具体的带参数的dd命令指定了每个存储块的大小是1024字节,一共2048个块,因此,指定的块空间为2M字节。然后,使用/dev/zero文件来创建一个占用2M字节块空间的初始化空文件,同时将其转换为initrd.img文件输出。mke2fs命令用来将文件映像initrd.img格式化为EXT2格式。 创建的EXT2格式的文件系统映像initrd.img目前还是一个空文件,下一步,应该将安装目录下的所有内容复制到EXT2格式的文件系统映像initrd.img中 7.4 添加initrd.img文件系统映像的内容 1 在终端中输入命令:mkdir /mnt/rootfs 先在./mnt目录中建立一个rootfs目录,用来挂载initrd.img文件系统映像。 2 在终端中输入命令:mount initrd.img /mnt/rootfs/ -o loop 挂载映像文件initrd.img 3 在终端中输入命令:cp _install/* /mnt/rootfs/ -a 将安装目录的所有内容复制到/mnt/rootfs目录 4 在终端中输入命令: umount /mnt/rootfs/ 卸载映像文件initrd.img这样,就得到了运行嵌入式系统所需要的根文件系统映像initrd.img文件了,下一步,需要将根文件系统映像initrd.img文件放在SKYEYE环境中测试进行。7.5基于SKYEYE的根文件系统仿真调试 1 将BusyBox-1.2.0目录中的根文件系统映像文件initrd.img与SKYEYE的配置文件skyeye.conf、Linux2.6.14内核文件vmlinux放在一起,复制到skyeye-1.2.4目录中的binary目录里面。2 在终端中输入命令:cd /home/zcnet/skyeye-1.2.4/binary3 在终端中输入命令:./skyeye -e vmlinux运行上述命令后,在Redhat Linux的终端窗口中应该可以看到内核的启动信息了,随后会输出在etc/motd文件中设置的“ARMLINUX”ASCII图形的标志,最后,窗口中会输出BusyBox的启动信息 已经出现了BusyBox-1.2.0的信息,光标停留在BusyBox工具提供的命令提示符“#”后,等待用户输入命令。在其中输入命令“ls”,按下回车键执行后,在屏幕上会输出制作的根文件系统中的所有目录。这说明SKYEYE可以正常地模拟仿真Linux-2.6.14系统在ARM9平台上的运行过程8. 使用SKYEYE仿真嵌入式系统的运行在SKYEYE的仿真文件夹中应该已经同时具有了vmlinux内核映像、initrd.img文件系统以及skyeye.conf配置文件等三个基础文件。 现在就可以使用如下命令来启动SKYEYE模拟Linux-2.6.14内核的运行。运行结果如下图所示七、总结由于第一次接触Linux,对于linux系统的操作不是很熟悉,特别是用指令操作很习惯。刚开始做课程设计的第一天,对着电脑也觉得不知道从哪里下手,通过认真阅读课本,按照课本上的步骤操作,慢慢熟悉操作流程,兴趣也越来越大。在配置ARM内核时虽然书上的介绍很详细,但有的选项只是说按照其默认选项,可它的默认选项不是尽然相同的,第一次完成配置后保存,然后用skyeye仿真时出现错误make:*drivers error 2。通过网络上的资料,找到了错误的来源,原来是在配置内核时出现 Graphics support -> console display driver support-> vga text console这个选项是不能选的,设置后保存,再进行编译就可以了。嵌入式系统的学习,不只在课本上的那些内容,这次课程设计不仅考察了我们对课堂上所学专业知识的理解程度,也锻炼了我们的动手能力。提高了我们独立思考文理,解决问题的能力。总体上看,我觉得这次课程设计是我自身的知识丰富了不少,但同时也发现了自己的不足之处。例如在动手方面,和知识融合方面,不能与实践相结合。软件操作不够熟练,不能灵活运用。是我了解要先学好理论知识才能很好地与实践相结合,才能熟练地运用活中八、参考文献嵌入式系统应用基础 赵成主编