资源描述:
《蜂鸣器驱动设计项目文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于ARM-Linux的BUZZER驱动设计项目设计报告项目名称:基于ARM-Linux的BUZZER驱动设计项目负责人:姚雷项目时间:2012.12.3---2012.12.717基于ARM-Linux的BUZZER驱动设计目录第一章绪论21.1驱动背景21.1.1字符设备驱动:31.1.2块设备驱动:31.1.3网络接口驱动:31.2嵌入式系统3第二章驱动应用技术42.1驱动程序使用42.2设备创建42.2.1静态申请42.2.2动态申请52.3设备Ioctl控制5第三章项目任务及目标实现61.目标62.环境63.项目需求6第四章蜂鸣器工作原理6第五章总体设计7
2、1.处理流程72各模块设计82.1打开设备模块82.2关闭设备模块82.3开启蜂鸣器并设置蜂鸣器频率92.4关闭蜂鸣器102.5ioctl控制模块112.6重要数据结构模块122.7设备注册模块132.8设备注销模块143.驱动测试14第六章项目总结与体会16第七章参考文献1617基于ARM-Linux的BUZZER驱动设计第一章绪论1.1驱动背景Linux设备驱动分类:1.1.1字符设备驱动:字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open,close,read和write系统调用。1.1.2块设备驱动:在大部分的Unix系
3、统,块设备不能按字节处理数据,只能一次传送一个或多个长度是512字节(或一个更大的2次幂的数)的整块数据。而Linux则允许块设备传送任意数目的字节。因此,块和字符设备的区别仅仅是驱动的与内核的接口不同。1.1.3网络接口驱动:任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),但是它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网络接口负责发送和接收数据报文。1.2嵌入式系统以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的与用计算机系统。是将应用程序、操作系统和计算机硬件集
4、成在一起的系统(技术角度);嵌入式系统是设计完成复杂功能的硬件和软件,幵使其紧密耦合在一起的计算机系统(系统角度)。17基于ARM-Linux的BUZZER驱动设计第二章驱动应用技术2.1驱动程序使用块设备应用程序字符设备驱动网络接口设备网络设备驱动字符设备文件字符设备协议栈块设备驱动套接字文件系统应用程序Linux用户程序通过设备文件(又名:设备节点)来使用驱动程序操作字符设备和块设备。2.2设备创建字符设备通过字符设备文件来存取。字符设备文件由使用ls-l的输出的第一列的“c”标识。如果使用ls-l命令,会看到在设备文件项中有2个数(由一个逗号分隔)这些数字就是
5、设备文件的主次设备编号。主设备号用来标识与设备文件相连的驱动程序。次编号被驱动程序用来辨别操作的是哪个设备。**主设备号用来反映设备类型****次设备号用来区分同类型的设备**Linux内核如何给设备分配主设备号?可以采用静态申请,动态分配两种方法。2.2.1静态申请根据Documentation/devices.txt,确定一个没有使用的主设备号,使用register_chrdev_region函数注册设备号,intregister_chrdev_region(dev_tfrom,unsignedcount,constchar*name)。参数:from:希望申请
6、使用的设备号17基于ARM-Linux的BUZZER驱动设计count:希望申请使用设备号数目name:设备名(体现在/proc/devices)2.2.2动态申请使用alloc_chrdev_region分配设备号,intalloc_chrdev_region(dev_t*dev,unsignedbaseminor,unsignedcount,constchar*name)。参数:dev:分配到的设备号baseminor:起始次设备号count:需要分配的设备号数目name:设备名(体现在/proc/devices)注销设备号:voidunregister_chr
7、dev_region(dev_tfrom,unsignedcount)。2.3设备Ioctl控制在用户空间,使用ioctl系统调用来控制设备,原型如下:intioctl(intfd,unsignedlongcmd,...)原型中的点表示这是一个可选的参数,存在与否依赖于控制命令(第2个参数)是否涉及到与设备的数据交互。ioctl驱动方法有和用户空间版本不同的原型:int(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongarg)cmd参数从用户空间传下来,可选的参数arg以一