蜂鸣器驱动程序设计

上传人:gao****ang 文档编号:145849159 上传时间:2022-08-30 格式:DOC 页数:29 大小:576.50KB
收藏 版权申诉 举报 下载
蜂鸣器驱动程序设计_第1页
第1页 / 共29页
蜂鸣器驱动程序设计_第2页
第2页 / 共29页
蜂鸣器驱动程序设计_第3页
第3页 / 共29页
资源描述:

《蜂鸣器驱动程序设计》由会员分享,可在线阅读,更多相关《蜂鸣器驱动程序设计(29页珍藏版)》请在装配图网上搜索。

1、好教育赢未来易嵌教育南京分中心南京工程学院嵌入式系统开发技术课程设计专业:计算机科学与技术(嵌入式)班 级:计算机091学号:202090121姓名:徐大权设计题目:蜂鸣器驱动程序设计2012年12月上海凡狄信息技术有限公司垂询热线:4006-797-898Eetek好教育赢未另工绪论31.1概要31.2设计内容42开发环境的搭42.1Redhat 的安装42.2 安装 arm-linux-gcc 交叉编译器92.3 安装及编译 linux-2.6.29-mini2440-20090708 内核93字符设备驱动相关知 93.1模块机制93.2字符设备开发基本步骤103.3主设备号和次设备号11

2、3.4实现字符驱动程序124.蜂鸣器原理14.1蜂鸣器的种类和工作原理144.2开发板上蜂鸣器原理图分析154.3GPB0 参数155总体设计165.1设计思路165.2设计步骤16&驱动及测试程1761beepc1762beep_tsetc21227运行结果及截图综合设计总结与思考25上海凡狄信息技术有限公司垂询热线:4006-797-8981绪论1.1概要linux驱动在本质上就是一种软件程序,上层软件可以在不用了 解硬件特性的情况下,通过驱动提供的接口,和计算机硬件进行通系统调用是内核和应用程序之间的接口,而驱动程序是内核和硬 件之间的接口,也就是内核和硬件之间的桥梁。它为应用程序屏蔽了

3、 硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应 用程序可以象操作普通文件一样对硬件设备进行操作。linux驱动程序是内核的一部分,管理着系统中的设备控制器和 相应的设备。它主要完成这么几个功能:对设备初始化和释放;传送 数据到硬件和从硬件读取数据;检测和处理设备出现的错误。一般来说,一个驱动可以管理一种类型的设备。例如不同的U 盘都属于mass storage设备,我们不需要为每一个U盘编写驱动, 而只需要一个驱动就可以管理所有这些mass storage设备。为方便我们加入各种驱动来支持不同的硬件,内核抽象出了很多 层次结构,这些层次结构是linux设备驱动的上层。它们抽象出

4、各种 的驱动接口,驱动只需要填写相应的回调函数,就能很容易把新的驱 动添加到内核。一般来说,linux驱动可以分为三类,就是块设备驱动,字符 设备驱动和网络设备驱动。块设备的读写都有缓存来支持,并且块设 备必须能够随机存取。块设备驱动主要用于磁盘驱动器。而字符设备的I/O操作没有通过缓存。字符设备操作以字节为 基础,但不是说一次只能执行一个字节操作。例如对于字符设备我们 可以通过mmap 一次进行大量数据交换。字符设备实现比较简单和灵 活。女了教育赢未來易嵌教育南京分中心1.2设计内容本次设计是简单的字符设备驱动设计,基于mini2440的蜂鸣器 的驱动设计。2开发环境的搭建21Redhat的

5、安装创建一个虚拟机:点击菜单栏File-New-Virtual machine。点击下I H一步。选择Typical选项。New Virtual Machire WizardG u e st Ope r a tin g System InstlhtkinA virtual machine is like 白 physi匚oomputer; it needs an operating system. How will you instalI the guest operating system?Install from:O Installer disc:DVD RW 驱动器GJInstaller

6、 disc image file (sc):Browse.F:360Downloadsedhat Linux 9.Ohrike-i386-discS.i:a I will install th亡 operating systEm later.Th亡 virtual machine vkill be 亡mt亡d witii 曰 blank, hard disk.Help BackNext ACancelNew Virtual Machine WizardSelect a Guest Operating EytEmiWhich operating system will b已 installed

7、on this virtual machine?Guest operating systemMicrosoft Windawso LinuxNovell NetWareSun SolarisVMware ESX上海凡狄信息l技术有限公司CanedJ询热线:4006-797-898Otiier选择 Linux 下的 Red Hat Linux 填写虚拟机的命名和存储地址。New Virtual Machine WizardHame the Virtual MachineWhat nmm亡 would you like to use for this virtual machine?Virtual

8、 machine name:Red Halt LinuxLocation:C: UsersV)arkAngelV)acLimentsVirtijal MadninesVed Hat Linux Browse.The default lacstion tan be changed 日t Edit Preferences.Cancel好教育赢未来New Virtual Machine WizardSpecify Disk CapacityHow large do you want tliis disk to be?The virtual machines hard disk is stored a

