最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

嵌入式Linux系统开发教程实验报告

来源:动视网 责编:小OO 时间:2025-09-29 23:20:10
文档

嵌入式Linux系统开发教程实验报告

嵌入式实验报告姓名:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。二、实验内容本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及A
推荐度:
导读嵌入式实验报告姓名:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。二、实验内容本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及A
嵌入式实验报告

姓名:

学号:

学院: 

日期: 

实验一 熟悉嵌入式系统开发环境

一、实验目的

熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。

二、实验内容

本次实验使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。

三、实验设备及工具

硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。

软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。

四、实验步骤

1、建立工作目录

[root@localhost root]# mkdir  hello

[root@localhost root]# cd  hello

2、编写程序源代码

我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

[root@localhost hello]# vi hello.c

按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq!”保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。

hello.c源程序:

#include

int main() {

char name[20];

scanf(“%s”,name);

printf(“hello %s”,name);

return 0;

}

3、编写Makefile

要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译。

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

下面我们来简单介绍这个Makefile 文件的几个主要部分:

CC 指明编译器

EXEC 表示编译后生成的执行文件名称

OBJS 目标文件列表

CFLAGS 编译参数

LDFLAGS 连接参数

all: 编译主入口

clean: 清除编译结果

注意:“$(CC) $(LDFLAGS) -o $@ $(OBJS)”和“-rm -f $(EXEC) *.elf *.gdb *.o”前空白由一个Tab 制表符生成,不能单纯由空格来代替。

与上面编写 hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中。

[root@localhost hello]# vi Makefile

4、编译应用程序

在上面的步骤完成后,我们就可以在hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行:

[root@localhost hello]# make clean//编译应用程序

[root@localhost hello]# make//下载调试

注意:编译、修改程序都是在宿主机(本地PC 机)上进行,不能在超级终端下进行。

5、下载调试

在宿主PC计算机上启动NFS服务,并设置好共享的目录,(这里将刚生成的根目录/arm2410cl作为共享目录,以下实验同理)具体配置请参照前面第一章第四节中关于嵌入式Linux 环境开发环境的建立。在建立好NFS共享目录以后,我们就可以进入超级终端中建立开发板与宿主PC机之间的通讯了。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host //超级终端中执行

如果不想使用我们提供的源码的话,可以再建立一个NFS 共享文件夹。如/root/share,

我们把我们自己编译生成的可执行文件复制到该文件夹下,并通过超级终端挂载到开发板上。

[root@localhost hello]# cp hello /root/share //虚拟机中

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/root/share /host //超级终端中

再进入/host目录运行刚刚编译好的hello程序,查看运行结果。

[/mnt/yaffs] cd  /host //超级终端中

[/host]  ./hello

hello world

(1)在PC计算机上启动NFS 服务,并设置好共享的目录。

启动 Red Hat Linux –>点击“主菜单”->选择“系统设置”->“服务器设置”->“NFS服务器”->“增加”->“基本”下:点击“浏览”选择“/”下的“arm2410cl/”;“确定”;“主机:192.168.0.* ”;“基本权限”选择“读/写”;“确定”。->“常规选项”下:选择:“允许来自高于1024的端口的连接”,其他不选;确定。

(2)在建立好NFS共享目录以后,进入minicom 中建立开发板与宿主PC机之间的通讯

新建终端

[root@localhost root]# minicom//服务器

新建终端

[root@localhost root]#ifconfig eth0 192.168.0.10  //设置主机地址

[root@localhost root]#ifconfig //查看地址

在服务器下:

[/mnt/yaffs] mount -t nfs –o nolock 192.168.0.56:/arm2410cl  /var

注意:开发板挂接宿主计算机目录只需要挂接一次便可,只要开发板没有重起,就可以一直保持连接。这样可以反复修改、编译、调试,不需要下载到开发板。

6、实验截图

7、测试结果

测试挂载成功,用mplayer xyz.avi命令播放视频

[root@localhost /]#cd /mnt/yaffs/mm

[root@localhost /]#mplayer xyz.avi

五、实验心得

本次实验比较简单,旨在让我们熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。实验中我们创建了一个新目录,并在其中编写hello.c和Makefile文件。我们学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置,下载已经编译好的文件到目标开发板上运行。学会使用Linux的armv4l-unknown-linux-gcc编译和基于NFS方式的下载调试,了解嵌入式开发的基本过程。

实验二 S3C2410处理器A/D模块硬件设计

