嵌入式系统实验一.docx
《嵌入式系统实验一.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实验一.docx(19页珍藏版)》请在冰豆网上搜索。
![嵌入式系统实验一.docx](https://file1.bdocx.com/fileroot1/2022-10/29/a813ff9a-e5c0-4871-8b22-b6ce5cdaaa84/a813ff9a-e5c0-4871-8b22-b6ce5cdaaa841.gif)
嵌入式系统实验一
实验一嵌入式系统开发环境搭建
(1)嵌入式虚拟开发环境的搭建以及内核编译
1、实验目的和要求
1.熟悉ARM虚拟平台Skyeye的搭建
2.熟悉交叉编译开发环境的搭建
3.熟悉编译ARM-Linux
4.熟悉在Skyeye平台上仿真ARM-Linux
5.拓展:
尝试移植其他版本的Linux,并且在Skyeye上运行
2、实验内容和原理
本实验是通过在PC机上搭建嵌入式开发环境虚拟环境(Skyeye),熟悉嵌入式交叉编译开发环境以及ARM-Linux系统移植的主要步骤。
实验虚拟平台SMDK2410
vCPU三星S3C2410(ARM920T),核心频率为62.400MHz,I-Cache16K,D-Cache16K
v内存32MB,内存频率62.400MHz
实验软件介绍
SkyEye是一个开源软件(OpenSourceSoftware)项目,中文名字是“天目”,SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行uCLinux以及uC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。
SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。
由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。
编译ARM-Linux内核,熟悉ARM-Linux的移植过程。
编译成功后,同学们需要将ARM内核在SkyEye的ARM硬件模拟环境运行测试。
具体步骤见后文。
3、主要仪器设备
硬件:
a.PC机
软件:
a.VMwareworkstation9.0
b.Ubuntu10.04LTS
c.skyeye-1.2.5_REL.tar.gz
d.skyeye-testsuite-1.2.5.tar.bz2
e.arm-linux-gcc-3.4.1.tar.bz2
f.linux-2.6.14.tar.gz
g.cpp-4.1_4.1.2-27ubuntu1_i386.deb
h.g++-4.1_4.1.2-27ubuntu1_i386.deb
i.gcc-4.1_4.1.2-27ubuntu1_i386.deb
j.gcc-4.1-base_4.1.2-27ubuntu1_i386.deb
k.libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb
4、操作方法与实验步骤
1.安装虚拟机VMwareworkstation8.0
2.安装ubuntu10
A.可以选用TypicalInstall方式建立ubuntu
B.安装VMTool
C.设置hostcomputer共享的目录
3.安装使用gcc4.1版本编译器(编译Skyeye需要低版本gcc)
A.在安装之前先看看ubuntu10.04的gcc是哪个版本
B.下载相关文件
a.cpp-4.1_4.1.2-27ubuntu1_i386.deb
b.g++-4.1_4.1.2-27ubuntu1_i386.deb
c.gcc-4.1_4.1.2-27ubuntu1_i386.deb
d.gcc-4.1-base_4.1.2-27ubuntu1_i386.deb
e.libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb
执行命令sudodpkg-i*.deb就可以安装好gcc4.1.
C.设置默认gcc版本update
ls/usr/bin/gcc*
sudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-4.140
sudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-4.?
20
update-alternatives--configgcc
update-alternatives--install/usr/bin/g++g++/usr/bin/g++-4.140
4.安装SKyeye
a.键入tar-xzvfskyeye-1.2.5_REL.tar.gz解压
b.依次键入cdskyeye-1.2.5_REL回车,./configure回车,make回车,sudomakeinstall回车
5.测试Skyeye
a.键入tar-xvjfskyeye-testsuite-1.2.5.tar.bz2回车
b.键入cdskyeye-testsuite-1.2.5/linux/s3c2410/s3c2410-2.6.14/回车
c.键入skyeye-evmlinux回车
6.安装交叉编译环境
a.键入tar-xvjfarm-linux-gcc-3.4.1.tar.bz2回车
b.记住arm-gcc的目录,即/usr/local/arm/3.4.1/bin
7.编译内核
a.键入tar-xzvflinux-2.6.14.tar.gz回车
b.键入cdlinux-2.6.14回车
c.键入viMakefile回车
修改Makefile:
ARCH?
=$(SUBARCH)
CROSS_COMPILE?
=改为:
ARCH?
=arm
CROSS_COMPILE?
=/usr/local/3.4.1/bin/arm-linux-
d.生成默认的内核配置文件,键入cparch/arm/configs/smdk2410_defconfig.回车,继续键入sodumakesmdk2410_defconfig回车
e.参照修改内核文件
1 修改include/asm-arm/arch-s3c2410/map.h
#defineS3C2410_CS6(0x30000000)
改为:
#defineS3C2410_CS6(0xC0000000)
键入viinclude/asm-arm/arch-s3c2410/map.h
2 修改include/asm-arm/arch-s3c2410/memory.h
#definePHYS_OFFSET(0x30000000UL)
改为:
#definePHYS_OFFSET(0xC0000000UL)
键入viinclude/asm-arm/arch-s3c2410/memory.h
f.裁剪/定制内核
1)键入sodumakemenuconfig回车
2)设置内核启动参数
Bootoption--->Defaultkernelcommandstring:
mem=32Mconsole=ttySAC0root=/dev/raminitrd=0xc0800000,0x00800000ramdisk_size=8192rw
3)设置initrd的支持
DeviceDrivers--->Blockdevices--->
[*]RAMdisksupport
(4096)DefaultRAMdisksize(kbytes)改为:
8192
[*]InitialRAMdisk(initrd)support
4)设置ROMfilesystem的支持
Filesystem--->[*]ROMfilesystemsupport
5)设置ext2的支持
Filesystem--->[*]Secondextendedfssuppord
g.编译,键入make
键编译完成后会有vmlinux在当前目录下,这就是我们要的arm-linux内核了
h.验证
●将skeeye-testsuite-1.2.5/linux/s3c2410/s3c2410-2.6.14中的skyeye.
conf和initrd.img复制到linux-2.6.14目录中
●键入skyeye-evmlinux
出现了ARMLinux字样说明成功!
5、实验结果与分析
六、讨论、心得
通过本次实验完成了内核的编译,这次实验没有什么太大的难度,只要按照实验指导书的步骤并且细心的话,实验是很快就可以完成的。
(2)嵌入式程序的开发与根文件系统的搭建
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。
这样的集合可以替代大部分常用工具比如的GNUfileutils,shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的或嵌入式系统。
将自己编译的程序保存到根文件系统中的目录下,就可以在嵌入式虚拟环境中运行。
3、主要仪器设备
硬件:
a.PC机
软件:
a.实验一搭建好的嵌入式虚拟平台
b.busybox-1.19.4.tar.bz2
c.helloword.c
4、操作方法与实验步骤
1.编译busybox
a.修改Makefile中的arch和编译工具链头为:
ARCH?
=arm
CROSS_COMPILE?
=/usr/local/3.4.1/bin/arm-linux-
b.makemenuconfig修改编译配置选项
选择动态编译busybox
BusyboxSetting----->
buildoption-->
[]BuildBusyBoxasastaticbinary(nosharedlibs)
[*]Buildsharedlibbusybox
[*]Produceabinaryforeachapplet,linkedagainstlibbusybox
[*]Produceadditionalbusyboxbinarylinkedagainstlibbusybox
[]BuildwithLargeFileSupport(foraccessingfiles>2GB)
Ge