9、s one or more files on tiie hast 匚omputers physical disk. Tliese file(s) start small and become larger as you add appliestianSj filesT and to your virtual machine.Maximum disk size (GE!):Recammend亡d size far Red Hat Linux: 8 GBa Store virtual disk as a single fileSplit virtual disk into multiple fil

10、esSplitting the disk makes it easier to move the virtual machine to anotiier computer but reduce performance with very large disks.曲 Pocket ACE size calculatorHelp编写用户层测试程序编译用户层测试程序,生成可执行程序beep_test将生成的.ko模块和应用层测试程序beep_test下载到目标板用insmod装载模块创建设备节点mknod /dev/beep c 253 0 运行用户层测试程序beep_test#./beep_tes

11、t如果你的beep_test的属性不是可执行的,可以用chmod 777 beep_test将其设置成可执行 程序。6驱动及测试程序6.1 beep c#include#include#include#include#include#include#include#include#include#include#include#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include #i

12、nclude #include #include #include #include #include #include #include #include #include #include #define BEEP_MAJOR 201#define BEEP_START_CMD 0x0#define BEEP_STOP_CMD 0x1 static struct cdev BeepDevs;static int beep_open(struct inode *inode,struct file *filp)return 0;static int beep_relesae(struct in

13、ode *inode,struct file *filp)return 0;static void beep_stop(void)s3c2410_gpio_cfgpin(S3C2410_GPB(0),S3C2410_GPIO_OUTPUT); s3c2410_gpio_setpin(S3C2410_GPB(0),0);printk(stopn);static void beep_start(void)s3c2410_gpio_cfgpin(S3C2410_GPB(0),S3C2410_GPIO_OUTPUT); s3c2410_gpio_setpin(S3C2410_GPB(0),l);pri

14、ntk(startn);static int beep_ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg)switch(cmd)caseCMD:printk(beep_stratn);beep_start();break;caseMD:printk(beep_stopn);beep_stop();break;default:printk(defaultn);break;return 0;Eetek0好教育赢未来static struct file_operations beep_rema

15、p_ops=.owner = THIS_MODULE, .open =beep_open, .release = beep_relesae, .ioctl = beep_ioctl,;static void beep_setup_cdev(struct cdev *dev, int minor,struct file_operations *fops)int err,devno = MKDEV(beep_major,minor);cdev_init(dev,fops);dev-owner = THIS_MODULE; dev-ops = fops;err = cdev_add(dev,devn

16、o,l);if(err)printk(error %d adding beep %d n,err,minor); static int _init beep_init(void)int result;dev_t dev=MKDEV(beep_major,0);if(beep_major)result= register_chrdev_region(dev,l,beep); elseresult=alloc_chrdev_region (&dev,0,l,beep);beep_major=MAJOR(dev);if(result0)好教育赢未来printk(beep: unable to get

17、 major %d n,beep_major); return result;if(beep_major=0)beep_major=result;beep_setup_cdev (&BeepDevs,0, &beep_remap_ops); printk(beep devices installed,with major %d,beep_major); return 0;static void _exit beep_exit()cdev_del (& BeepDevs); unregister_chrdev_region(MKDEV(beep_major,O),l); printk(beep

18、device uninstalledn);MODULE_AUTHOR(xdq); MODULE_LICENSE(GPL);module_init(beep_init); module_exit(beep_exit);6. 2beep_tset.c#include#include#include#include #includeint main()好教育赢未來易嵌教育南京分中心int dev_fd;char c; dev_fd=open(/dev/beep,O_WRONLYIO_NONBLOCK); if(dev_fd = -1)printf(con not flien); exit(0);io

19、ctl(dev_fd,0x0,0);getchar();getchar();ioctl(dev_fd,0xl,0);getchar();getchar();close(dev_fd);return 0;7运行结果及截图传输beep.ko, ls命令查看文件。Eetek子教育赢未来传输beep_test可执行文件。使用./beep_test命令运行测试程序 beep_stat,蜂鸣器响了,按下键盘一键,beep_stop,蜂鸣器停止上海凡狄信息技术有限公司垂询热线:4006-797-898第24页综合设计总结与思考这是一次在易嵌的培训实习,我选择了做嵌入式驱动设计。虽然 自己的基础有点薄弱,但我

20、相信努力认真就会有成功。做嵌入式驱动设计需要学习的知识比较的多。首先需要安装一个 编译环境,我在电脑上安装了 linux系统,进行之后的代码编译。起 初,经过老师的一些讲解,首先熟悉做该项目需要知道和掌握的知 识,深入起来觉得还是蛮难的。因为自己的编程有点薄弱,所以在一 开始的操作中,会有一点费时间,经过老师和同学们的帮助下,我也 逐渐熟练起来了。做驱动需要掌握几个内核函数和几个模块函数,把 这几个联系起来一起运用到所编的代码中,就实现了。在这次实习中,发现学校里学习的书面知识是很重要的基础知 识,需要掌握、巩固、强化,将所学知识融汇到实践操作中,才是自 己真正的突破。实习中,学到了很多,提高了自己只是掌握,技能运 用,实践操作,各方各面都获益不浅。教师评阅考勤情况设计态度设计完成情况实验报告优良中差优良中差优良中差优良中差成绩:上海凡狄信息技术有限公司垂询热线:4006-797-898第25页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!