一、实验目的

1.熟悉硬件电路设计

2.掌握简单的S3c2410处理器的电路设计。

3. 掌握protel软件的使用。 

二、实验内容

使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。

三、实验设备及工具

硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G以上。

软件:PC 机操作系统REDHAT LINUX 9.0、超级终端(或X-shell)、ARM-LINUX 开发环境

五、实验原理

1、A/D 转换器

A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。

A/D 转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。常用的有以下两种:(1)双积分型的 A/D 转换器;(2)逐次逼近型的 A/D 转换器。

2、A/D 转换的重要指标

(1)分辨率(Resolution)    

(2)精度(Accuracy)    

(3)ARM 自带的十位A/D 转换器

(4)A/D 转换器在扩展板的连接(A/D 转换器在扩展板的接法如图2.4.2 所示,前三路通过电位器接到3.3v 电源上。)

图 2.4.2 A/D 转换器在扩展板上的接法

六、实验步骤

1、阅读理解源码

进入/arm2410cl/exp/basic/04_ad 目录,使用vi 编辑器或其他编辑器阅读理解源代码。

2、编译应用程序

运行make产生ad可执行文件

[root@localhost /]# cd /arm2410cl/exp/basic/04_ad/

[root@localhost 04_ad]# make

armv4l-unknown-linux-gcc -c -o main.o main.c

armv4l-unknown-linux-gcc -o ../bin/ad main.o -lpthread

armv4l-unknown-linux-gcc -o ad main.o -lpthread

[root@localhost 04_ad]# ls

ad hardware.h main.o Makefile.bak s3c2410-adc.h

bin main.c Makefile readme.txt src

3、下载调试

到超级终端窗口,使用 NFS mount 开发主机的/arm2410cl 到/host 目录。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host

[/mnt/yaffs]insmod ad/s3c2410-adc.o

[/mnt/yaffs]cd /host/exp/basic/04_ad

[/host/exp/basic/04_ad]./ad

Press Enter key exit!

a0= 0.0032 a1= 3.2968 a2= 3.2968

我们可以通过调节开发板上的三个黄色的电位器,来查看a0、a1、a2 的变化。

4、原理图

5、实验截图

七、实验心得

通过本次试验,我学会了A/D接口原理,了解实现A/D系统对于硬件要求。阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口,还了解在Linux环境下对S3C2410芯片的8通道10位A/D模块的硬件设计。

实验三  Kernel与root的设计和烧写

一、实验目的

1.掌握Linux内核配置与裁剪的方法

2.理解根文件系统配置。

3. 掌握嵌入式系统内核和根文件系统的烧写的过程。

二、实验内容

对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境.

四、实验步骤

1、设计过程:

2、烧写过程:

(一)、超级终端设置

1、运行Windows 系统下开始→所有程序→附件→通讯→超级终端(HyperTerminal),新建一个通信终端。如果要求输入区号、电话号码等信息请随意输入,出现如图1.5.1 所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮。

2、在接下来的对话框中选择ARM 开发平台实际连接的PC 机串口(如COM1),按确定后出现如图1.5.2 所示的属性对话框,设置通信的格式和协议。这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。按确定完成设置。

3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的另存为,把设置好的超级终端保存在桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。

(二)、串口下载烧写

在 Windows xp 平台下通过超级终端烧写vivi(bootloader)、内核(Kernel)、根文件系

统(root)的步骤如下:

1、格式化flash

打开超级终端,先按住PC 机键盘的Back Space 键,然后启动2410-S,进入vivi,按照以下命令格式化flash,重新分区。

vivi>bon part 0 128k 192k 1216k 4288k:m 704k 回车

2、烧写vivi

这时已格式化flash,运行的是SDRAM 中的vivi.

vivi>load flash vivi x 回车

此时超级终端提示:

Ready for downloading using xmodem...

Waiting...

点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择协议为Xmodem,选择

镜像文件vivi,点击“发送”,10 秒左右vivi 就烧写到flash 里了.

这时要复位2410-S,重新进入vivi>来烧写kernel,root.

3、烧写内核映象zImage

vivi>load flash kernel x 回车

出现提示:

Ready for downloading using xmodem...

Waiting...

点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件zImage,协议

为Xmodem,点击“发送”,4 分钟左右zImage 传输完毕,zImage先传输到SDRAM中,再把数据从SDRAM 复制到flash 里,请等待这一过程结束到出现vivi>,再烧写root,否则会导致烧写kernel 失败。

