武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸_第1页
武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸_第2页
武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸_第3页
武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸_第4页
武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、学生学号 实验课成绩实 验 报 告 书实验课程名称嵌入式操作系统开课学院计算机科学与技术学院指导教师姓名毛雪涛学生姓名小灰灰的爸爸学生专业班级中国好学长系列2013 2014 学年 第 二 学期实验课程名称: 嵌入式操作系统 实验项目名称Linux安装与使用实验成绩实验者小灰灰的爸爸专业班级中国好学长系列组别同组者实验日期 年 月 日第一部分:实验分析与设计(可加页)一、 实验内容描述(问题域描述) 内容:描述一下安装和使用的过程,举几个命令作为例子二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验原理和设计:1、 安装Linux操作系统,并

2、配置Linux操作系统 2、 基本命令的练习 3、查看Linux的各个重要目录的结构。三、主要仪器设备及耗材硬件:THUGA-1型实验箱,PC机软件:PC机操作系统:Linux第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 1、在Vmware虚拟机的运行界面中,点击菜单的File项在弹出的下拉菜单中选择“New“项再点击 Virtual Machine。进入安装向导。2、在安装向导中选择自定义安装(Custom),进入下一步。3、选择虚拟机平台,不同的Vmware虚拟机平台支持的硬件特性不同。进入下一步。4、选择要安装

3、的Linux操作系统光盘镜像,同时使用Vmware虚拟机的“Easy Install“功能自动安装Linux操作系统。5、设置安装的Linux系统的用户名和密码信息。6、设置Linux虚拟机的显示名称及安装路径。选择Linux系统在用户本机上实际额的安装路径。7、配置虚拟机使用的处理器。配置处理器数量、处理器的内核数,这里使用默认的设置:一个单核处理器。8、配置虚拟机使用的存储空间、网络类型、I/O适配器类型、创建一个虚拟磁盘,在其上安装Linux操作系统、并选择使用的磁盘类型、磁盘的空间大小及设定存储磁盘文件的路径。9、对话框汇总了前面的设置项目,如果没有错误,不需要修改,直接点击“Fini

4、sh“按钮,进行Linux系统的安装。10、Linux系统安装完毕后会自动启动,输入用户名、口令,进入Linux系统的桌面环境。11、配置Samba服务,点击“ApplicationsSystem SettingsSecurity Level弹出Security Level Configuration对话框。12、在Security Level Configuration对话框中,将Security Level项设置为Disable firewall,即无防火墙。13、点击“ApplicationsSystem SettingsSamba,对Samba服务器配置对话框中进行配置。14、对Sam

5、ba服务各项进行设置保存,就可以看到Linux系统下的共享文件夹/home/zcnet。二、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)实验结果正常三、 实验小结、建议及体会1、使用Vmware虚拟机在Windows系统中安装Linux操作系统,安装过程不需要修改Windows中的硬盘分区,只要具有足够的剩余磁盘空间就行了。2、Linux系统使用的是Redhat Enterprise Linux Advanced Server 4 发行版本。3、Linux系统直接挂载即可,安装简单,提供很多网络服务,有两种共享功能:Vmware虚拟机的共享设置和linux系统

6、的Samba服务可供选择。四、 实验小结、建议及体会通过这次学习,我对Linux的了解更加的深入了,也对Linux下的编程操作更加的熟练了!实验课程名称: 嵌入式操作系统 实验项目名称嵌入式交叉编译环境构建实验成绩实验者小灰灰的爸爸专业班级中国好学长系列组别同组者实验日期 年 月 日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)1 了解嵌入式开发环境及交叉编译器2 了解嵌入式Linux的相关特性3 掌握如何建立一个嵌入式Linux开发环境4 如何利用交叉编译器来编译内核2、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)1、建立交叉

