北邮嵌入式实验报告
- 格式:docx
- 大小:1.67 MB
- 文档页数:33
北京邮电大学
嵌入式系统开发实验报告
学院:
班级:
姓名:
学号:
序号:
目录
一、 实验目的 .............................................................................................. 1
二、 实验设备 .............................................................................................. 1
三、 基础实验(实验一~实验七) ............................................................ 1
1. 实验五 .................................................................................................. 1
2. 实验六 .................................................................................................. 1
3. 实验七 .................................................................................................. 1
四、 驱动程序 .............................................................................................. 5
1. 设备驱动程序的概念 .......................................................................... 5
2. 驱动程序结构 ...................................................................................... 6
3. 设备注册和初始化 .............................................................................. 7
4. 设备驱动程序的开发过程 .................................................................. 8
五、 基本接口实验 ...................................................................................... 8
1. 实验十二简单设备驱动程序 .............................................................. 9
2. 实验十三 CPU GPIO驱动程序设计 ................................................... 9
3. 实验十四中断实验 ........................................................................... 10
4. 实验十五数码管显示实验 ................................................................ 12
5. 实验十六 LED点阵驱动程序设计 ................................................... 19
6. 实验十七 AD驱动实验 .................................................................... 23
7. 实验十八 DA驱动实验 .................................................................... 26
六、 实验中遇到的问题及解决方法 ........................................................ 30
七、 实验总结及心得 ................................................................................ 31
一、 实验目的
通过实验熟悉Linux环境,并掌握一些基本接口驱动的写法和用C语言编写简单的实验程序。学习LINUX开发环境的搭建,通讯配置等。并熟练掌握LINUX驱动程序的编写及开发流程。对嵌入式系统有进一步的了解。
二、 实验设备
1.一套PXA270EP嵌入式实验箱
2.安装Redhat9的宿主PC机,并且配置好ARM Linux的开发环境
三、 基础实验(实验一~实验七)
实验一~七为基础实验,目的是为后续实验搭建好软、硬件环境,配置好相关的协议、服务,并通过编写最简单的HelloWorld程序进行测试。由于后面的实验都要依靠前面实验的配置,故本段只着重叙述实验七的具体实现。
1. 实验五
实验五为宿主PC机配置了TFTP服务。TFTP(Trivial File Transfer Protocol)是简单文件传输协议,由于特定开发环境的制约,这一服务是必须的。在配置完成后,每次重启宿主PC机时,都须先输入命令:service xinetd restart,以启动TFTP服务。
2. 实验六
实验六为宿主PC机配置了NFS服务。NFS(Network File System)指网络文件系统,它实现了文件在不同的系统间使用。当我们想用远端档案时,只需调用“mount”就可以远端系统挂接在自己的档案系统之下。每次重启宿主PC机时,都须先输入命令:service nfs restart,以启动nfs服务。
3. 实验七
实验七通过用c语言编写的简单程序HelloWorld,测试前面几个实验是否成功配置好环境,从超级终端可以看到HelloWorld程序的运行结果。
实验步骤如下: 1) 硬件连接:
连接宿主 PC 机和一台 PXA270-RP目标板。
2) 打开宿主PC 机电源,进入 Linux操作系统。
3) 启动RedHat 9.0 的图形界面,如下图,若您是以 root 身份登陆在文本模式下,则输入命令startx启动图形界面。进入RedHat 9.0 图形界面后,打开一个终端窗(Terminal)。
4) 输入minicom然后回车,minicim设置为115200 8NI无流控。
5) 打开PXA270_RP目标板电源,按目标板上的BOOT键,在minicom中应该会看到如下图:
6) 在minicom终端窗口中,如图,输入下列四条命令
root
ifconfig eth 192.168.0.50 up
mount -o nolock 192.168.0.100:/ /mnt
cd /mnt
此时,先将该窗口最小化,在后面的第 10 操作步骤中还将会回到该窗口中进行操作。
7) 宿主机上打开一个终端窗口(Terminal),点击【红帽/System
Tools/Terminal】启动终端窗口,输入下列 4 条命令:
① cd /home
②mkdir HW
③ cd HW
④ vi HelloWorld.c /*请您输入程序 7.1 程序清单*/
此时会显示一个空白的屏幕,这条命令的含义是,使用 Vi 编辑器,对一个名叫HelloWorld.c的文件进行编辑,我们看到的空白窗口是对文件进行编辑的窗口,如下图。就像在 Windows系统下面使用写字板等一样道理。
在 vi 里面先单击键盘 A 键,然后左下角会变成—INSER。输入程序的时候和其他编辑器是一样的,如下图。 当输入程序完毕后,单击键盘 Esc 键,然后按“:”(冒号)此时左下角会出现冒号然后输入“wq”最后按“Enter”确认存盘退出 vi 编辑器,如下图。
8) 在上面同一个终端窗口中,输入下列 2 条命令交叉编译HelloWorld.c源程序,并查看生成的.o 目标文件,如图 7-10,图7-11:
① arm-linux-gcc–oHelloWorldHelloWorld.c
②ls
等到再次出现提示符,代表程序已经正确编译。如果此步出现错误信息,请查看错误信息,并且重新编辑原来的 C文件,修改错误。直到正确编译。
9) 重新打开第 7 步最小化的开有minicom的终端窗口,即到 PXA270-RP
目标板的mnt目录下,请您输入下列 3 条命令,运行HelloWorld编译成功的HelloWorld目标程序:
① cd home/HW /*回到minicom中目标板的/mnt/home/HW目录下*/ ②ls
③./ HelloWorld /*此时会看到如下图*/
四、 驱动程序
1. 设备驱动程序的概念
设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能:
对设备初始化和释放;
对设备进行管理,包括实时参数设置,以及提供对设备的操作接口;
读取应用程序传送给设备文件的数据或者回送应用程序请求的数据;
检测和处理设备出现的错误。
Linux操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。这意味着:
由于每一个设备至少由文件系统的一个文件代表,因而都有一个“文件名”。
应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。
打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过read()、write()、ioctl()等常规的文件操作对目标设备进行操作。
设备文件的属性由三部分信息组成:第一部分是文件的类型,第二部分是一个主设备号,第三部分是一个次设备号。其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的