4、烧写根文件系统(root)

vivi>load flash root x 回车

Ready for downloading using xmodem...

Waiting...

点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件root.cramfs,

协议为Xmodem,点击“发送”,8 分钟左右root.cramfs 烧写完毕;

5、烧写应用程序

用2410-S 实验箱配套网线连接好2410-S 的NIC-1 网口和PC 机的网口,重启2410-S 进

入linux 操作系统的[/mnt/yaffs]下,注意配置IP 在同一网段,执行以下指令:

[/mnt/yaffs]ifconfig --查看IP

[/mnt/yaffs]ifconfig eth0 192.168.0.111 --配置eth0 IP

[/mnt/yaffs]inetd --启动ftp

打开ftp 软件FlashFXP(在光盘中/img/flashvivi 目录中提供),点击界面中上部黄色闪

电符号,建立快速连接,输入地址192.168.0.111,用户名:root,密码:无。连接进入ftp

服务,上传“yaffs.tar.bz2”到2410-S 的/var 文件夹下,3 分钟左右上传完毕。

这时不能重启2410-S,否则上传过程白费。接下来在超级终端中输入:

[/mnt/yaffs]cd .. --转换到/mnt 下

[/mnt]rm -rf /yaffs/* --删除/yaffs 下文件

[/mnt]cd /var --转到var 目录下

[/var]tar xjvf yaffs.tar.bz2 –C /mnt/yaffs --解压yaffs.tar.bz2 到mnt/yaffs 目录下

如图1.5.9 所示,注意大小写(C 为大写),需5 分钟左右

解压缩结束,整个烧写实验就完成了。

五、实验心得

了解了Linux内核与root的知识,能够利用串口通讯下载方式完成它们的烧写过程。

实验四  嵌入式软件设计与交叉编译

一、实验目的

1.掌握嵌入式Linux软件设计方法原理

2.掌握Makefile文件设计方法。

3. 熟悉Linux下静态库和共享库的设计 。 

二、实验内容

(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;

(2)写好makefile文件,并上机调试;

(3)用变量指明两种编译器。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境.

四、程序分析

input.h:

#define  N  10

void input( char *s);

input.c:

#include

#include

Void  input(char  *s) 

{

    Printf(“input your name please:”);

    Scanf(“%s”, s);  

}

output.h

#define M  5

Void  output(char  *s)

output.c

#include

#include

Void  output(char  *s) 

{

    Printf(“hello %s!\\n”, s);

}

main.c

#include

#include

#include “input.h”

#include “output.h”

int main( ) 

{

int  i = 0 ;

char name[N];

input( name );

for( i=0; ioutput( name );

return  0 ;

}

Makefile:

CC=armv4l-unknown-linux-gcc

EXEC=zc

OBJS=main.o input.o output.o

$(EXEC):$(OBJS)

        $(CC) -o $(EXEC) $(OBJS)

install:

        $(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)

clean:

        -rm -f $(EXEC) &.o

五、实验结果

pc机上执行时 # make //若已执行过,则用# make clean 清除后再执行# make

# ./zc

结果:

[/mnt/yaffs]cd /host/exp/basic/zc/

[/host/exp/basic/zc]./zc

input your name,please:zc

hello zc!

hello zc!

hello zc!

hello zc!

hello zc!

六、实验心得

初步了解了交叉编译原理,GUN开发套件包括一系列开发测试工具,主要组件为Gcc。实验详细说明了基于ARM和Linux的嵌入式系统的交叉编译环境的建立方法,并给出了具体的步骤。实验结果表明,可以在x86平台编译调试ARM平台上运行的程序。并通过实验认识嵌入式系统上C语言编程与普通PC机上C语言编程的不同点,掌握使用交叉编译环境编译嵌入式系统程序的方法。

实验五  嵌入式驱动程序设计

一、实验目的

1.学习在LINUX下进行驱动设计的原理。

2.掌握使用模块方式进行驱动开发调试的过程。

二、实验内容

在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境 

四、实验步骤

1、在PC(宿主机)上编译调试驱动程序。

(1)阅读和理解源代码

进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码。

(2)编译驱动模块及测试程序

上面介绍了在Makefile 中有两种编译方法,可以在本机上使用gcc 也可以使用交叉编

•确定

•# KERNELDIR = /arm2410cl/kernel/linux-2.4.18-2410cl

•KERNELDIR = /usr/src/linux 

(3)测试驱动程序

如果使用gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。

#mknod /dev/demo c 254 0

首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。

•insmod  demo.o 

•lsmod demo.o 

•./test_demo 

2、使用arm编译器在实验箱调试驱动程序。

五、实验结果分析

1.编译demo.c 为demo.o;编译test_demo.c 为test_demo。

gcc -c demo.c              gcc -o test_demo test_demo.c

2.若编译器选择的是gcc(请查看Makefile文件),需要用以下命令建立节点:

#mknod  /dev/demo  c  254  0 

若编译器选择的是armv4l-unknown-linux-gcc 则不需要mknod命令建立节点。

3.使用insmod  demo.o插入模块,使用lsmod 列出所有插入的模块。查看demo的插入情况: #insmod  demo.o

6. 运行test程序测试驱动的各个接口运行情况。

# ./test_demo

结果:

PC机上的运行结果:                 实验箱上的运行结果:

 

7.运行ad程序测试驱动的各个接口运行情况

六、实验心得

掌握了在Linux下常用编译器的使用,进一步掌握了Makefile的编写和使用以及Linux下的程序编译与交叉编译的过程。

实验六  触摸屏驱动程序设计

一、实验目的

1、了解在 UP-TECH S2410/P270 DVP 平台上实现触摸屏Linux 驱动程序的基本原理。

2、了解 Linux 驱动开发的基本过程。

二、实验内容

以一个简单字符设备驱动程序为原型,剖析其基本结构。进行部分改写之后并编译实现其相应功能。

三、预备知识

1、掌握在 Linux 集成开发环境中编写和调试程序的基本过程。

2、了解 ARM 芯片(本实验是针对ARMS3C2410 系列)的基本结构。

3、了解 Linux 内核中关于设备控制的基本原理。

四、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪,PC机pentumn500以上, 硬盘40G以上,内存大于128M。

软件::PC 机操作系统REDHAT LINUX 9.0 +超级终端(或X-shell) + AMRLINUX 开发环境

五、实验原理

1、Linux 设备驱动概述

Linux 设备驱动程序属于Linux 内核的一部分,并在Linux 内核中扮演着十分重要的角色。它们像一个个“黑盒子”使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐蔽了设备的工作细节。用户通过一组标准化的调用来完成相关操作,这些标准化的调用是和具体设备驱动无关的,而驱动程序的任务就是把这些调用映射到具体设备对于实际硬件的特定操作上。

我们可以把设备驱动作为内核的一部分,直接编译到内核中,即静态编译,也可以单独作为一个模块(module)编译,在需要它的时候再动态的把它插入到内核中。在不需要时也可把它从内核中删除,即动态连接。显然动态连接比静态连接有更多的好处,但在嵌入式开发领域往往要求进行静态连接,尤其是像S3C44B0 这种不带MMU 的芯片。但在S3C2410等带MMU 的ARM 芯片中我们依然可以使用动态连接。目前Linux 支持的设备驱动可分为三种:字符设备(character device),块设备(blockdevice),网络接口设备(network interface)。当然它们之间的也并不是要严格的加以区分。

2、Linux 关于字符设备的管理

驱动程序在 Linux 内核中往往是以模块形式出现的。与应用程序的执行过程不同,模块通常只是预先向内核注册自己,当内核需要时响应请求。模块中包含两个重要的函数:init_module 和cleanup_module。前者是模块的入口,它为模块调用做好准备工作,而后者则是在模块即将卸载时被调用,做一些清扫工作。

驱动程序模块通过函数:

int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);

来完成向内核注册的。其中unsigned int major 为主设备号,const char *name 为设备名,至于结构指针struct file_operations *fops 它在驱动程序中十分重要。

在我们编写好一个驱动程序模块后,按传统的主次设备号的方法来进行设备管理,则我们应手工为该模块建立一个设备节点。命令:

mknod /dev/ts c 254 0

其中/dev/ts 表示我们的设备名是ts,“C”说明它是字符设备,“254”是主设备号,“0”是次设备号。一旦通过mknod 创建了设备文件,它就一直保留下来,除非我们手工删除它。

3、触摸屏的控制

本系统触摸屏的控制是使用的 S3c2410 处理器自带的触摸屏控制器,这部分的开发主要参考S3c2410 处理器的芯片手册的第416 页到第419 页,具体详见流程图。这部分的控制主要是设置触摸屏的采样模式,处理器提供的模式:

1.正常的转换模式

2.手动的x/y 位置转换模式

3.自动的x/y 位置转换模式

我们这里使用的是第3 种转换模式。需要注意的是在完成一次x/y 坐标采样的过程中需要一次模式转换即在点击触摸屏之前是等待中断模式,当有触摸动作产生触摸屏中断以后,在x/y 的坐标采集驱动中设置成自动的x/y 位置转换模式,在完成采集以后再转换回等待中断。

ADC控制寄存器

ADC触摸屏控制寄存器

注意:在自动模式,ADC触摸屏控制寄存器要在开始读之前重新配置

ADC开始延迟寄存器

ADC转换数据寄存器(ADCDAT1)

4.触摸屏相关电路图

六、实验步骤

1、改写该驱动程序,在其基础上实现一些你想要的简单功能。由于驱动程序的复杂性,不容易上手且又容易出问题,所以建议你先只对其中的调试信息做一些改动,在运行该驱动程序时看看其在屏幕上的打印信息。在你对整个过程及相关硬件有较多的一些了解之后再动手做一些功能上的调整。

2、结合 ARM-Linux 的移植实验中的相关内容,把改动的驱动程序编译进内核,并下载内核验证结果。你只要把该驱动在必要地方修改后(注意修改前的代码一定要做备份)保存代码,回到内核目录,make bzImage 编译内核,然后下载编译好的内核。

进入exp\\basic\\04_ad目录,使用vi编辑main.c:

#include

#include

#include

#include

#include

#include

#include

#include "s3c2410-adc.h"

#define ADC_DEV "/dev/adc/0raw"

static int adc_fd = -1;

static int init_ADdevice(void) {

if((adc_fd=open(ADC_DEV, O_RDWR))<0){

printf("Error opening %s adc device\\n", ADC_DEV);

return -1;  }

}

static int GetADresult(int channel) {

int PRESCALE=0XFF;

int data=ADC_WRITE(channel, PRESCALE);

write(adc_fd, &data, sizeof(data));

read(adc_fd, &data, sizeof(data));

return data;  }

static int stop=0;

static void* comMonitor(void* data) {

getchar();

stop=1;

return NULL;  }

int main(void)  {

int i;

float d;

pthread_t th_com;

void * retval;

//set s3c44b0 AD register and start AD

if(init_ADdevice()<0)

return -1;

/* Create the threads */

