




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安文理学院机械电子工程系课程设计任务书学生姓名张聪聪专业班级09级自动化(1)班学号08013090122指导教师雷俊红职称讲师教研室自动化课程自动化专业课程设计题目基于ARM的通用I/O接口驱动程序设计任务与要求利用ARM实验箱上的资源设计一个LED灯驱动。设计要求1)搭建交叉编译环境2)通过NFS网络文件系统建立共享目录3)LED按照1S的时间间隔亮灭,实现闪烁的效果开始日期20111205完成日期201112142011年12月5日基于ARM的通用I/O接口驱动程序设计摘要目前,基于ARM技术的嵌入式系统几乎已经深入应用到各个领域,是当今32位嵌入式系统应用的主流。ARM在工业控制领域的应用也受到越来越多的关注。随着嵌入式在生活中的应用越来越广泛,可广泛应用于移动设备、网络设备、工控设备、仪器仪表等。LINUX系统本身就是一个优秀的操作系统,再加上他的源代码是开放的,所以就把它作为嵌入式开发的核心原型系统。嵌入式LINUX设备驱动是嵌入式系统中十分重要的部分,我们选择了LED灯的驱动程序开发作为课程设计题目。可以进一步熟悉LINUX操作系统及LINUX的编程,同时也了解LINUX下驱动开发的大体流程。本次课程设计的LED灯的驱动程序开发大致包括两个部分,他们是交叉编译环境的搭建和驱动程序、应用程序的编写。交叉编译工具使用ARMLINUXGCC433,使用NFS网络文件系统构成共享目录完成程序的烧写。主要功能就是在已挂载LED驱动程序的情况下,用应用程序让LED间隔1S亮灭以验证驱动程序是否正常。关键词ARMLINUX操作系统;驱动程序开发;交叉编译;NFS;LED灯目录第1章绪论11课程设计目的112课程设计环境113课程设计总体要求1第2章方案设计21系统硬件平台1211S3C2440的I/O口介绍222系统软件平台2221软件简介2222软件基本操作3223嵌入式驱动程序基础3第3章嵌入式系统开发环境的搭建31建立交叉编译环境532配置超级终端533配置网络文件系统NFS服务6第4章嵌入式设备驱动程序开发41编写LED设备驱动程序642编写LED用户应用程序743运行程序7431编写MAKEFILE文件7432烧写程序8第5章结论第6章致谢参考文献附录A附录B西安文理学院设计报告第1页第1章绪论11课程设计目的近几年,嵌入式系统产品在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化,工业化促进信息化发展的新的国民经济增长点。在中国,嵌入式软件发展过程中,政府已经充分认识到它的重要作用,并在政策、资金等方面给予大力支持。2004年国家发改委、科技部、商务部联合颁布的当前优先发展的高技术产业化重点领域指南,把嵌入式软件产业作为国家发展的一个重要领域。中国嵌入式软件产业的发展面临着良好的发展环境和机遇,这包括政府的重视与扶植、信息产业与传统产业的融合,中国制造的良好基础,自由软件运动的兴起等等。基于上述情况,所以选择嵌入式驱动程序开发作为本次课程设计,而它也是嵌入式系统重要组成部分。本次课程设计主要是为了加强LINUX系统下编程的知识点的整合和灵活运用,让我们更加熟悉LINUX下的编程操作。重点在于熟悉LINUX下设备驱动程序开发的流程,了解REDHAT90操作系统的安装,交叉编译环境的搭建和配置、编译内核。12课程设计环境硬件环境为PC机一台,GT2440开发板一套,CPU处理器采用三星S3C2440A主频400MHZ,内存为64MSDRAM,存储为256MNANDFLASH、2MNORFLASH,支持操作系统LINUX2630版本;软件为REDHAT90LINUX2420版本操作系统,VMWARE50虚拟机和WINDOWS系统的超级终端13课程设计总体要求完成虚拟机和REDHAT90的安装,配置网络文件系统NFS,搭建交叉编译环境,完成LED灯的驱动程序和应用程序的开发。第2章方案设计21系统硬件平台在GT2440开发板上,系统分别使用了GPB5、GPB6来控制2个LED灯,要编写一个驱动程序及应用程序来控制GPB5、GPB6的电平。当我们接入的是高电平驱动的时候,LED灯没有电流通过,所以LED灯不会点亮;而当我们接入低电平驱动的时候,LED灯导通有电流通过,所以LED灯被点亮,所以我们这里的LED灯是低电平驱动有效点亮。LED灯的电路连接如图所示西安文理学院设计报告第2页图21LED灯硬件电路图211S3C2440的I/O介绍通用I/O接口是嵌入式系统中一种非常重要的I/O接口。它具有使用灵活,可配置性好,硬件代价小等优点,在嵌入式系统中广泛应用。1S3C2440包含了130个多功能输入/输出口引脚并且它们为如下显示的九个端口端口AGPA25位输出端口端口BGPB11位输入/输出端口端口CGPC16位输入/输出端口端口DGPD16位输入/输出端口端口EGPE16位输入/输出端口端口FGPF8位输入/输出端口端口GGPG16位输入/输出端口端口HGPH9位输入/输出端口端口JGPJ13位输入/输出端口2端口控制寄存器说明端口配置寄存器GPACONGPJCON在S3C2440中,大部分的引脚是复用的,所以必须对于每个引脚要求定义一个功能,端口配置寄存器定义了每个引脚的功能。端口数据寄存器GPADATGPJDAT如果端口配置成输出端口,数据能够被写到端口数据寄存器的对应位,然后通过管脚输出;如果端口配置成输入端口,能从端口数据寄存器对应的位中读出管脚上的电平。端口上拉寄存器GPBUPGPJUP端口上拉寄存器控制着每个端口组的上拉寄存器的使能或禁止,当对应为0,这个引脚上的上拉寄存器是允许的,当为1时,上拉寄存器是禁止的。122系统软件平台软件平台使用LINUX操作系统自带的VI文本编辑器。221软件简介VI是LINUX系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们只要使用的文本编辑工具,足见其生命力之强,而强大的生命力是其强大的功能带来的。VI有三种模式,分别是命令行模式、插入模式及低行模式。命令行模式在该模式中可以通过上下移动光标进行“删除字符”或“整行删除”灯操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。插入模式只有在该模式下,用户才能进行文字编辑和输入,用户可按【ESC】西安文理学院设计报告第3页键回到命令行模式。低行模式在该模式下,光标位于屏幕的低行。用户可以进行文件保存或退出操作,也可以设置编辑环境。222软件基本操作1进入VI,即在命令行下输入VI文件名。此时进入的是命令模式,光标位于屏幕的上方。2在命令行模式下输入I进入插入模式。可以看出,在屏幕底部显示有“插入”字样表示插入模式,在该模式下可以输入文字信息。3最后按“【ESC】”,则当前模式转入命令行模式,并在低行中输入“WQ”进入低行模式。WQ存盘保存,Q退出VI,Q强制退出等。223嵌入式驱动程序基础1设备驱动程序概述设备文件嵌入式LINUX的一个重要特点就是将所有的设备都当做文件进行处理,所以设备驱动程序也就是设备文件。设备文件分为三类字符型设备文件、块设备文件或网络接口设备文件。字符设备文件通常指不需要缓冲就能够直接读写的设备,它们以字节为单位进行读写。块设备文件通常指仅能以块为单位读写的设备,一般块的大小为512字节的整数倍。网络接口设备文件通常指网络设备访问的接口。设备驱动程序和用户应用程序设备驱动程序可以理解为操作系统的一部分,它的作用就是让操作系统能正确识别和使用设备。对于不同的硬件设备,其对应的设备驱动程序也是不同的。设备驱动程序与用户应用程序是不同的,设备驱动程序是用户应用程序与硬件设备之间的一个中间软件层。设备驱动程序运行在内核空间,而用户应用程序则运行在用户空间。嵌入式操作系统通过系统调用和硬件中断来完成从用户空间到内核空间的控制转移。2设备驱动程序的加载过程设备号嵌入式LINUX系统通过设备号来区分不同设备,设备号分为主设备0255和次设备。一般在/PROC目录下的DEVICES文件中记录了系统中处于活动状态的设备的主设备号。设备进入点对每个设备都要定义一个设备进入点,该设备进入点的名称称为设备名。使用MKNOD命令在文件系统中创建一个设备进入点。命令格式为MKNOD/DEV/设备名TYPEMAJORMINORTYPE为设备类型,C为字符设备;B为块设备。西安文理学院设计报告第4页命令为MKNOD/DEV/LEDSC255O加载设备驱动程序加载设备驱动程序INSMOD设备驱动程序名O命令为INSMODLEDSO查看当前加载了哪些设备驱动程序LSMODL卸载设备驱动程序RMMOD设备驱动程序名O设备驱动程序加载与卸载的工作过程在用户空间通过命令INSMOD向内核空间加载设备驱动程序模块,此时程序的入口点是初始化函数INIT_MODULE(),在该函数中完成设备的注册。完成设备注册加载之后,系统将设备驱动加载到内核中,在用户空间的用户应用程序就可以通过调用驱动程序的功能接口函数对该设备进行操作。设备用完之后,可以再用户空间通过移除已加载的驱动设备命令RMMOD将设备卸载,此时的入口点是CLEANUP_MODULE函数,在该函数中完成设备的卸载。3设备驱动程序的功能接口函数设备驱动程序的注册与释放字符设备的注册函数为DEVFS_REGISTER_CHRDEVDEMO_ID,”DEMO_DRV”,DEMO_ID指设备驱动程序的主设备号DEMO_DRV指设备驱动程序的设备名TEST_CTL_OPS指为驱动程序中所定义的结构体STRUCTFILE_OPERATIONS字符设备的注册函数为DEVFS_UNREGISTER_CHRDEVDEMO_ID,”DEMO_DRV”设备的打开与关闭所需头文件为INCLUDEOPEN函数是设备打开操作的接口RELEASE函数是释放设备的接口设备的读写操作所需头文件为INCLUDEREAD和WRITE函数完成字符设备的读写操作设备的控制操作所需头文件为INCLUDE接口函数IOCAL主要用于对设备进行读写之外的其他操作在用户空间,函数IOCAL的定义为INTIOCALINTFD,INTCMD,;3内核驱动操作GPIO引脚API函数原型VOIDS3C2410_GPIO_CFGPINUNSIGNEDINTPIN,UNSIGNEDINTFUNCTION;作用配置GPIO口引脚功能,既是配置相应的CON位原型UNSIGNEDINTS3C2410_GPIO_GETCFGUNSIGNEDINTPIN;西安文理学院设计报告第5页作用根据引脚获得指定引脚配置的功能值原型VOIDS3C2410_GPIO_PULLUPUNSIGNEDINTPIN,UNSIGNEDINTTO;作用配置相应GPIO口的上拉电阻原型VOIDS3C2410_GPIO_SETPINUNSIGNEDINTPIN,UNSIGNEDINTTO;作用给指定的引脚写入0或1,即是配置相应的DAT位原型UNSIGNEDINTS3C2410_GPIO_GETPINUNSIGNEDINTPIN;作用读取指定引脚的状态返回0或1,即是配置相应的DAT位原型UNSIGNEDINTS3C2410_MODIFY_MISCCRUNSIGNEDINTCLEAR,UNSIGNEDINTCHANGE;作用设置混杂控制寄存器原型INTS3C2410_GPIO_GETIRQUNSIGNEDINTPIN;作用读取中断引脚的状态GPF0GPF7、GPG0GPG7第3章嵌入式系统开发环境的搭建绝大多数的软件开发都是以本地编译方式进行的,即在本机上开发编译、本机上运行的方式。但是,由于开发板上没有足够的资源来运行开发工具和调试工具。因此嵌入式系统软件的开发通常采用交叉编译的方式。所谓交叉编译,就是指在一个硬件平台上生成可以在另一个不同硬件平台上执行的代码。31建立交叉编译环境将ARMLINUXGCC433TARGZ拷贝到目录/OPT下,然后进入该目录,执行解压命令MVARMLINUXGCC433TARGZ/OPTCD/TMPTARXVZFARMLINUXGCC433TARGZC然后再运行如下命令GEDIT/ROOT/BASHRC在打开的文件的末尾加上如下内容EXPORTPATHPATH/OPT/USR/LOCLA/ARM/443/BIN然后保存退出重新登录REDHAT系统,使以上设置生效,在命令行输入ARMLINUXGCCV,会出现ARMLINUXGCC的版本号,这说明交叉编译环境已经安装成功。32配置超级终端超级终端程序通常位于WINDOWS系统的“开始程序附件通讯”中,选择运行该程序,一般会弹出提示窗口,询问你是否将HYPERTERMINAL作为默认的TELNET程序,此时选择“否”。西安文理学院设计报告第6页接下来弹出来的窗口,选择“取消”。此时系统提示“您确定要取消吗”,选择“是”,接着点击提示窗口的“确定”,进入下一步。超级终端会要求你为新的连接取个新的名字,我在配置的时候取的是“TTY”。当你命名完以后,又会跳出一个对话框,选择开发板的串口,我选择的是串口4最后一步,最重要的一步,数据流控制必须选择“无”,另外板子的串口波特率设为115200。当所有的参数都设置好后,超级终端就配置好了。233配置网络文件系统NFS服务在配置NFS服务之前,先使用查看一下LINUX系统在安装的时候是否已经安装了NFS服务,方法如下输入命令SETUP,然后在出现的蓝色窗口中选择SYSTEMSERVICES,进入后,如果看到选项前的中括号有“”,表示已经被选中,如果没有,就表示没选中;现在选中NFS服务,去掉IPTABLES,然后保存退出。接下来运行命令GEDIT/ETC/EXPORTS在打开的NFS服务的配置文件中添加以下内容/HOME/SHARE1921681230RW,SYNC,NO_ROOT_SQUASH其中/HOME/SHARE表示NFS共享目录,它可以作为开发板的根文件系统1921681230是开发板的IP地址,注意IP地址前有空格。(这里的IP地址可以用代替,表示所有的客户机都可以挂载次目录)RW表示挂载次目录的客户机多该目录有读写的权力SYNC数据同步写入内存和硬盘,也可以使用ASYNC,此时数据会先暂存于内存中,而不立即写入硬盘NO_ROOT_SQUASH表示允许挂载次目录的客户机有该主机的ROOT身份然后保存退出。最后使用/ETC/INITD/NFSSTOP和/ETC/INITD/PORTMAPSTOP命令停止NFS服务和端口监听服务,再用/ETC/INITD/NFSSTART和/ETC/INITD/PORTMAPSTART命令重新启动NFS服务和端口监听服务使之配置生效。第4章嵌入式设备驱动程序开发41编写LED设备驱动程序一个设备驱动程序模块的基本框架如下INCLUDE/驱动程序所必需的包含文件OPENREAD西安文理学院设计报告第7页WRITESTRUCTFILE_OPERATIONINTINIT_MODULEVOID/驱动程序注册语句INTCLEANUP_MODULEVOID/释放设备资源语句MODULE_INITINIT_MODULE/加载驱动的入口点MODULE_EXITCLEANUP_MODULE/卸载设备驱动的入口点程序中部分语句解释STATICUNSIGNEDLONGLED_TABLES3C2410_GPB5,/建立数组,为两个LED编号S3C2410_GPB6,/STATICINTGT2440_LEDS_IOCTLSTRUCTINODEINODE,STRUCTFILEFILE,UNSIGNEDINTCMD,UNSIGNEDLONGARG/字符设备的通用控制函数,改变IO口的功能S3C2410_GPIO_SETPINLED_TABLEARG,0/设置相应的IO口为0S3C2410_GPIO_CFGPINLED_TABLEI,LED_CFG_TABLEI/配置相应管脚的功能S3C2410_GPIO_SETPINLED_TABLEI,0/配置相应管脚的数据位即高电平或低电平源程序见附录A42编写LED用户应用程序在用户应用程序中,其核心语句为接口函数IOCAL的参数在0,1之间交替取值,使得GPIO的输出电平高低变化,从而使发光二极管LED安装一定的时间间隔亮灭,实现闪烁的效果。程序中部分语句解释当LED_OFF代表数值0,LED_ON代表数值1时IOCTLFD,ON,LED_OFF/使得相应的管脚输出低电平点亮LEDSLEEP1/休眠1SIOCTLFD,ON,LED_ON/使得相应的管脚输出高电平熄灭LEDSLEEP1/休眠1SIFARGC2|SSCANFARGV1,“D“,/任一版本的GNU公共许可STATICUNSIGNEDLONGLED_TABLE西安文理学院设计报告第11页S3C2410_GPB5,S3C2410_GPB6,/建立数组,为两个LED编号STATICUNSIGNEDINTLED_CFG_TABLES3C2410_GPB5_OUTP,S3C2410_GPB6_OUTP,/分别定义每个LED的IO模式为基本的输出在“REGSGPIOH”中STATICINTGT2440_LEDS_IOCTLSTRUCTINODEINODE,STRUCTFILEFILE,UNSIGNEDINTCMD,UNSIGNEDLONGARG/字符设备的通用控制函数,改变IO口的功能IFARG2/ARG接受LED编号RETURNEINVAL/若大于2参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44851.12-2025道路车辆液化天然气(LNG)燃气系统部件第12部分:铜及其合金管
- GB/T 42125.13-2025测量、控制和实验室用电气设备的安全要求第13部分:实验室用热原子化和离子化的原子光谱仪的特殊要求
- 应急安全培训证课件
- 应急安全培训活动课件
- 应急安全培训企业培训课件
- 2024职称计算机考前冲刺试卷附参考答案详解【培优A卷】
- 秋季腹泻患儿辅食调整方案与喂养指导
- 非开挖施工合同(标准版)
- 建筑商合同(标准版)
- 租用香菇大棚合同(标准版)
- 虹口区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
- 未婚生子小孩抚养协议书
- 测量安全培训实施要点
- 认识机械设计与制造专业
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
- 2025年环卫所考试题及答案
- 保温车租赁合同6篇
- 2025年大学生信息素养大赛(校赛)培训考试题库(附答案)
- 2025外墙涂料喷涂机器人施工工艺
- DB11-T 2136-2023 婴幼儿托育机构服务规范
- 冠心病病例分享
评论
0/150
提交评论