linux驱动程序设计实例

linux驱动程序设计实例

ID:18745283

大小:297.00 KB

页数:18页

时间:2018-09-20

linux驱动程序设计实例_第1页
linux驱动程序设计实例_第2页
linux驱动程序设计实例_第3页
linux驱动程序设计实例_第4页
linux驱动程序设计实例_第5页
资源描述:

《linux驱动程序设计实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AT91SAM9G20驱动程序设计开发环境:Vmware+ubuntu10.04硬件平台:AT91SAM9G20Linux版本:linux2.6.27一:led驱动说明:因为设计的开发板上没有led灯,便通过PC0来演示,通过示波器来观察引脚端的电平变化。1.驱动程序:my_led.c#include#include#include#include#include#include

2、ypes.h>#include#defineMY_LED_MAJOR250//定义主设备号#defineLED_ON0#defineLED_OFF1structglobal_dev{structcdevcdev;};//定义设备结构体structglobal_dev*global_devp;//定义一个指向设备结构体的指针staticintmy_led_open(structinode*inode,structfile*filp){filp->private_data=global_devp;return0;}s

3、taticintmy_led_release(structinode*inode,structfile*file){return0;}staticintmy_led_ioctl(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongdata){switch(cmd){caseLED_ON:at91_set_gpio_value(AT91_PIN_PC0,0);//将PC0引脚置低break;caseLED_OFF:at91_set_gpio_value(AT91_PIN

4、_PC0,1);//将PC1引脚置高break;default:printk("novalidcmdinput!");break;}return0;}structfile_operationsmy_led_ctl_ops={.owner=THIS_MODULE,.open=my_led_open,.release=my_led_release,.ioctl=my_led_ioctl,};/*初始化设备结构体*/staticvoidmy_led_setup(structglobal_dev*dev,intindex){interr;i

5、ntdevno=MKDEV(MY_LED_MAJOR,index);cdev_init(&dev->cdev,&my_led_ctl_ops);dev->cdev.owner=THIS_MODULE;dev->cdev.ops=&my_led_ctl_ops;err=cdev_add(&dev->cdev,devno,1);if(err)printk("addmyledsetupfailed!");}staticintmy_led_init(void){intret;dev_tdevno=MKDEV(MY_LED_MAJOR,0);

6、//创建设备号printk("myfirstdriver--led!");at91_set_GPIO_periph(AT91_PIN_PC0,1);at91_set_gpio_output(AT91_PIN_PC0,1);//对PC0引脚的初始化ret=register_chrdev_region(devno,1,"my_led");//申请设备号if(ret<0){printk("my_ledinit_modulefailedwith%d",ret);returnret;}elseprintk("my_ledinit_modu

7、lesuccess!");global_devp=kmalloc(sizeof(structglobal_dev),GFP_KERNEL);//申请设备内存memset(global_devp,0,sizeof(structglobal_dev));my_led_setup(global_devp,0);returnret;}staticvoidmy_led_cleanup(void){cdev_del(&global_devp->cdev);//删除设备kfree(global_devp);//释放内存unregister_chr

8、dev_region(MKDEV(MY_LED_MAJOR,0),1);//释放设备号}MODULE_LICENSE("MYGPL");MODULE_AUTHOR("FANY");module_init(m

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

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

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