buzzer驱动设计项目文档

buzzer驱动设计项目文档

ID:33393317

大小:292.21 KB

页数:22页

时间:2019-02-25

buzzer驱动设计项目文档_第1页
buzzer驱动设计项目文档_第2页
buzzer驱动设计项目文档_第3页
buzzer驱动设计项目文档_第4页
buzzer驱动设计项目文档_第5页
资源描述:

《buzzer驱动设计项目文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于ARM-Linux的BUZZER驱动设计项目设计报告项目名称:基于ARM-Linux的BUZZER驱动设计项目负责人:钱烨项目时间:2012.11.3---2012.11.1722基于ARM-Linux的BUZZER驱动设计目录目录2一.绪论3二.应用技术4三.任务71.目标72.环境73.需求:74.任务分配7四.工作原理8五.总体设计101.处理流程102.各个模块设计103.驱动测试19六.总结2222基于ARM-Linux的BUZZER驱动设计第一章绪论1.1驱动背景Linux设备驱动分类:1.1.1字符设备驱动:字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这

2、样的驱动通常实现open,close,read和write系统调用。1.1.2块设备驱动:在大部分的Unix系统,块设备不能按字节处理数据,只能一次传送一个或多个长度是512字节(或一个更大的2次幂的数)的整块数据。而Linux则允许块设备传送任意数目的字节。因此,块和字符设备的区别仅仅是驱动的与内核的接口不同。1.1.3网络接口驱动:任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),但是它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网络接口负责发送和接收数据报文。2.2嵌入式系统以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本

3、、体积、功耗和应用环境有特殊要求的与用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统(技术角度);嵌入式系统是设计完成复杂功能的硬件和软件,幵使其紧密耦合在一起的计算机系统(系统角度)。22基于ARM-Linux的BUZZER驱动设计第二章应用技术2.1驱动程序使用块设备应用程序字符设备驱动网络接口设备网络设备驱动字符设备文件字符设备协议栈块设备驱动套接字文件系统应用程序Linux用户程序通过设备文件(又名:设备节点)来使用驱动程序操作字符设备和块设备。2.2设备创建字符设备通过字符设备文件来存取。字符设备文件由使用ls-l的输出的第一列的“c”标识。如果使用ls-l命令,

4、会看到在设备文件项中有2个数(由一个逗号分隔)这些数字就是设备文件的主次设备编号。主设备号用来标识与设备文件相连的驱动程序。次编号被驱动程序用来辨别操作的是哪个设备。**主设备号用来反映设备类型****次设备号用来区分同类型的设备**Linux内核如何给设备分配主设备号?可以采用静态申请,动态分配两种方法。2.2.1静态申请22基于ARM-Linux的BUZZER驱动设计根据Documentation/devices.txt,确定一个没有使用的主设备号,使用register_chrdev_region函数注册设备号,intregister_chrdev_region(dev_tfrom,u

5、nsignedcount,constchar*name)。参数:from:希望申请使用的设备号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)注销设备号:voidunregiste

6、r_chrdev_region(dev_tfrom,unsignedcount)。2.3设备Ioctl控制在用户空间,使用ioctl系统调用来控制设备,原型如下:intioctl(intfd,unsignedlongcmd,...)原型中的点表示这是一个可选的参数,存在与否依赖于控制命令(第2个参数)是否涉及到与设备的数据交互。22基于ARM-Linux的BUZZER驱动设计ioctl驱动方法有和用户空间版本不同的原型:int(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongarg)cmd参数从用户空

7、间传下来,可选的参数arg以一个unsignedlong的形式传递,不管它是一个整数或一个指针。如果cmd命令不涉及数据传输,则第3个参数arg的值无任何意义。在编写ioctl代码之前,首先需要定义命令。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内是唯一的。ioctl命令编码被划分为几个位段,include/asm/ioctl.h中定义了这些位字段:类型(幻数),序号,传送方向,参数的大小。内核提供了下列宏

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。