北京邮电大学嵌入式操作系统实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学
嵌入式操作系统实验报告
学院:信息与通信工程学院
班级: XXXX
学号: XXX
姓名: XX
指导老师: XX
日期: 2017年12月14日
目录
嵌入式操作系统实验报告 (1)
一、实验步骤............................................ 错误!未定义书签。

1.建立Android开发环境 (3)
2.建立交叉编译环境 (6)
3.内核源码编译 (6)
4.内核运行 (9)
5.内核裁剪 (9)
二、实验中遇到的问题及解决方案 (11)
三、实验总结 (11)
一、实验步骤
1. 建立 Android 开发环境:
新建文件夹,命名为学号后四位:0305,在0305文件夹中再新建文件夹命名为“嵌入式软件实验”,最后在“嵌入式软件实验”文件夹下拷贝三个压缩包JDK、Android SDK 和交叉编译器。

在终端切换至嵌入式实验文件目录下查询,查看到所有文件已存在。

解压 JDK:tar zxvf jdk-7u15-linux-x64.tar.gz后,执行ls命令,看到实验文件夹下面生成文件夹 jdk1.7.0_15:
设置环境变量,编辑文件/etc/profile,执行 vi /etc/profile打开 profile:
执行 source /etc/profile使对/etc/profile 的修改立即生效
执行 java -version 命令,出现 java 版本信息为 1.7.0_15,此时Java 开发环境建立好了。

解压 Android SDK,看见目录下产生一个文件夹 android-sdk-linux
编辑文件/etc/profile,在环境变量PATH后面增加android的环境变量
执行android命令弹出android SDK manager窗口
为了获取更新列表,设置Android SDK Manager -Settings,修改配置:
安装一个Android 2.1版本的 SDK Platform,再安装 Android SDK Tools、Android SDK Platform-tools和Android SDK Build-tools:
新建一个虚拟机,创建的虚拟机名称为 2.1:
启动新建的虚拟机:
2. 建立交叉编译环境:
执行tar jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
在嵌入式软件实验目录下生成一个arm-2014.05 文件夹
再次执行 vi /etc/profile,在 PATH 中添加/home/lq/0305/嵌入式软件实验/arm- 2014.05/bin/ (注意用冒号隔开),保存退出后执行 source /etc/profile。

3. 内核源码编译:
在实验目录下新建 Kernel 文件夹,将 goldfish-android-goldfish-2.6.29.tar.gz 拷贝到 Kernel 中:
切换至Kernel 文件夹,然后执行tar zxvf goldfish-android-goldfish-2.6.29.tar.gz 解压源码压缩包:
执行vi Makefile,找到 ARCH 和 CROSS_COMPILE 的定义:
修改为:
再修改 kernel 目录下的 timeconst.pl 文件:
将文件末尾的 defined()去掉:
************************************更新!************************************ *********因为实验文件的目录中含有中文命名,为了保证不影响内核编译,*********** ****************此处将“嵌入式软件实验”更改为“Research”******************** ******************************************************************************
编译内核,执行如下命令:
出现上图所示的问题,上网查阅后发现该问题的原因是64位系统运行32位的程序需要32位运行库,于是安装上对应的运行库:
再次编译内核,发现内核编译成功,问题解决:
在 0305/Research/Kernel/arch/arm/boot 文件夹下生成一个 zImage 镜像文件:
在文件属性中查看镜像大小为1624048字节:
4. 内核运行:
在终端执行 emulator64-arm -avd 2.1 -kernel ./arch/arm/boot/zImage指定虚拟机从编译的内核启动:
启动后在Settings 的 About Phone 中可以看到内核版本 Kernel version 为
2.6.29,在虚拟机编译内核时的用户名为 root@lq-virtual-machine。

启动后在Settings 的 About Phone 中可以看到内核版本 Kernel version 为
2.6.29,在虚拟机编译内核时的用户名为 root@lq-virtual-machine。

5. 内核裁剪:
(选择了内核中Networking options部分一些关于Ipv6的部分进行注释裁剪。


再次 make goldfish_defconfig
Make编译内核:
新生成的 zImage 文件覆盖了原先的文件,由于裁剪的内容不多,所以编译后内核大小变化不大,但还是有所减小。

(1624048字节 ==>1615788字节)
再次在终端执行 emulator64-arm -avd 2.1 -kernel ./arch/arm/boot/zImage指定虚拟机从编译的内核启动:
裁剪后的内核可以在虚拟机中启动。

二、实验中遇到的问题及解决方案
a.问题一:
在获取安卓更新资源时,发现无论怎么修改Options始终无法更新资源。

解决措施:
通过从网上搜索原因并且在虚拟机中询查错误时,偶然发现虚拟机并不能联网,于是更改了虚拟机的网络适配器的设置,将其改为NAT 模式,问题得到解决。

b.问题二:
在编译内核时始终不能成功,执行make指令时总是会出错。

解决措施:
由于此问题在嵌入式的微信讨论群中已经有人提及,所以按照已做的同学提供的教程,即:64位系统运行32位的程序需要32位运行库,安装上对应的32位的运行库后问
题得到解决。

三、实验总结
本次实验于我而言,虽然关于Android相关的开发并不是我特别喜欢的方向,以后也不打算在这方面深入研究。

但是在做整个大作业的时候,我发现Android的方面涉及的其实很浅,主要是让我们熟悉了Linux终端的基本操作指令。

虽然之前有一些Linux 下开发的经验,懂得基本操作指令的使用,但是此次实验能够让我更加熟悉Linux环境下的操作,并且附带了解了Android的内核编译与裁剪,这些都是很宝贵的经验!。

相关文档
最新文档