pthread_create(&th_com, NULL, comMonitor, 0);

printf("\\nPress Enter key exit!\\n");

while( stop==0 ) {

for(i=0; i<=2; i++){           //采样0~2 路A/D 值

d=((float)GetADresult(i)*3.3)/1024.0;

printf("a%d=%8.4f\",i,d);  }

usleep(1);

printf("\\r");

}

/* Wait until producer and consumer finish. */

pthread_join(th_com, &retval);

printf("\\n");

return 0;  }

七、实验结果与分析

在PC机终端

[ root @ localhost / ]#  cd /arm2410cl/exp/basic/04_ad/

[ root @ localhost  04_ad]#  make

armv4l-unknown-linux-gcc -c -o main.o main.c

armv4l-unknown-linux-gcc -o ../bin/ad main.o -lpthread

armv4l-unknown-linux-gcc -o ad main.o -lpthread

[root@ localhost 04_ad]#  ls

ad hardware.h main.o Makefile.bak s3c2410-adc.h

bin main.c Makefile readme.txt src

把makefile文件中cc=gcc改为cc=arm4vl-unknown-linux-gcc用于机箱上,

[ root @ localhost  04_ad]#  make  clean

[ root @ localhost  04_ad]#  make

新建终端

[root@ localhost  root]# minicom

[/mnt/yaffs] mount  -t  nfs  192.168.0.10:/arm2410cl  /host

[/mnt/yaffs] cd  /host/exp/basic/04_ad/

[/host/exp/basic/04_ad] ./ad

Press Enter key exit!

a0= 0.6316 a1= 2.3880 a2= 1.9594

七、实验心得

通过实验掌握了S3C2410芯片上的8通道110位AD转换器的工作原理;熟悉了各种A/D转换器原理和性能指标;掌握Linux下A/D设备驱动程序设计的基本方法;掌握了Makefile的编写和使用;学习A/D接口原理,了解实现A/D系统对于系统软件和硬件要求。

文档

嵌入式Linux系统开发教程实验报告

嵌入式实验报告姓名:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。二、实验内容本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及A
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top