香港驻广州签证:什么是miscdev类驱动?

来源:百度文库 编辑:偶看新闻 时间:2024/07/04 22:24:59
  如果要详细的分驱动的类型,分为miscdev、character、block、net。 这里两天在学习mini2440的时候发现,很多的驱动都是miscdev类,本人学识浅薄,尽然不知道miscdev为何物,经过查证终于知其所以然。 
  1. 什么是miscdev类驱动?答:miscdev类驱动又叫混杂驱动驱动 ,是一个比较原始的东西,在1998年就已经提出来了,在2.0以上的kernel都有支持。可以认为小驱动程序,主要用于简单的硬件驱动或者简单的测试。
  2. 为什么在miscdev类驱动中没有看见主设备号之类的东西?答:miscdev类的驱动,默认的主设备号是10,所以这类驱动,你只需要指定从设备号就可以了,实质上,你也不能指定它的主设备好。

    struct miscdevice {
            int minor;
            const char *name;
            struct file_operations *fops;
            struct miscdevice *next, *prev;
    };


    上边是它的结构,从结构中可以看到,你只需要指定从设备号,struct file_operations 和设备名就可以了
  3. 主要用于什么?
答: 当然用于测试简单的程序和一些简单的I/O外部硬件或设备了,可以节省主设备号。其他就没什么了,所以比如LED、按键、RTC等,都可以用这个小驱动程序写了。http://www.cublog.cn/u3/113927/showart_2257750.html linux设备驱动信息的查看:
/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