合工大嵌入式系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息学院
《嵌入式系统》
实验报告
学生姓名:
学号:
专业班级:
2014 年 6 月20 日
实验一(1):熟悉Linux 开发环境
一、实验目的
熟悉Linux 开发环境,学会基于Mini6410 的Linux 开发环境的配置和使用。使用Linux 的arm-linux-gcc 编译,minicom串口方式下载调试
二、实验内容
本次实验使用Fedora 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具(包括软件调试工具)
硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统Fedora9+MINICOM+ARM-LINUX 开发环境
四、实验步骤
1 、建立工作目录
[root@zxt smile]# mkdir hello
[root@zxt smile]# cd hello
2 、编写程序源代码
在 Linux 下的文本编辑器有许多,常用的是 vi 和 Xwindow 界面下的 gedit 等,开发过程中推荐使用 vi。 Kdevelope、anjuta 软件的界面与 vc6.0 类似,使用它们对于熟悉 windows 环境下开发的用户更容易上手。
实际的 hello.c 源代码较简单,如下:
#include
main() {
printf(“hello world \n”);
}
我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:[root@zxt hello]# vi hello.c
按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为 hello.c的文件。
3、编写Makefile
要使上面的 hello.c 程序能够运行,我们必须要编写一个 Makefile 文件,Makefile 文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,只需要敲一个“make”命令整个工程就可以实现自动编译,本次实验只有一个文件,它还不能体现出使用 Makefile 的优越性,但当工程比较大文件比较多时,不使用 Makefile 几乎是不可能的。本次实验用到的 Makefile 文件如下:
CC= armv4l-unknown-linux-gcc
EXEC = hello
OBJS = hello.o
CFLAGS +=
LDFLAGS+= –static
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) –o $@ $(OBJS)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
4、编译应用程序
在上面的步骤完成后,我们就可以在hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行:
5、下载调试
1、进入root
终端输入su root,再输入密码即可。
2、终端输入minicom
出现上面的界面,点击回车,出现下图
此时才能进行正常的下载。
3、ctrl+a,再点击s,出现下图
选择第一个zmodem,回车。出现下图回车,出现下图
输入绝对路径,出现下图回车,出现下图
从上图可以看出,文件未被下载,原因是mini6410板子已经有了hello可执行文件(之前下载的),若需要下载,则需要删除之前的hello文件,rm hello即可。
删除之后,继续下载,出现下图
下载成功。
4、运行程序
在电脑终端输入./hello,或者在mini6410终端输入hello都可。
五、思考题
1.Makefile 是如何工作的?其中的宏定义分别是什么意思?
Makefile定义了一系列规则,指明了哪些文件需要编译,哪些文件需要先编译等复杂命令。终端中只要在工作目录下输入make即可编译,输入make clean 则清除编译。makefile 是一个文本文件,用于描述程序源代码之间以及程序可执行代码与源代码之间的依赖关系。
关于宏定义,简单点说就是文本替换。为了方便使用不同的编译器或者编译环境以及硬件环境,一些复杂的软件使用了大量的宏定义来代替诸如“gcc”这样的最基本的东西。CC:指明编译器;EXEC:指明编译后生成的可执行文件名称;OBJS:目标文件列表;CFLAGES:编译参数;LDFLAGES:链接参数;All:编译主入口;clean:清除编译。
实验一(2):多线程应用程序设计
一、实验目的
1. 了解多线程程序设计的基本原理
2. 学习pthread库函数的使用。
二、实验内容
1、读懂pthread.c的源代码,熟悉几个重要的pthread库函数的使用。掌握共享锁和信号量的使用方法。
2、运行make产生pthread程序,使用minicom串口方式连接开发主机进行运行实验。
三、实验设备及工具
硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统Fedora9+MINICOM+ARM-LINUX 开发环境
四、实验步骤
1.使用vi编辑器或其他编辑器阅读理解源代码。
2. 运行make产生pthread可执行文件
3. 切换到minicom终端窗口。可能出现
拔插USB数次。
4.运行pthread,观察运行结果的正确性。
5. 修改一些参数,再次运行调试,加深对多线程的理解。