您的位置:首页 > 运维架构 > Linux

linux 驱动分类

2013-11-18 18:06 162 查看

linux 驱动分类

        linux驱动的分类跟Wince不同,wince是分成流驱动和本机驱动两种类型,而linux分为字符设备驱动、网络设备驱动、块设备驱动。

如果要比较这两种系统的驱动类型的话,应该是字符设备驱动跟流驱动类似,本机驱动跟块设备驱动类似。

        今天其实准备写一个简单的驱动来模拟操作一下IO,参考其它代码的时候,一下子就被几个函数给弄混了。

        register_chrdev();platform_driver_register();misc_register();

        大家看明白了没有,它们对应char driver,platform driver,misc driver的注册。(注意这些函数的概念跟字符设备,块设备这些不是同级的概念,它们只是系统提供的驱动注册的一些方式。)

        我在SDK搜了一下上面三个函数,然后稍微归一下类:

        chrdev:scsi,macintosh,isdn\capi,char\pcmcia,\net\wan

        platform:serial,touchscreen,backlight,misc,otg,video,watchdog

        misc:watchdog,macintosh,\mtd\ubi

        总结:根据上面的信息来看,我觉得有些驱动三种方式都可以采用。更细的来说:

platform 机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过 platform device 提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性 ( 这些标准接口是安全的 ) 。所以它的应用场景是适合那些比较独立的,跟CPU关联性强的驱动,如果SPI,serial等。

chrdev 没有platform严格,它比platform少了几个函数,可以合入内核也可以有module的方式从外部加载,方便调试。它的适应场景我觉得都可以,但是以platform为优先原则。

misc 我觉得内部应该跟chrdev是一样的,只是按名字来说是个杂项混合驱动,它的适应场景更应用于一些跟其它驱动相关的设备的驱动,比如说某些用I2C或SPI驱动的设备。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