7、编译环境该交叉编译工具在光盘的Linuxtoolchains文件夹下的cross-3.3.2.tar.bz2 。具体步骤如下:1)解压编译工具包首先进入/usr/local 目录,建立一个arm的子目录(如果/usr/local/arm 目录不存在),再进入该目录。命令如下:# cd /usr/local# mkdir arm# cd arm然后将光盘Linux目录下的 “toolchain”文件夹下的cross-3.3.2.tar.bz2拷贝到刚刚进入的arm目录下,并执行以下命令:# tar jxf cross-3.3.2.tar.bz2解压后会出现一个3.3.2的目录,该目录下有gcc,

8、g+,bin等各种实用工具。就这样,交叉编译工具就安装好了。2)将该交叉编译工具的路径添加到环境变量解压后,交叉编译工具中的可执行文件在3.3.2/bin 目录下,此目录不在Linux系统的可执行程序搜索目录中,因此需要在启动设置里手动添加进去,具体做法是修改/etc/bashrc或用户主目录下的.bashrc文件,在文件的最后一行增加路径,增加的文本如下:export PATH=$PATH:/usr/local/arm/3.3.2/bin这样就将交叉编译工具的路径添加进去了。为了使修改的文件立即生效,可执行:# source /etc/bashrc (假设修改的文件是/etc/bashrc)

9、或者重起Linux操作系统。然后在终端上输入arm,然后按tab键,会自动显示arm- linux-,表示交叉编译环境安装成功。二、编译内核 首先将光盘Linuxkernel目录下的pxa270_kernel2.6.9.tar.gz 拷贝到/home 目录,然后进入这个目录,解压命令如下:# cd /home# tar -xzvf pxa270_kernel2.6.9.tar.gz解压完成后,将会看到在/home目录下生成一个pxa270_linux-2.6.9 的文件目录。接着进入pxa270_linux-2.6.9 此目录,该目录下显示的是嵌入式Linux的内核代码的组织结构:/arch

10、子目录包含了所有硬件结构特定的内核代码。如 i386,alpha 和 arm.。/drivers 子目录包含了内核中所有的设备驱动程序,如 usb 和 sound。/fs 子目录包含了所有的文件系统的代码。如 nfs,ext3 和 jffs2 等。/include 子目录包含了建立内核代码时所需的大部分库文件,这个模块利用其它模块重建内核。该目录也包括了不同平台需要的库文件。比如,asm-arm 是 arm 平台需要的库文件。 /init 子目录包含了内核的初始化代码,内核从此处工作。/ipc 子目录包含了进程间通信代码/kernel 子目录包含了主内核代码/mm 子目录包含了所有内核管理代码

11、/net 子目录包含了和网络相关的代码,如 atm,ipv6 等。一般在每个目录下都有一个 depend 文件和一个 Makefile 文件。这两个文件都是编译时使用的辅助文件。其中 Makefile 文件中指出了编译时需要用到的编译器,也是移植内核过程中不可缺少的。执行 make menuconfig 命令。# cd pxa270_linux_2.6.9# make menuconfig三、主要仪器设备及耗材硬件:THUGA-1型实验箱,PC机软件:PC机操作系统:Linux第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等

12、) 1、下载解压linux-2.6.14.tar.bz2文件到/home目录中,进入linux-2.6.14目录中,运行“vi Makefile”命令,修改第192行与193行内容。2、运行“cp arch/arm/configs/smdk2410_defconfig .config”命令,.config是内核编译时所依赖的重要文件。3、运行“make ARCH=arm menuconfig”命令启动内核配置菜单,按要求配置内核,配置结束后选中“Save Configuration to an Alternate File ”项,然后确定设置保存到.config配置文件中。4、直接运行 “ma

13、ke ARCH=arm CROSS_COMPILE=arm-linux-”命令对内核进行交叉编译。5、内核编译完毕后,将在根目录下得到vmlinux文件,复制此文件到/skyeye-1.2.4/binary下。6、下载解压skyeye-testsuite-2.3.tar.bz2文件,然后把skyeye-testsuite-2.3/linux/s3c2410/s3c2410x-2.6.14目录下的initrd.img文件复制到/skyeye-1.2.4/binary下。7、在/skyeye-1.2.4/binary目录中运行“./skyeye e vmlinux”命令,然后可以观察到屏幕上先输出

