计算机和信息学院
《嵌入式系统》
实验报告
学生姓名:
学 号:
专业班级:
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 <stdio.h>
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. 修改一些参数,再次运行调试,加深对多线程的理解。
实验二(1):A/D接口实验
一、实验目的
了解在linux 环境下对S3C6410芯片的8 通道10位A/D 的操作和控制。
二、实验内容
学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集AIN0通道,并且在超级终端上显示。
三、实验步骤
1、阅读理解源码
使用vi 编辑器或其他编辑器阅读理解源代码。
2、编译使用程序
运行make clean和make 产生ad 可执行文件
3、下载调试
换到minicom终端窗口。
我们可以通过调节开发板上的W1可调电阻,可以看到不断变化的转换结果。
四、思考题
1. 逐次逼近型的A/D转换器原理是什么?
答:逐次逼近型的A/D 转换器逐次逼近型(也称逐位比较式)的A/D 转换器,使用比积分型更为广泛,其原理框图如图2.3.1 所示,主要由逐次逼近寄存器SAR、D/A 转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR 寄存器中的数字量经D/A 转换后得到电压Vc 和待转换模拟电压V。进行比较。
2.A/D 转换的重要指标包括哪些?
答:分辨率、精度(绝对误差,相对误差,转换时间,工作温度范围)
3.ARM的A/D功能的相关寄存器有哪几个,对应的地址是什么?2、ARM的A/D功能的相关寄存器有哪几个,对应的地址是什么?
答: 寄存器名 地址
ADC控制寄存器(ADCCON) 0X58000000
ADC触摸屏控制寄存器(ADCTSC) 0X58000004
ADC启动延时寄存器(ADCDLY) 0X58000008
ADCDAT0 0X580000C
ADC转换数据寄存器(ADCCON)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论