基于ARM的通用IO接口驱动程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安文理学院机械电子工程系
课程设计任务书
学生姓名张聪聪专业班级 09级自动化(1)班学号***********指导教师雷俊红职称讲师教研室自动化
课程自动化专业课程设计
题目
基于ARM的通用I/O接口驱动程序设计
任务与要求
利用ARM实验箱上的资源设计一个LED灯驱动。
设计要求:
1)搭建交叉编译环境
2)通过NFS网络文件系统建立共享目录
3)LED按照1S的时间间隔亮灭,实现闪烁的效果
开始日期 2011.12.05 完成日期 2011.12.14
2011年 12 月 5 日
基于ARM的通用I/O接口驱动程序设计
摘要:
目前,基于ARM技术的嵌入式系统几乎已经深入应用到各个领域,是当今32位嵌入式系统应用的主流。ARM在工业控制领域的应用也受到越来越多的关注。随着嵌入式在生活中的应用越来越广泛,可广泛应用于移动设备、网络设备、工控设备、仪器仪表等。Linux 系统本身就是一个优秀的操作系统,再加上他的源代码是开放的,所以就把它作为嵌入式开发的核心原型系统。
嵌入式Linux设备驱动是嵌入式系统中十分重要的部分,我们选择了LED灯的驱动程序开发作为课程设计题目。可以进一步熟悉Linux操作系统及Linux的编程,同时也了解Linux下驱动开发的大体流程。
本次课程设计的LED灯的驱动程序开发大致包括两个部分,他们是交叉编译环境的搭建和驱动程序、应用程序的编写。交叉编译工具使用arm-linux-gcc-4.3.3,使用NFS网络文件系统构成共享目录完成程序的烧写。主要功能就是在已挂载LED驱动程序的情况下,用应用程序让LED间隔1S亮灭以验证驱动程序是否正常。
关键词:ARM;Linux操作系统;驱动程序开发;交叉编译;NFS;LED灯
目录
第1章绪论
1.1课程设计目的 (1)
1.2 课程设计环境 (1)
1.3 课程设计总体要求 (1)
第2 章方案设计
2.1 系统硬件平台 (1)
2.1.1 S3C2440的I/O口介绍 (2)
2.2 系统软件平台 (2)
2.2.1 软件简介 (2)
2.2.2 软件基本操作 (3)
2.2.3 嵌入式驱动程序基础 (3)
第3章嵌入式系统开发环境的搭建
3.1 建立交叉编译环境 (5)
3.2 配置超级终端 (5)
3.3 配置网络文件系统NFS服务 (6)
第4章嵌入式设备驱动程序开发
4.1编写LED设备驱动程序 (6)
4.2编写LED用户应用程序 (7)
4.3 运行程序 (7)
4.3.1 编写Makefile文件 (7)
4.3.2 烧写程序 (8)
第5章结论
第6章致谢
参考文献
附录A
附录B
第1章绪论
1.1 课程设计目的
近几年,嵌入式系统产品在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化,工业化促进信息化发展的新的国民经济增长点。
在中国,嵌入式软件发展过程中,政府已经充分认识到它的重要作用,并在政策、资金等方面给予大力支持。2004年国家发改委、科技部、商务部联合颁布的《当前优先发展的高技术产业化重点领域指南》,把嵌入式软件产业作为国家发展的一个重要领域。
中国嵌入式软件产业的发展面临着良好的发展环境和机遇,这包括政府的重视与扶植、信息产业与传统产业的融合,中国制造的良好基础,自由软件运动的兴起等等。
基于上述情况,所以选择嵌入式驱动程序开发作为本次课程设计,而它也是嵌入式系统重要组成部分。本次课程设计主要是为了加强Linux系统下编程的知识点的整合和灵活运用,让我们更加熟悉Linux下的编程操作。重点在于熟悉Linux下设备驱动程序开发的流程,了解Redhat9.0操作系统的安装,交叉编译环境的搭建和配置、编译内核。
1.2 课程设计环境
硬件环境为PC机一台,GT2440开发板一套,CPU处理器采用三星S3C2440A 主频400MHZ,内存为64M SDRAM,存储为256M Nand Flash、2M Nor Flash,支持操作系统Linux 2.6.30版本;
软件为Redhat9.0 Linux2.4.20版本操作系统,Vmware5.0虚拟机和Windows系统的超级终端
1.3 课程设计总体要求
完成虚拟机和Redhat9.0的安装,配置网络文件系统NFS,搭建交叉编译环境,完成LED灯的驱动程序和应用程序的开发。
第2章方案设计
2.1系统硬件平台
在GT2440开发板上,系统分别使用了GPB5 、GPB6来控制2个LED灯,要编写一个驱动程序及应用程序来控制GPB5 、GPB6的电平。当我们接入的是高电平驱动的时候,LED 灯没有电流通过,所以LED灯不会点亮;而当我们接入低电平驱动的时候,LED灯导通有电流通过,所以LED灯被点亮,所以我们这里的LED灯是低电平驱动有效点亮。LED灯的电路连接如图所示:
图2.1 LED灯硬件电路图
2.1.1 S3C2440的I/O介绍
通用I/O接口是嵌入式系统中一种非常重要的I/O接口。它具有使用灵活,可配置性好,硬件代价小等优点,在嵌入式系统中广泛应用。
(1) S3C2440包含了130个多功能输入/输出口引脚并且它们为如下显示的九个端口:
端口A(GPA):25位输出端口端口B(GPB):11位输入/输出端口
端口C(GPC):16位输入/输出端口端口D(GPD):16位输入/输出端口
端口E(GPE):16位输入/输出端口端口F(GPF):8位输入/输出端口
端口G(GPG):16位输入/输出端口端口H(GPH):9位输入/输出端口
端口J (GPJ):13位输入/输出端口
(2) 端口控制寄存器说明
端口配置寄存器(GPACON~GPJCON)
在S3C2440中,大部分的引脚是复用的,所以必须对于每个引脚要求定义一个功能,端口配置寄存器定义了每个引脚的功能。
端口数据寄存器(GPADAT~GPJDAT)
如果端口配置成输出端口,数据能够被写到端口数据寄存器的对应位,然后通过管脚输出;如果端口配置成输入端口,能从端口数据寄存器对应的位中读出管脚上的电平。
端口上拉寄存器(GPBUP~GPJUP)
端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止,当对应为0,这个引脚上的上拉寄存器是允许的,当为1时,上拉寄存器是禁止的。[1]
2.2系统软件平台
软件平台使用Linux操作系统自带的Vi文本编辑器。
2.2.1 软件简介
Vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们只要使用的文本编辑工具,足见其生命力之强,而强大的生命力是其强大的功能带来的。
Vi有三种模式,分别是命令行模式、插入模式及低行模式。
命令行模式:在该模式中可以通过上下移动光标进行“删除字符”或“整行删除”灯操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。
插入模式:只有在该模式下,用户才能进行文字编辑和输入,用户可按【Esc】键回到命令行模式。
低行模式:在该模式下,光标位于屏幕的低行。用户可以进行文件保存或退出操