14、SKYEYE的配置信息,然后是内核启动信息。在linux操作系统内核启动完毕后,将进入shell界面,可以接受用户的输入。二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)实验结果正常三、实验小结、建议及体会通过这次学习,我对Linux的了解更加的深入了,也对Linux下的编程操作更加的熟练了!实验课程名称: 嵌入式操作系统 实验项目名称Linux内核移植实验成绩实验者小灰灰的爸爸专业班级中国好学长系列组别同组者实验日期 年 月 日第一部分:实验分析与设计(可加页)三、 实验内容描述(问题域描述) 内容:描述一下安装和使用的过程,举几个命令作为例子四、 实验基本原

15、理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验原理和设计: (1)准备工作 (2)修改顶层Makefile (3)添加分区 (4)添加devfs (5)配置编译内核三、主要仪器设备及耗材硬件:THUGA-1型实验箱,PC机软件:PC机操作系统:Linux第二部分:实验调试与结果分析(可加页)五、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 无六、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)一、准备工作建立工作目录,下载源码,安装交叉工具链,步骤如下。mkdir /root/build_

16、kernelcd /root/build_kernelwget -c /pub/linux/kernel/v2.6/linux.tar.bz2 tar jxvf linux.tar.bz2export PATH=/usr/local/arm/3.3.2/binPATH二、修改顶层Makefile修改内核目录树根下的的Makefile,指明体系结构是arm,交叉编译工具是arm-linux-。vi Makefile找到ARCH和CROSS_COMPILE,修改ARCH ?= armCROSS_COMPILE ?= arm-l

17、inux-保存退出。三、设置flash分区此处一共要修改3个文件,分别是:arch/arm/mach-s3c2410/devs.c ;指明分区信息arch/arm/mach-s3c2410/mach-smdk2410.c ;指定启动时初始化drivers/mtd/nand/s3c2410.c ;禁止Flash ECC校验3.1指明分区信息在arch/arm/mach-s3c2410/devs.c文件中:vi arch/arm/mach-s3c2410/devs.c在arch/arm/mach-s3c2410/devs.c文件添加的内容包括:(1)添加包含头文件。(2)建立nand flash分

18、区表。(3)假如分区信息(4)建立Nand Flash芯片支持(5)加入Nand Flash芯片支持到Nand Flash驱动(1)添加包含头文件。#include <linux/mtd/partitions.h>#include <linux/mtd/nand.h>#include <asm/arch/nand.h>.(2)建立Nand Flash分区表/* 一个Nand Flash总共64MB, 按如下大小进行分区 */* NAND Controller */static struct mtd_partition partition_info = /*

19、256kB */ name: "boot", size: 0x00040000, offset: 0x0, , /*1.75MB */ name: "kernel", size: 0x001C0000, offset: 0x00040000, , /* 30MB */ name: "root", size: 0x01e00000, offset: 0x00200000, , /* 32MB */ name: "user", size: 0x02000000, offset: 0x02000000, ;name: 代

20、表分区名字size: 代表flash分区大小(单位:字节)offset: 代表flash分区的起始地址(相对于0x0的偏移)目标板计划分4个区,分别存放boot, kernel, rootfs以及以便以后扩展使用的用户文件系统空间。(3)加入Nand Flash分区struct s3c2410_nand_set nandset =nr_partitions: 4, /* 指明partition_info中定义的分区数目 */partitions: partition_info, /* 分区信息表*/;(4) 建立Nand Flash芯片支持struct s3c2410_platform_nan

21、d superlpplatform= tacls:0, twrph0:30, twrph1:0, sets: &nandset, nr_sets: 1,;sets: 支持的分区集nr_set:分区集的个数(6)加入Nand Flash芯片支持到Nand Flash驱动另外,还要修改此文件中的s3c_device_nand结构体变量,添加对dev成员的赋值struct platform_device s3c_device_nand = .name = "s3c2410-nand", /* Device name */ .id = 1, /* Device ID */

