查看: 2041|回复: 1

Linux设备驱动程序开发 - Linux设备驱动类型

[复制链接]
发表于 2016-4-16 14:31:13 | 显示全部楼层 |阅读模式
Osboy观点:本帖子您应该学到的知识点就,什么是字符型设备,块型设备,网络设备,和mtd设备驱动的特点。大家可以根据该帖子提出的观点,baidu,google进行扩展阅读。
     Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。Linux设备驱动架构的不断发展中始终坚持的基本思想就是尽量抽取设备特性的共同点,把最复杂的设备驱动架构程序代码交给Linux的内核和驱动子系统开发人员,而留给Linux的驱动编写者更少的工作并使设备更趋于完美的工作。

Osboy觉得:说白了就是Linux开发人员尽量把一些设备驱动所涉及到的共性包装起来,建立完善的设备驱动架构,而让我们这种驱动开发者只需要写很少的代码就能完成设备驱动的编写,而且我们的确是从Linux的这个思想上得到的益处。比如usb驱动,sd卡驱动,Linux已经根据sd卡,usb协议实现了所有代码,而留给我们的只需要告诉usb,sd卡设备的寄存器的真实地址,和设置很少的clock等针对特定某款芯片所作的寄存器设置。
 Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。
     网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。
Osboy认为:这里有必要阐述下MTD设备驱动,mtd驱动是所有nand,norflash驱动的基础,在linux设备驱动中算是比较出名而且比较容易编译的一类驱动程序,该驱动的特性就是既有块设备驱动的特性,也有字符型设备驱动的特点。比如说我们可以操作块设备节点mtdblock0,也可以操作字符型设备驱动节点mtd0来对mtd类型的设备进行操作
更多资讯可加交流群QQ277686564     QQ2905283896

发表于 2016-5-24 18:18:47 | 显示全部楼层
支持楼主,抢沙发,楼主棒棒哒
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表