实验一嵌入式系统设计

发布 2022-10-21 08:09:28 阅读 8212

合肥学院。

嵌入式系统设计实验报告。

2013- 2014第二学期)

专业。实验项目: 实验一嵌入式开发环境搭建实验

实验时间: 2014 年 5 月 3 日。

实验成员。指导老师。

电子信息与电气工程系。

2023年4月制。

1、实验目的。

1、熟悉ubuntu操作系统安装。

2、掌握嵌入式交叉编译环境的搭建。

3、实现在linux下配置tftp服务。

4、实现配置nfs服务。

5、实现简单程序开发。

二、实验内容。

本实验安装ubuntu10.04.4操作系统环境,搭建嵌入式交叉编译环境,配置tftp服务和nfs服务。

学习使用linux命令,创建一个新目录,并在其中编写和makefile文件,学习在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)把编译器路径加入系统环境变量,输入下图命令。

“回车”后,在最后一行添加如下命令:

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,chomd 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”>>

ecoh “hello tftp service ,put to tftp serive”>>

tftp localhost

# tftp> get

# tftp> put

# ttfp> quit

配置完成如下图所示:

其中get是取得文件,put是将文件上传到tftp服务器上。

3、nfs服务配置。

1)ubuntu上默认是没有安装nfs服务器的,因此要安装nfs服务器端:

输入命令:#sudo apt-get install nfs-kernel-server

得到下图所示:

输入“y”后得到如下图所示:

2)配置/etc/export

nfs允许挂载的目录及权限在文件/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 /mnt

4、常用linux命令。

首先用mkdir建立目录,用rmdir删除目录,用touch新建文件,用rm删除文件,用cp复制文件等等,相应命令及步骤如下列图所示:

5、应用程序开发。

1)建立工作目录。

如下图所示输入命令:

如下图所示用命令编写 源**。

3)编写makefile

像建立文件一样建立makefile文件,操作步骤如下列图所示:

编辑完程序保存即可。

4)编译应用程序。

在上面的步骤完成之后,就可以在hellocxb目录下运行“make”来编译我们的程序了。

5、实验小结。

本次实验是嵌入式系统的第一个实验——嵌入式开发环境搭建实验。首先就是ubuntu操作系统的安装,虚拟机的安装比较容易,就是傻瓜式的安装,在虚拟机里安装ubuntu就耗费了很多时间了,老是卡在一个点不动,老半天才动一点,不过庆幸的是最后还是装好了,毕竟这是基础。因一些应用程序均需要交叉编译工具链,故还搭建了交叉编译环境。

此外通过命令配置了tftp服务以及nfc服务。在熟悉linux的过程中,我们组在终端下试了一些linux的基本指令,如显示目录内容的ls,建立目录的mkdir,返回上一级目录的cd..等等。

从中感受到linux的强大,用简简单单的指令就能做出我们想要的效果,实在太神奇了。,总之这次的实验让我们都获益良多,对嵌入式实验也有了初步的了解,更对以后的接口实验打了基础。

六、思考题。

1、makefile是如何工作的?其中宏定义分别是什么意思?

makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。

makefile文件作为一种描述文档一般需要包含以下内容:

宏定义。源文件之间的相互依赖关系。

可执行的命令。

2、make和makefile之间的关系?

make一般主要被用来管理一个软件程序项目(用来完成大型软件的自动编译),但是它不仅仅可以用来管理软件程序,还可以做很多其他的事情,比如文件同步等。

makefile是被make使用的“描述”文件,它描述要被make所管理的项目中的文件间的关系(比如对于一个c程序项目来说,.**件和。c文件之间的关系,.

c和。o之间的关系等),和如何维护这个项目的状态(比如对于一个程序项目来说,就有编译可执行文件,产生文档,清除所有除源**文件之外的文件等).

3、gcc编译器的常用参数有哪些?它们的功能分别是什么?

1)gcc -e source_

e,只执行到预编译。直接输出预编译结果。

2)gcc -s source_

s,只执行到源**到汇编**的转换,输出汇编**。

3)gcc -c source_

c,只执行到编译,输出目标文件。

4)gcc (-e/s/c/) source_ -o output_filename

o, 指定输出文件名,可以配合以上三种标签使用。

o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:

e:预编译结果将被输出到标准输出端口(通常是显示器)

s:生成名为source_的汇编**。

c:生成名为source_的目标文件。

无标签情况:生成名为的可执行文件。

5)gcc -g source_

g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。

这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip

6)gcc -s source_

s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。

7)gcc -o source_

o(大写的字母o),编译器对**进行自动优化编译,输出效率更高的可执行文件。

o 后面还可以跟上数字指定优化级别,如:

gcc -o2 source_

数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。

8)gcc -wall source_

-w,在编译中开启一些额外的警告(warning)信息。

-wall,将所有的警告信息全开。

9)gcc source_ -l/path/to/lib -lxxx -i/path/to/include

-l, 指定所使用到的函数库,本例中链接器会尝试链接名为的函数库。

-l,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。

-i, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。

4、嵌入式系统的定义和特点?

1)定义:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

嵌入式系统设计实验

北京联合大学。嵌入式系统设计与应用。实验报告。学院 专业 课程 嵌入式系统设计与应用。班级 姓名。学号 题目c语言和arm汇编混合编程。1 实验目的及任务。掌握c语言和arm汇编混合编程方法。二 及截图分析。一 调试运行 在c 中嵌入汇编指令 程序,并记录运行结果 二 调试运行 汇编程序调用c函数 ...

嵌入式系统设计实验

北京联合大学。嵌入式系统设计与应用。实验报告。学院 专业 课程 嵌入式系统设计与应用。班级 姓名。学号 年月日。题目 通过 sd 卡烧写镜像到 nand flash,kernel 的编译。1 实验目的及任务。任务1 通过 sd 卡烧写镜像到 nand flash 目的 好处是省去了 器。任务2 ke...

嵌入式系统实验一

嵌入式系统 课程实验报告。记分及评价 一 实验名称。存储器实验。二 实验目的。了解s3c2410x处理器的内部存储空间分配 掌握对存储区配置的方法 掌握对存储区进行读写访问的方法。三 实验内容。熟练使用命令脚本文件对arm存储控制器进行正确配置。使用c语言编程,实现对ram的读写访问。四 实验原理。...