返回列表 发帖

[站长原创] Linux设备驱动程序开发 - Linux设备驱动类型

[站长原创] Linux设备驱动程序开发 - Linux设备驱动类型

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

嵌入式开发联盟www.mcuos.com

Osboy站长原创

QQ:82475491

Mcuos.com@gmail.com



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类型的设备进行操作。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服