实验一嵌入式系统设计_第1页
实验一嵌入式系统设计_第2页
实验一嵌入式系统设计_第3页
实验一嵌入式系统设计_第4页
实验一嵌入式系统设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、合肥学院嵌入式系统设计实验报告(2013- 2014第二学期) 专 业: 实验项目: 实验一嵌入式开发环境搭建实验 实验时间: 2014 年 5 月 3 日 实验成员: _ 指导老师: 电子信息与电气工程系2014年4月制1、 实验目的1、 熟悉ubuntu操作系统安装。2、 掌握嵌入式交叉编译环境的搭建。3、 实现在Linux下配置TFTP服务。4、 实现配置NFS服务。5、 实现简单程序开发。二、实验内容 本实验安装Ubuntu10.04.4操作系统环境,搭建嵌入式交叉编译环境,配置TFTP服务和NFS服务。学习使用Linux命令,创建一个新目录,并在其中编写hellocxb.c和Make

2、file文件,学习在Linux下的编程和编译过程。三、实验设备硬件:PC机。软件:Ubuntu操作系统。4、 实验过程1、 交叉编译环境的搭建 在Linux平台下,要为开发板编译Bootloader、内核、图形界面Qtopia,还有其他一些应用程序,均需要交叉编译工具链。把交叉编译器统一为arm-Linux-gcc-4.3.3,安装设置步骤如下: (1)将光盘目录Linux中的arm-Linux-gcc-4.3.3复制到tmp(filesystem/tmp)文件夹中,执行解压命令,如下图所示命令: 按“回车”进行解压命令,解压完成后如下图所示: (2)把编译器路径加入系统环境变量,输入下图命令

3、 “回车”后,在最后一行添加如下命令: Export PATH=$PATH:/usr/local/arm/4.3.3/bin 得如下图,保存退出即可。 (3)重新登录系统,使以上设置有效,在命令行中输入#arm-Linux-gcc -v命令,出现如下图所示信息,说明交叉编译环境已经成功安装。2、 TFTP服务配置(1)安装TFTP软件,输入命令:#sudo apt-get install tftp-hpa tftpd-hpa 得到下图所示:(2)建立tftpboot目录,作为服务器的目录 输入命令:#sudo mkdir /tftpboot 释放权限:(服务器目录,需要设置权限为777,cho

4、md 777) 输入命令 #sudo chmod 777 /tftpboot(3)配置TFTP服务器 输入命令:#sudo gedit /etc/default/tftpd-hpa 将原来的内容修改为: TFTP_DIRECTORY="/tftpboot" TFTP_OPTIONS="-l-c-s" 进行保存,如下图所示:(4)重启TFTP服务 输入命令:#sudo service tftpd-hpa restart(5)测试TFTP以此输入一下命令: #cd /tftpboot echo “hello tftp service”>>a.tx

5、t Ecoh “hello tftp service ,put to tftp serive”>>b.txt Tftp localhost # tftp> get a.txt # tftp> put b.txt # ttfp> quit配置完成如下图所示: 其中get是取得文件,put是将文件上传到TFTP服务器上。3、NFS服务配置(1)Ubuntu上默认是没有安装nfs服务器的,因此要安装nfs服务器端:输入命令:#sudo apt-get install nfs-kernel-server得到下图所示:输入“Y”后得到如下图所示:(2)配置/etc/expo

6、rtNFS允许挂载的目录及权限在文件/etc/export中进行了定义。输入命令:gedit /etc/exports 回车出现下图所示界面,在文件末尾添加/opt/nfs *(rw,sync,no_root_squash)命令。如下图所示,进行保存即可:(3)重启NFS此时可以运行以下命令来显示一下共享出来的目录: #showmount -e或者可以使用以下命令把它挂载到本地磁盘中,例如将/opt/nfs挂载到/mnt下: #sudo mount -t nfs localhost:/opt/nfs /mnt运行df命令看是否挂载成功。查看后可以使用以下命令卸载: #sudo umount /

7、mnt4、 常用Linux命令 首先用mkdir建立目录,用rmdir删除目录,用touch新建文件,用rm删除文件,用cp复制文件等等,相应命令及步骤如下列图所示:5、 应用程序开发(1) 建立工作目录 如下图所示输入命令: 如下图所示用命令编写hellocxb.c 源代码。(3) 编写makefile 像建立hellocxb.c文件一样建立Makefile文件,操作步骤如下列图所示: 编辑完程序保存即可。(4) 编译应用程序 在上面的步骤完成之后,就可以在hellocxb目录下运行“make”来编译我们的程序了。5、 实验小结 本次实验是嵌入式系统的第一个实验嵌入式开发环境搭建实验。首先就

8、是Ubuntu操作系统的安装,虚拟机的安装比较容易,就是傻瓜式的安装,在虚拟机里安装Ubuntu就耗费了很多时间了,老是卡在一个点不动,老半天才动一点,不过庆幸的是最后还是装好了,毕竟这是基础。因一些应用程序均需要交叉编译工具链,故还搭建了交叉编译环境。此外通过命令配置了TFTP服务以及NFC服务。在熟悉Linux的过程中,我们组在终端下试了一些Linux的基本指令,如显示目录内容的ls,建立目录的mkdir,返回上一级目录的cd.等等。从中感受到Linux的强大,用简简单单的指令就能做出我们想要的效果,实在太神奇了。在后面的应用程序开发中更是对vi和getit文本编辑器的区别以及程序能够运行

9、所需的Makefile文件有了大致了解,总之这次的实验让我们都获益良多,对嵌入式实验也有了初步的了解,更对以后的接口实验打了基础。六、思考题1、 Makefile是如何工作的?其中宏定义分别是什么意思?makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。Makefile文件作为一种描述文档一般需要包含以下内容:宏定义源文件之间的相互

10、依赖关系可执行的命令2、 Make和Makefile之间的关系?make一般主要被用来管理一个软件程序项目(用来完成大型软件的自动编译),但是它不仅仅可以用来管理软件程序,还可以做很多其他的事情,比如文件同步等。makefile是被make使用的“描述”文件,它描述要被make所管理的项目中的文件间的关系(比如对于一个C程序项目来说,.h文件和.c文件之间的关系,.c和.o之间的关系等),和如何维护这个项目的状态(比如对于一个程序项目来说,就有编译可执行文件,产生文档,清除所有除源代码文件之外的文件等).3、 GCC编译器的常用参数有哪些?它们的功能分别是什么?(1)gcc -E source

11、_file.c-E,只执行到预编译。直接输出预编译结果。(2)gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码。(3)gcc -c source_file.c-c,只执行到编译,输出目标文件。(4)gcc (-E/S/c/) source_file.c -o output_filename-o, 指定输出文件名,可以配合以上三种标签使用。-o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:-E:预编译结果将被输出到标准输出端口(通常是显示器)-S:生成名为source_file.s的汇编代码-c:生成名为source_file.o的目标文件

12、。无标签情况:生成名为a.out的可执行文件。(5)gcc -g source_file.c -g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.out(6)gcc -s source_file.c-s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。(7)gcc -O source_file.c-O(大写的字母O)

13、,编译器对代码进行自动优化编译,输出效率更高的可执行文件。-O 后面还可以跟上数字指定优化级别,如:gcc -O2 source_file.c数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。(8)gcc -Wall source_file.c -W,在编译中开启一些额外的警告(warning)信息。 -Wall,将所有的警告信息全开。(9)gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include -l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。 -L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。 -I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。4、 嵌

温馨提示

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

评论

0/150

提交评论