22、.num_resources = ARRAY_SIZE(s3c_nand_resource), .resource = s3c_nand_resource, /* Nand Flash Controller Registers */ /* Add the Nand Flash device */ .dev = .platform_data = &superlpplatform ;name: 设备名称id: 有效设备编号,如果只有唯一的一个设备为1,有多个设备从0开始计数.num_resource: 有几个寄存器区resource: 寄存器区数组首地址dev: 支持的Nand Flash

23、设备3.2 指定启动时初始化kernel启动时依据我们对分区的设置进行初始配置.arch/arm/mach-s3c2410/mach-smdk2410.c文件vi arch/arm/mach-s3c2410/mach-smdk2410.c修改smdk2410_devices.指明初始化时包括我们在前面所设置的flash分区信息static struct platform_device *smdk2410_devices _initdata = s3c_device_usb, s3c_device_lcd, s3c_device_wdt, s3c_device_i2c, s3c_device_i

24、is, * 添加如下语句即可 */ s3c_device_nand,;保存,退出。3.3 禁止Flash ECC校验我们的内核都是通过UBOOT写到Nand Flash的, UBOOT通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的. 所以, 我们在这里选择禁止内核ECC校验.修改drivers/mtd/nand/s3c2410.c 文件:vi drivers/mtd/nand/s3c2410.c找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:chip->ec

25、cmode = NAND_ECC_NONE;保存,退出。OK.我们的关于flash分区的设置全部完工.四、支持启动时挂载devfs为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,修改fs/Kconfig文件vi fs/Kconfig找到menu "seudo filesystems"添加如下语句:config DEVFS_FS bool "/dev file system support (OBSOLETE)" default yconfig DEVFS_MOUNT bool "A

26、utomatically mount at boot" default y depends on DEVFS_FS五、配置编译内核cp arch/arm/configs/smdk2410_defconfig .configmake menuconfig在smdk2410_defconfig基础上,我所增删的内核配置项如下:这里约定“#”后面的是注释部分。Loadable module support -> Enable loadable module support Automatic kernel module loadingSystem Type -> S3C2410

27、 DMA supportBoot options -> Default kernel command string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 #说明:mtdblock2代表我的第3个flash分区,它是我的rootfs # console=ttySAC0,115200使kernel启动期间的信息全部输出到串口0上. # 2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。 # 用户空间的串口编程针对的仍是/dev/ttyS0等Floating point em

28、ulation -> NWFPE math emulation This is necessary to run most binaries!#接下来要做的是对内核MTD子系统的设置Device Drivers -> Memory Technology Devices (MTD) -> MTD partitioning support #支持MTD分区,这样我们在前面设置的分区才有意义 Command line partition table parsing #支持从命令行设置flash分区信息,灵活 RAM/ROM/Flash chip drivers -> <

29、*> Detect flash chips by Common Flash Interface (CFI) probe <*> Detect nonCFI AMD/JEDECcompatible flash chips <*> Support for Intel/Sharp flash chips <*> Support for AMD/Fujitsu flash chips <*> Support for ROM chips in bus mapping NAND Flash Device Drivers -> <*>

30、NAND Device Support <*> NAND Flash support for S3C2410/S3C2440 SoC Character devices > Nonstandard serial port support S3C2410 RTC Driver#接下来做的是针对文件系统的设置,本人实验时目标板上要上的文件系统是cramfs,故做如下配置File systems -> <> Second extended fs support #去除对ext2的支持 Pseudo filesystems -> /proc file syst

31、em support Virtual memory file system support (former shm fs) /dev file system support (OBSOLETE) Automatically mount at boot (NEW) #这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了 Miscellaneous filesystems -> <*> Compressed ROM file system support (cramfs) #支持cramfs Network File Systems -> <*&

