帝子降兮隐藏剧情:什么是miscdev类驱动?
来源:百度文库 编辑:中财网 时间:2024/10/08 12:16:55
如果要详细的分驱动的类型,分为miscdev、character、block、net。 这里两天在学习mini2440的时候发现,很多的驱动都是miscdev类,本人学识浅薄,尽然不知道miscdev为何物,经过查证终于知其所以然。
/proc/devices 查看系统支持的字符设备和块设备驱动;
/proc/pci 查看系统的PCI设备;
/proc/ioports 查看设备的IO端口;
/proc/interrupts 查看正在使用的中断号,中断次数;
/proc/net/dev 查看网络硬件设备,包括被down的网卡;
/proc/kallsyms 查看模块符号;
/proc/jitimer 查看定时器;
dmesg 查看系统的启动信息,可以看到系统支持的一些驱动的打印信息;
lspci
lsusb -v
uname -a
ifconfig -a 查看所有网卡
字符设备驱动, GPIO驱动:
一些概念:
dev_t为32位设备号(12+20); scull_dev结构, cdev结构
老注册方法: register_chrdev(major, &name, &fops)
unregister_chrdev(major, &name)
新注册方法: regist_chrdev_region(dev_t, count, &name);
alloc_chrdev_region(&dev, firstminor, count, &name);
major = MAJOR(dev);
cdev_init(&cdev, &fops); cdev. owner=THIS_MODULE; cdev.ops=&fops;
cdev_add(&cdev, devno, 1); cdev_del(&cdev);
unregister_chrdev_region( first, count);
关于中断:
处理器管理设备的方式, 轮询, 中断+DMA;
S3C2410支持56个中断设备, 32个中断号; SRCPND, INTPND, INTMSK 写1清0;
request_irq(irq, &handler, flags, &dev_name, &dev_id); free_irq(irq, &dev_id);
http://linux.chinaunix.net/bbs/thread-1131292-1-1.html
- 什么是miscdev类驱动?答:miscdev类驱动又叫混杂驱动驱动 ,是一个比较原始的东西,在1998年就已经提出来了,在2.0以上的kernel都有支持。可以认为小驱动程序,主要用于简单的硬件驱动或者简单的测试。
- 为什么在miscdev类驱动中没有看见主设备号之类的东西?答:miscdev类的驱动,默认的主设备号是10,所以这类驱动,你只需要指定从设备号就可以了,实质上,你也不能指定它的主设备好。
struct miscdevice {
int minor;
const char *name;
struct file_operations *fops;
struct miscdevice *next, *prev;
};
上边是它的结构,从结构中可以看到,你只需要指定从设备号,struct file_operations 和设备名就可以了 - 主要用于什么?
/proc/devices 查看系统支持的字符设备和块设备驱动;
/proc/pci 查看系统的PCI设备;
/proc/ioports 查看设备的IO端口;
/proc/interrupts 查看正在使用的中断号,中断次数;
/proc/net/dev 查看网络硬件设备,包括被down的网卡;
/proc/kallsyms 查看模块符号;
/proc/jitimer 查看定时器;
dmesg 查看系统的启动信息,可以看到系统支持的一些驱动的打印信息;
lspci
lsusb -v
uname -a
ifconfig -a 查看所有网卡
字符设备驱动, GPIO驱动:
一些概念:
dev_t为32位设备号(12+20); scull_dev结构, cdev结构
老注册方法: register_chrdev(major, &name, &fops)
unregister_chrdev(major, &name)
新注册方法: regist_chrdev_region(dev_t, count, &name);
alloc_chrdev_region(&dev, firstminor, count, &name);
major = MAJOR(dev);
cdev_init(&cdev, &fops); cdev. owner=THIS_MODULE; cdev.ops=&fops;
cdev_add(&cdev, devno, 1); cdev_del(&cdev);
unregister_chrdev_region( first, count);
关于中断:
处理器管理设备的方式, 轮询, 中断+DMA;
S3C2410支持56个中断设备, 32个中断号; SRCPND, INTPND, INTMSK 写1清0;
request_irq(irq, &handler, flags, &dev_name, &dev_id); free_irq(irq, &dev_id);
http://linux.chinaunix.net/bbs/thread-1131292-1-1.html