太原理工大学嵌入式系统实验报告.doc_第1页
太原理工大学嵌入式系统实验报告.doc_第2页
太原理工大学嵌入式系统实验报告.doc_第3页
太原理工大学嵌入式系统实验报告.doc_第4页
太原理工大学嵌入式系统实验报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程名称: 嵌入式系统B 实验项目: 嵌入式系统B 实验地点: 明向实验楼308 专业班级: 班 学号: 201 学生姓名: 指导教师: 2016 年 11 月 6 日实验一 嵌入式虚拟开发环境的搭建以及内核编译1、 实验目的和要求1 熟悉ARM虚拟平台Skyeye的搭建2 熟悉交叉编译开发环境的搭建3 熟悉编译ARM-Linux4 熟悉在Skyeye平台上仿真ARM-Linux5 拓展:尝试移植其他版本的Linux,并且在Skyeye上运行2、 实验内容和原理本实验是通过在PC机上搭建嵌入式开发环境虚拟环境(Skyeye),熟悉嵌入式交叉编译开发环境以及ARM-Linux系统移植的主要步骤。实验虚拟平台SMDK2410v CPU三星S3C2410(ARM920T),核心频率为62.400MHz,I-Cache 16K,D-Cache 16Kv 内存32MB,内存频率62.400MHz实验软件介绍SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”,SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行u CLinux以及u C/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。编译ARM-Linux内核,熟悉ARM-Linux的移植过程。编译成功后,同学们需要将ARM内核在SkyEye的ARM硬件模拟环境运行测试。具体步骤见后文。3、 主要仪器设备硬件:a. PC机软件:a. VMware workstation9.0b. Ubuntu 10.04LTSc. skyeye-1.2.5_REL.tar.gzd. skyeye-testsuite-1.2.5.tar.bz2e. arm-linux-gcc-3.4.1.tar.bz2f. linux-2.6.14.tar.gzg. cpp-4.1_4.1.2-27ubuntu1_i386.debh. g+-4.1_4.1.2-27ubuntu1_i386.debi. gcc-4.1_4.1.2-27ubuntu1_i386.debj. gcc-4.1-base_4.1.2-27ubuntu1_i386.debk. libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.deb4、 操作方法与实验步骤1. 安装虚拟机VMware workstation8.02. 安装ubuntu10A. 可以选用Typical Install方式建立ubuntuB. 安装VMToolC. 设置host computer共享的目录3. 安装使用gcc4.1版本编译器(编译Skyeye需要低版本gcc)A.在安装之前先看看ubuntu10.04的gcc是哪个版本B.下载相关文件a. cpp-4.1_4.1.2-27ubuntu1_i386.debb. g+-4.1_4.1.2-27ubuntu1_i386.debc. gcc-4.1_4.1.2-27ubuntu1_i386.debd. gcc-4.1-base_4.1.2-27ubuntu1_i386.debe. libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.deb执行命令sudo dpkg -i *.deb就可以安装好gcc4.1.C.设置默认gcc版本update4. 安装SKyeye5. 测试Skyeye6. 安装交叉编译环境记住arm-gcc的目录,即/usr/local/arm/3.4.1/bin7. 编译内核键入 cd linux-2.6.14回车键入vi Makefile 回车,修改Makefile生成默认的内核配置文件,键入cp arch/arm/configs/smdk2410_defconfig .回车,继续键入 sodu make smdk2410_defconfig回车参照/Linux 修改内核文件8. 裁剪/定制内核1) 键入sodu make menuconfig回车2) 设置内核启动参数3) 设置initrd的支持4) 设置ROM file system 的支持5) 设置ext2的支持a. 编译,键入make键编译完成后会有vmlinux在当前目录下,这就是我们要的arm-linux内核了b. 验证l 将skeeye-testsuite-1.2.5/linux/s3c2410/s3c2410-2.6.14中的skyeye. conf和initrd.img复制到linux-2.6.14目录中l 键入skyeye -e vmlinux出现了ARMLinux字样说明成功!5、 实验结果与分析六、讨论、心得 通过本次实验完成了内核的编译,这次实验对我来说还是比较新鲜的,之前从没接触过这些东西,遇到了好多问题,但是通过与老师同学的交流,学习,这些问题终究都一一解决了。通过这次试验,我也逐渐熟悉了LINUX命令行环境下的各种操作,学会根据错误信息修改操作方法,最终完成了自己的实验任务。实验二 嵌入式程序的开发与根文件系统的搭建1、 实验目的和要求1 熟悉利用busybox建立ARM-Linux根文件系统(initrd)2 熟悉修改现有根文件系统(initrd)的方法3 熟悉利用交叉编译环境编译简单的C 语言程序4 将自己写好的C 语言程序,进行交叉编译,写入根文件系统,并在实验一中搭建的虚拟环境中运行,显示正确的结果5 回答后面遇到的4个问题2、 实验内容和原理根文件系统就是一种目录结构,根文件系统就是要包括Linux 启动时所必须的目录和关键性的文件,例如Linux 启动时都需要有init目录下的相关文件,在Linux 挂载分区时Linux一定会找/etc/fstab 这个挂载文件等,根文件系统中还包括了许多的应用程序bin 目录等,任何包括这些Linux系统启动所必须的文件都可以成为根文件系统。利用BusyBox搭建根文件系统。BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的或嵌入式系统。将自己编译的程序保存到根文件系统中的目录下,就可以在嵌入式虚拟环境中运行。3、 主要仪器设备硬件:a. PC机软件:a. 实验一搭建好的嵌入式虚拟平台b. busybox-1.19.4.tar.bz2c. helloword.c4、 操作方法与实验步骤1. 编译busyboxa. 修改Makefile中的arch和编译工具链头为:ARCH ?=armCROSS_COMPILE ?=/usr/local/3.4.1/bin/arm-linux-b. make menuconfig 修改编译配置选项c. 键入maked. 编译键入make install(应该是生成必要的可执行文件)e. 修改busybox的属性 键入chmod 4755 ./_install/bin/busybox注意:必须要修改属性,否则在busybox中很多命令会受限制:比如:$su su:must be suid to work properlyf. 查看busybox需要的动态库2. 制作initrd.imga. 创建映像文件并挂到 initrd 目录b. 将添加 busybox 到此映像文件c. 拷贝busybox 需要的动态库arm-linux/libd. 建立必要的文件e. 将helloworld.c 文件经过交叉编译后复制到home 目录下交叉编译过程如下:/usr/local/arm/3.4.1/bin/arm-linuc-gcc helloworld.c -o helloworldcp helloworld initrd/home/f. 最后,生成initrd.imgcd .umount initrd3. 测试initrd.imga. 将生成initrd.img文件复制到实验一的linux-2.6.14目录下,执行skyeye -e vmlinuxb. Skyeye启动成功后,在home目录下执行./helloworldc. 出现Hello ARM World表示成功5、 实验结果与分析在对busybox进行make时会遇到很多问题,以下是具体的解决方法:1. 出现如下图错误解决方法:继续键入make menuconfigBusybox Setting-Miscellaneous Utilities - ionice修改之后继续键入make2.出现如下错误解决方法:在当前目录下的include目录下建立一个mtd目录,把事先下载好的ubi-user.h拷贝到mtd目录下。具体操作如下:cp /home/yewanjaly/busybox/ubi-user.h include/mtd(注意先下载ubi-user.h)修改之后继续键入make3.出现如下错误解决方法1:键入make menuconfigBusybox Settings-Busybox Library Tuning-Support infiniband HW修改之后继续键入make解决方法2:通过查看内核源代码目录中的“include/linux/ifarp.h”文件可知“ARPHRD_INFINIBAND”的值为“32”,然后修改“networking/interface.c”文件,在其中添加:#define ARPHRD_INIFINIBAND 32。在本实验中采用的是解决方法1,但是做过之后第二种解决的方法较好!4.出现如下错误解决方法:键入vi /usr/local/arm/3.4.1/arm-linux/sys-include/linux/filter.h在最开始加上 #include 修改之后继续键入make5.出现错误如下解决方法:键入make menuconfigLinux System Utilities - mkfs_ext2修改之后继续键入make6.出现如下错误解决方法:键入make menuconfigLinux System Utilities - mkfs_vfat修改之后继续键入make以下是实验过程中的其他截图部分6、 讨论、心得本次实验对于我个人而言,还是比较困难的,而且很复杂。在改正busybox的make时候遇到的问题,花废了大量的时间,开始时不知道要怎么修改,把提示出错的文件的代码从头到尾看了一遍,没有什么进展,后来才知道只要关闭相关的功能即可,但是找这个功能在什么地方也是很费事的。总之,这次实验完成后,感觉自己学到了很多。实验三 ARM-Linux添加网络驱动程序与实现NFS访问1、 实验目的和要求1 熟悉虚拟平台添加网卡驱动程序的步骤2 通过在虚拟机下实现SkyEye虚拟平台的NFS 访问,验证添加的驱动程序正确性2、 实验内容和原理通过在ARM-Linux中添加CS8900a网卡驱动程序,实现嵌入式虚拟环境具备网络功能。验证网卡工作是否正常。在虚拟机中增加NFS Server,并且添加共享目录。通过ARM-Linux映射NFS Server的共享目录,实现读、写和执行等操作。如果读、写以及执行操作正常说明网卡驱动程序添加成功。NFS 是一种使用于分散式文件系统的协定,由SUN Microsystems 公司开发,于1984年向外公布。NFS 的功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据。通过NFS,应用和程序可以像访问本地文件一样访问远端系统上的文件。实现NFS 对于调试嵌入式环境下的应用程序有很大帮助。3、 主要仪器设备硬件:a. PC机软件:a. VMware workstation9.0b. Ubuntu 10.04LTSc. skyeye-1.2.5_REL.tar.gzd. skyeye-testsuite-1.2.5.tar.bz2e. arm-linux-gcc-3.4.1.tar.bz2f. linux-2.6.14.tar.gzg. cpp-4.1_4.1.2-27ubuntu1_i386.debh. g+-4.1_4.1.2-27ubuntu1_i386.debi. gcc-4.1_4.1.2-27ubuntu1_i386.debj. gcc-4.1-base_4.1.2-27ubuntu1_i386.debk. libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.debl. busybox-1.19.4.tar.bz24、 操作方法与实验步骤1、内核的编译过程已在前面的实验中进行过,这里就不在叙述了。D.为内核添加 cs8900(见附件) 网卡驱动,以支持 NFS 挂接1) 复制 cs8900 驱动到 drivers/net/arm 目录#cp cs8900.c drivers/net/arm#cp cs8900.h drivers/net/arm2) 修改 drivers/net/arm 目录下的 Kconfig 文件3) 修改 drivers/net/arm 目录下的Makefile文件4) 修改 arch/arm/mach-s3c2410/mach-smdk2410.c5) 在 include/asm-arm/arch-s3c2410 目录下创建文件 smdk2410.hE.参照http:/skyeye.wiki.sourceforge.het/Linux修改内核文件F.裁剪/定制内核1) 键入make menuconfig2) 设置内核启动参数3) 设置 CS8900 的支持Device Drivers -Network device support -Ethernet (10 or 100Mbit) - * CS8900 support4) 设置initrd的支持5) 设置 NFS 的支持File systems - Network File Systems -* NFS file system support* Provide NFSv3 client support6) 设置ROM file system 的支持7) 设置ext2的支持G.编译键入make编译完成后会有个 vmlinux 在当前目录下, 这就是我们要的 arm-linux 内核了2、制作跟文件系统initrd.img3、虚拟机中ubuntu添加NFS Server1) 在 arm-linux 的宿主机里配置 NFS Server2) 编辑文件 /etc/exports, 内容如下(具体需求由你而定)3) 配置主机ip4) 重启 nfs server注:可用 showmount -e 来验证你的配置是否成功。5) 管理员身份启动skyeye,运行arm-linux,为其配置 ip6) NFS 挂接5、 实验结果与分析6、 讨论、心得 本次实验的难点在于最开始的文件修改和脚本的创建,一不小心就容易编写错误,而且错误有时还不容易发现,比如0和o。如果这些都安全通过了,那么这个实验就没有什么难的地方了,部分步骤是实验一和实验二的内容,这加深了对实验一和实验二的熟练程度。实验四 内核与根文件系统烧写实验 一、实验目的和要求1. 熟悉内核与根文件系统的烧写过程2、 实验内容和原理在宿主机内核和根文件系统编译完成之后,就可以在开发板进行烧写过程。本次实验烧写的uboot、kernel以及(system)rootfs都已经给定。三、 操作方法与实验步骤1. 制作可用于烧写的 SD卡(windows 操作系统)。想要在windows操作系统下制作烧写用的 SD 卡,则需要给SD进行分区,预留前10M给uboot。若只需要使用SD卡启动uboot,或者在是linux操作系统(如 ubuntu)下制作烧写用的SD卡,则可跳过这一步。(1)打开软件(2)选择SD卡(3)右键,选择【删除】(4)右键,选择【创建】(5)预留10M空间系统类型选择【FAT32】装载SD卡分配盘符并记好,按 【确定】选择 【应用】,让之前所有操作真正执行选择 【是】至此,已完成了uboot所需要的空间预留。2. 烧写 SD启动的 uboot(windows 操作系统)(1) 把SD 卡格式化成 FAT32,使用前最好先把SD卡

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论