32、gt; NFS file system support保存退出,产生.config文件.编译内核make zImage注意:若编译内核出现如下情况LD .tmp_vmlinux1armlinuxld:arch/arm/kernel/vmlinux.lds:1439: parse errormake: * .tmp_vmlinux1 Error 1解决方法:修改arch/arm/kernel/vmlinux.ldsvi arch/arm/kernel/vmlinux.lds将文件尾2条的ASSERT注释掉;/* ASSERT(_proc_info_end _proc_info_begin), &

33、quot;missing CPU support") */* ASSERT(_arch_info_end _arch_info_begin), "no machine record defined") */然后重新make zImage即可。 编译完成后会在arch/arm/boot/目录下生产zImage内核映象。zImage映象是可引导的,压缩的内核映象,就是我们要移植到开发板上的内核映象文件。七、 实验小结、建议及体会通过这次学习,我对Linux的了解更加的深入了,也对Linux下的编程操作更加的熟练了!实验课程名称: 嵌入式操作系统 实验项目名称文件系统的

34、移植实验成绩实验者小灰灰的爸爸专业班级中国好学长系列组别同组者实验日期 年 月 日第一部分:实验分析与设计(可加页)五、 实验内容描述(问题域描述) 描述一下文件系统映像文件的准备和移植的步骤(与内核移植类似)六、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验原理和设计: 用busybox定制一个很小的文件系统,并且运行用户编译的hello(动态链接)。三、主要仪器设备及耗材硬件:THUGA-1型实验箱,PC机软件:PC机操作系统:Linux第二部分:实验调试与结果分析(可加页)八、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实

35、验过程发现的问题等) 无九、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)1 建立工作目录设定工作目录为/root/build_rootfs/, 下载busybox到该目录mkdir /root/build_rootfs2 建立根目录, 该目录就是我们要移植到目标板上的目录,对于嵌入式的文件系统,根目录下必要的目录包括bin,dev,etc,usr,lib,sbin。cd /root/build_rootfsmkdir rootfscd rootfs mkdir bin dev etc usr lib sbinmkdir usr/bin usr/sbin usr

36、/lib3 交叉编译busybox,我们在配置busybox的时候是基于默认配置之上来配置的;先make defconfig就是把busybox配置成默认,然后再make menuconfig来配置busybox。#解压tar jxvf busybox-1.5.0.tar.ba2mv busybox-1.5.0 busyboxcd busybox#添加交叉工具链export PATH=/usr/local/arm/3.3.2/binPATHmake defconfigmake menuconfig #配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneo

37、us Utilities #下的“taskset”选项去掉,不然会出错。#如下:Busybox setting->builds options->build busybox as a static binary ->installitation options ->dont use /usrMiscellaneous Utilities > taskset保存退出。#编译安装makeARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all installARCH指定平

38、台CROSS_COMPILE指定交叉编译CONFIG_PRRFIX指定安装的路径#把安装的linuxrc删除cd /root/build_rootfs/rootfsrm linuxrc3 copy C库交 叉应用程序的开发需要用到交叉编译的链接库,交叉编译的链接库是在交叉工具链的lib目录下;我们在移植应用程序到我们的目标板的时候,需要把交叉编译的 链接库也一起移植到目标板上,这里我们用到的交叉工具链的路径是/usr/local/arm/3.3.2/,所以链接库的目录是/usr/local /arm/3.3.2/lib(本来跟目标板相关的目录是/usr/local/arm/3.3.2/arm-

39、linux, 因此要拷贝的链接库应该在/usr/local/arm/3.3.2/arm-linux/lib下,但是此目录的很多链接都是链接到/usr /local/arm/3.3.2/lib目录下的库文件,所以我们从/usr/local/arm/3.3.2/lib目录拷贝库),此目录下有四种类 型的文件。实际的共享链接库,如:libc-2.3.2.so主修订版本的符合链接 如:libc.so.6与版本无关的符合链接(链接到主修订版本的符合链接),如:libc.so静态链接库包文件,如:libc.a以上四种类型的文件,我们只需要两种:实际的共享链接库;主修订版本的符合链接,还有动态连接器及其符号链接。#进入链接库目录cd /usr/local/arm/3.3.2/lib#编写一个shell文件,用于copy实际的共享链接库;主修订版本的符合链接;动态

温馨提示

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

评论

0/150

提交评论