资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
-课程名称:嵌入式系统B实验工程:嵌入式系统B实验地点:明向实验楼308专业班级:班*:201学生:指导教师:2021 年11 月6日实验一 嵌入式虚拟开发环境的搭建以及核编译一、 实验目的和要求1 熟悉ARM虚拟平台Skyeye的搭建2 熟悉穿插编译开发环境的搭建3 熟悉编译ARM-Linu*4 熟悉在Skyeye平台上仿真ARM-Linu*5 拓展:尝试移植其他版本的Linu*,并且在Skyeye上运行二、 实验容和原理本实验是通过在PC机上搭建嵌入式开发环境虚拟环境Skyeye,熟悉嵌入式穿插编译开发环境以及ARM-Linu*系统移植的主要步骤。实验虚拟平台SMDK2410v CPU三星S3C2410ARM920T,核心频率为62.400MHz,I-Cache 16K,D-Cache 16Kv 存32MB,存频率62.400MHz实验软件介绍SkyEye是一个开源软件OpenSource Software工程,中文名字是“天目,SkyEye的目标是在通用的Linu*和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统这里假定“仿真和“模拟的意思根本一样;可在SkyEye上运行u CLinu*以及u C/OS-II等多种嵌入式操作系统和各种系统软件如TCP/IP,图形子系统,文件子系统等,并可对它们进展源码级的分析和测试。SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差异的。编译ARM-Linu*核,熟悉ARM-Linu*的移植过程。编译成功后,同学们需要将ARM核在SkyEye的ARM硬件模拟环境运行测试。具体步骤见后文。三、 主要仪器设备硬件:a. PC机软件:a. VMware workstation9.0b. Ubuntu 10.04LTS四、 操作方法与实验步骤1. 安装虚拟机VMware workstation8.02. 安装ubuntu10A. 可以选用Typical Install方式建立ubuntuB. 安装VMToolC. 设置host puter共享的目录3. 安装使用gcc4.1版本编译器编译Skyeye需要低版本gccA.在安装之前先看看ubuntu10.04的gcc是哪个版本B.下载相关文件执行命令sudo dpkg -i *.deb就可以安装好gcc4.1.C.设置默认gcc版本update4. 安装SKyeye5. 测试Skyeye6. 安装穿插编译环境7. 编译核键入 cd linu*-2.6.14回车键入vi Makefile 回车,修改Makefile生成默认的核配置文件,键入cp arch/arm/configs/smdk2410_defconfig .回车,继续键入 sodu make smdk2410_defconfig回车参照skyeye.wiki.sourceforge.net/Linu* 修改核文件8. 裁剪/定制核1) 键入sodu make menuconfig回车2) 设置核启动参数3) 设置initrd的支持4) 设置ROM file system 的支持5) 设置e*t2的支持a. 编译,键入make键编译完成后会有vmlinu*在当前目录下,这就是我们要的arm-linu*核了b. 验证l 将skeeye-testsuite-1.2.5/linu*/s3c2410/s3c2410-2.6.14中的skyeye. conf和initrd.img复制到linu*-2.6.14目录中l 键入skyeye -e vmlinu*出现了ARMLinu*字样说明成功!五、 实验结果与分析六、讨论、心得 通过本次实验完成了核的编译,这次实验对我来说还是比拟新鲜的,之前从没接触过这些东西,遇到了好多问题,但是通过与教师同学的交流,学习,这些问题终究都一一解决了。通过这次试验,我也逐渐熟悉了LINU*命令行环境下的各种操作,学会根据错误信息修改操作方法,最终完成了自己的实验任务。实验二 嵌入式程序的开发与根文件系统的搭建一、 实验目的和要求1 熟悉利用busybo*建立ARM-Linu*根文件系统initrd2 熟悉修改现有根文件系统initrd的方法3 熟悉利用穿插编译环境编译简单的C 语言程序4 将自己写好的C 语言程序,进展穿插编译,写入根文件系统,并在实验一中搭建的虚拟环境中运行,显示正确的结果5 答复后面遇到的4个问题二、 实验容和原理根文件系统就是一种目录构造,根文件系统就是要包括Linu* 启动时所必须的目录和关键性的文件,例如Linu* 启动时都需要有init目录下的相关文件,在Linu* 挂载分区时Linu*一定会找/etc/fstab 这个挂载文件等,根文件系统中还包括了许多的应用程序bin 目录等,任何包括这些Linu*系统启动所必须的文件都可以成为根文件系统。利用BusyBo*搭建根文件系统。BusyBo* 是一个集成了一百多个最常用linu*命令和工具的软件。BusyBo* 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。这样的集合可以替代大局部常用工具比方的GNU fileutils , shellutils等工具,BusyBo*提供了一个比拟完善的环境,可以适用于任何小的或嵌入式系统。将自己编译的程序保存到根文件系统中的目录下,就可以在嵌入式虚拟环境中运行。三、 主要仪器设备硬件:a. PC机软件:a. 实验一搭建好的嵌入式虚拟平台b. helloword.c四、 操作方法与实验步骤1. 编译busybo*a. 修改Makefile中的arch和编译工具链头为:ARCH ?=armb. make menuconfig 修改编译配置选项c. 键入maked. 编译键入make install应该是生成必要的可执行文件e. 修改busybo*的属性 键入chmod 4755 ./_install/bin/busybo*注意:必须要修改属性,否则在busybo*中很多命令会受限制:比方:$su su:must be suid to work properlyf. 查看busybo*需要的动态库2. 制作initrd.imga. 创立映像文件并挂到 initrd 目录b. 将添加 busybo* 到此映像文件c. 拷贝busybo* 需要的动态库arm-linu*/libd. 建立必要的文件e. 将helloworld.c 文件经过穿插编译后复制到home 目录下穿插编译过程如下:cp helloworld initrd/home/f. 最后,生成initrd.imgcd .umount initrd3. 测试initrd.imga. 将生成initrd.img文件复制到实验一的linu*-2.6.14目录下,执行skyeye -e vmlinu*b. Skyeye启动成功后,在home目录下执行./helloworldc. 出现Hello ARM World表示成功五、 实验结果与分析在对busybo*进展make时会遇到很多问题,以下是具体的解决方法:1. 出现如以下列图错误解决方法:继续键入make menuconfigBusybo* Setting-Miscellaneous Utilities - ionice修改之后继续键入make2.出现如下错误解决方法:在当前目录下的include目录下建立一个mtd目录,把事先下载好的ubi-user.h拷贝到mtd目录下。具体操作如下:cp /home/yewanjaly/busybo*/ubi-user.h include/mtd(注意先下载ubi-user.h)修改之后继续键入make3.出现如下错误解决方法1:键入make menuconfigBusybo* Settings-Busybo* Library Tuning-Support infiniband HW修改之后继续键入make解决方法2:通过查看核源代码目录中的“include/linu*/ifarp.h文件可知“ARPHRD_INFINIBAND的值为“32,然后修改“networking/interface.c文件,在其中添加:*define ARPHRD_INIFINIBAND 32。在本实验中采用的是解决方法1,但是做过之后第二种解决的方法较好!4.出现如下错误/linu*/filter.h在最开场加上 *include 修改之后继续键入make5.出现错误如下解决方法:键入make menuconfigLinu* System Utilities - mkfs_e*t2修改之后继续键入make6.出现如下错误解决方法:键入make menuconfigLinu* System Utilities - mkfs_vfat修改之后继续键入make以下是实验过程中的其他截图局部六、 讨论、心得本次实验对于我个人而言,还是比拟困难的,而且很复杂。在改正busybo*的make时候遇到的问题,花废了大量的时间,开场时不知道要怎么修改,把提示出错的文件的代码从头到尾看了一遍,没有什么进展,后来才知道只要关闭相关的功能即可,但是找这个功能在什么地方也是很费事的。总之,这次实验完成后,感觉自己学到了很多。实验三 ARM-Linu*添加网络驱动程序与实现NFS访问一、 实验目的和要求1 熟悉虚拟平台添加网卡驱动程序的步骤2 通过在虚拟机下实现SkyEye虚拟平台的NFS 访问,验证添加的驱动程序正确性二、 实验容和原理通过在ARM-Linu*中添加CS8900a网卡驱动程序,实现嵌入式虚拟环境具备网络功能。验证网卡工作是否正常。在虚拟机中增加NFS Server,并且添加共享目录。通过ARM-Linu*映射NFS Server的共享目录,实现读、写和执行等操作。如果读、写以及执行操作正常说明网卡驱动程序添加成功。NFS 是一种使用于分散式文件系统的协定,由SUN Microsystems 公司开发,于1984年向外公布。NFS 的功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据。通过NFS,应用和程序可以像访问本地文件一样访问远端系统上的文件。实现NFS 对于调试嵌入式环境下的应用程序有很大帮助。三、 主要仪器设备硬件:a. PC机软件:a. VMware workstation9.0b. Ubuntu 10.04LTS四、 操作方法与实验步骤1、核的编译过程已在前面的实验中进展过,这里就不在表达了。D.为核添加 cs8900(见) 网卡驱动,以支持 NF
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号