SlideShare a Scribd company logo
1 of 21
Download to read offline
Character Device


       张涛
       00648331 北京大学计算机系06级
       2008年11月




                  北京大学微处理器研究开发中心
Contents

 Linux设备管理及设备分类简介
 字符设备及其特点
 字符设备驱动基本特性要求
 从一个具体的字符设备驱动scull来看字符设备
 驱动设计要求
 字符设备驱动设计的一些具体问题简介
 References

                北京大学微处理器研究开发中心
Linux系统中设备管理特点

沿用UNIX系统的设备文件概念,设备与文件
有一致的用户接口
主要设备文件在/dev目录中
分类
 –   字符设备(Character Device)
 –   块设备(Block Device)
 –   * 网络设备(Network Device)


                              北京大学微处理器研究开发中心
Linux设备文件分类

 字符设备(Character Device)
 –   以字节流(byte stream)方式存取,不能随机访问
 –   内核对其无缓冲机制
 块设备(Block Device)
 –   可支持随机存取,以块(block)为单位进行存取
 –   内核提供缓冲机制
 * 网络设备(Network Device)
 –   网络传输的软件抽象接口,以data packet为单位进行存取
 –   一般不以设备文件形式存在,由系统单独统一命名,如eth0


                           北京大学微处理器研究开发中心
设备文件实例

字符设备(Character Device)
 –   字符终端(/dev/tty[x]、/dev/console)
 –   串行接口(/dev/ttyS0)
块设备(Block Device)
 –   各种硬盘、光驱等(/dev/hd[x]、/dev/sd[x]…、/dev/cdrom)
 –   Ram Disk(/dev/ram[x])
网络设备(Network Device)
 –   eth[x]
 –   wlan[x]


                                      北京大学微处理器研究开发中心
字符设备(Character Device)

 支持面向字节流的读写(stream-oriented)
 与普通文件的区别
 –   普通文件:一般都支持向前、向后移动读写位置
 –   字符设备文件:大多不支持向前、向后移动读写位
     置,不过也有少数例外
 其字节流读写特性由字符驱动(char driver)实
 现支持


                     北京大学微处理器研究开发中心
字符设备的特点

结构相对块设备(Block Device)简单很多,无
需考虑内核的缓冲机制对I/O存取过程中产生
的影响
可以用现成的处理普通文件的方法来处理,通
用性强
使用广泛,很多设备均以字符设备文件的形式
工作


                 北京大学微处理器研究开发中心
字符设备驱动(Character Driver)

 字符驱动(Char driver)需至少实现如下系统调
 用(System Call)以满足对字符设备文件的基本
 操作:
 –   open
 –   close
 –   read
 –   write



                   北京大学微处理器研究开发中心
字符设备驱动(Character Driver)

 特点
 –   如同字符设备,相对块设备驱动和网络设备驱动等
     其它驱动来说,结构简单,易于理解
 –   概念适用于大多数简单字符设备驱动
 –   适合于初学及入门
 典型实例
 –   scull (Simple Character Utility for Loading
     Localities)

                                     北京大学微处理器研究开发中心
scull

 一个基于某一内存区域实现字符设备的驱动
 特点
  –   Hardware independent,不依赖于独特的硬件,仅
      仅需要一块内核分配的内存空间
  –   一般仅用来示范内核与字符驱动之间的接口,以及
      提供给用户一个测试的对象,对于现实的硬件没有
      有效的意义
  –   对于学习Linux驱动来说,scull是一个很好的切入
      点


                          北京大学微处理器研究开发中心
从scull看驱动设计

 驱动程序的机制设计——提供用户程序接口
 scull驱动实现的设备
 –   scull0 – scull3 : each consisting of a memory
     area that is both global and persistent
 –   scullpipe0 – scullpipe3 : FIFO devices, work like
     pipes
 –   scullsingle : allow only one process to use at a
     time


                                     北京大学微处理器研究开发中心
从scull看驱动设计

 scull驱动实现的设备
 –   scullpriv : private to each virtual console,
     different memory area assigned
 –   sculluid/scullwuid : can be opened multiple times,
     but only by one user at a time.




                                     北京大学微处理器研究开发中心
设备的Major number 和 Minor number

 Major number : identifies the driver
 associated with the device
 Minor number : used by the kernel to
 determine exactly which device is being
 referred to.
 Linux 内核使用dev_t类型来表示major
 number(12 bits)和minor number(20
 bits)

                              北京大学微处理器研究开发中心
Device Number 的分配和释放

 使用register_chrdev_region函数来获得指定的
     register_chrdev_region
 Device Number
 –   需确定指定的Device Number尚未被占用,否则出错
 使用alloc_chrdev_region函数来从内核获得一个当
    alloc_chrdev_region
 前可用的Device Number
 使用unregister_chrdev_region来释放当前被占用
    unregister_chrdev_region
 的Device Number
 详见LDD 3rd P45


                          北京大学微处理器研究开发中心
涉及的3个内核基本数据结构

file_operations
 –   对于特定文件,提供指向对应的文件操作的函数指
     针等
file
 –   用来表示一个打开的文件,由内核创建并传递给操
     作文件的函数
inode
 –   内核内部用于表示文件的结构

                     北京大学微处理器研究开发中心
字符设备的注册(Registration)与删除
(Removal)

 内核内部使用cdev结构体来表示字符设备,
           cdev
 需包含头文件<linux/cdev.h>
 使用cdev_alloc函数来请求内核分配字符设
    cdev_alloc
 备相应资源,并返回指向新设备的cdev结构
 的指针(也可以使用cdev_init来给自己维护
 的cdev结构分配相应字符设备资源)
 使用cdev_del函数来删除给定的cdev结构指
    cdev_del
 针所代表的字符设备,释放相应资源

                  北京大学微处理器研究开发中心
必须实现的四个基本方法(Method)

前面提到为了使字符设备驱动正常工作,至少
需要提供四个基本的系统调用,以满足最基础
的设备的使用需求
 –   open Method
 –   release/close Method
 –   read Method
 –   write Method



                            北京大学微处理器研究开发中心
open Method

 提供初始化操作,为后面提供设备操作做准备
 需要完成以下工作
 –   检查设备错误
 –   如果设备首次打开,进行设备初始化
 –   更新file_operations结构体指针
 –   分配并更新file结构体中private_data成员中的
     所有数据结构



                       北京大学微处理器研究开发中心
release Method

 执行与open Method相反的操作,释放设备占
 用的相应资源和数据结构
 需要完成的任务
  –   释放所有file结构体的private_data中由open
      Method申请的数据结构资源
  –   如果是最后一个释放操作,则关闭相应的设备




                          北京大学微处理器研究开发中心
read&write Method

 两者执行的操作非常相似,均是在程序代码之
 间复制数据,因此两者的实现也很相似,提供
 接口也大致相同
 特殊的“版本”:readv&writev,提供对一个操
 作对象的结构体集合一次性进行操作。如果没
 有专门提供,可以借用多次调用read&write
 Method来实现


                    北京大学微处理器研究开发中心
References         ——for more details

 Linux Device Drivers 3rd Edition
  –   JONATHAN CORBET, ALESSANDRO RUBINI & GREG
      KROAH-HARTMAN
  –   O’REILLY & 东南大学出版社
 Understanding the Linux Kernel
  –   DANIEL P. BOVET & MARCO CESATI
  –   O’REILLY & 东南大学出版社
 Wikipedia –The Free Encyclopedia
 – http://en.wikipedia.org/


                                    北京大学微处理器研究开发中心

More Related Content

What's hot

入門啟示錄Ch04簡報
入門啟示錄Ch04簡報入門啟示錄Ch04簡報
入門啟示錄Ch04簡報Chiou WeiHao
 
新生說明會_slide
新生說明會_slide新生說明會_slide
新生說明會_slideMu Chun Wang
 
資工所考試密技說明會
資工所考試密技說明會資工所考試密技說明會
資工所考試密技說明會Mu Chun Wang
 
面向对象的分析设计之RUP基础及用例建模
面向对象的分析设计之RUP基础及用例建模面向对象的分析设计之RUP基础及用例建模
面向对象的分析设计之RUP基础及用例建模chuan liang
 
入門啟示錄Ch05簡報
入門啟示錄Ch05簡報入門啟示錄Ch05簡報
入門啟示錄Ch05簡報Chiou WeiHao
 
入門啟示錄Ch08簡報
入門啟示錄Ch08簡報入門啟示錄Ch08簡報
入門啟示錄Ch08簡報Chiou WeiHao
 
Architect Dec By Infoq
Architect  Dec By InfoqArchitect  Dec By Infoq
Architect Dec By Infoqliu qiang
 
入門啟示錄Ch07簡報
入門啟示錄Ch07簡報入門啟示錄Ch07簡報
入門啟示錄Ch07簡報Chiou WeiHao
 
Y450 User Guide V1.0 Sc 147002238
Y450 User Guide V1.0 Sc 147002238Y450 User Guide V1.0 Sc 147002238
Y450 User Guide V1.0 Sc 147002238zcejzr
 
10 Things you should know about Web 2.0
10 Things you should know about Web 2.010 Things you should know about Web 2.0
10 Things you should know about Web 2.0Charles (XXC) Chen
 
入門啟示錄Ch02簡報
入門啟示錄Ch02簡報入門啟示錄Ch02簡報
入門啟示錄Ch02簡報Chiou WeiHao
 
Internet Ued Process
Internet Ued ProcessInternet Ued Process
Internet Ued Processrex song
 
第5章 網際網路 (Update)
第5章 網際網路 (Update)第5章 網際網路 (Update)
第5章 網際網路 (Update)Seng Chi Ao
 
入門啟示錄 Ch03簡報
入門啟示錄 Ch03簡報入門啟示錄 Ch03簡報
入門啟示錄 Ch03簡報Chiou WeiHao
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源paulqi
 
台北非凡101專用
台北非凡101專用台北非凡101專用
台北非凡101專用joycekao
 
Capstone2 final - Smart Shopping Bot
Capstone2 final - Smart Shopping BotCapstone2 final - Smart Shopping Bot
Capstone2 final - Smart Shopping BotChan-Young Han
 

What's hot (20)

入門啟示錄Ch04簡報
入門啟示錄Ch04簡報入門啟示錄Ch04簡報
入門啟示錄Ch04簡報
 
新生說明會_slide
新生說明會_slide新生說明會_slide
新生說明會_slide
 
GOSCON 2007
GOSCON 2007GOSCON 2007
GOSCON 2007
 
資工所考試密技說明會
資工所考試密技說明會資工所考試密技說明會
資工所考試密技說明會
 
面向对象的分析设计之RUP基础及用例建模
面向对象的分析设计之RUP基础及用例建模面向对象的分析设计之RUP基础及用例建模
面向对象的分析设计之RUP基础及用例建模
 
入門啟示錄Ch05簡報
入門啟示錄Ch05簡報入門啟示錄Ch05簡報
入門啟示錄Ch05簡報
 
入門啟示錄Ch08簡報
入門啟示錄Ch08簡報入門啟示錄Ch08簡報
入門啟示錄Ch08簡報
 
Architect Dec By Infoq
Architect  Dec By InfoqArchitect  Dec By Infoq
Architect Dec By Infoq
 
論文
論文論文
論文
 
入門啟示錄Ch07簡報
入門啟示錄Ch07簡報入門啟示錄Ch07簡報
入門啟示錄Ch07簡報
 
Y450 User Guide V1.0 Sc 147002238
Y450 User Guide V1.0 Sc 147002238Y450 User Guide V1.0 Sc 147002238
Y450 User Guide V1.0 Sc 147002238
 
10 Things you should know about Web 2.0
10 Things you should know about Web 2.010 Things you should know about Web 2.0
10 Things you should know about Web 2.0
 
入門啟示錄Ch02簡報
入門啟示錄Ch02簡報入門啟示錄Ch02簡報
入門啟示錄Ch02簡報
 
Internet Ued Process
Internet Ued ProcessInternet Ued Process
Internet Ued Process
 
中国网络审查
中国网络审查中国网络审查
中国网络审查
 
第5章 網際網路 (Update)
第5章 網際網路 (Update)第5章 網際網路 (Update)
第5章 網際網路 (Update)
 
入門啟示錄 Ch03簡報
入門啟示錄 Ch03簡報入門啟示錄 Ch03簡報
入門啟示錄 Ch03簡報
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源
 
台北非凡101專用
台北非凡101專用台北非凡101專用
台北非凡101專用
 
Capstone2 final - Smart Shopping Bot
Capstone2 final - Smart Shopping BotCapstone2 final - Smart Shopping Bot
Capstone2 final - Smart Shopping Bot
 

Viewers also liked

Xianqiao > Chongming Island > Shangai > China PPT
Xianqiao > Chongming Island > Shangai > China PPTXianqiao > Chongming Island > Shangai > China PPT
Xianqiao > Chongming Island > Shangai > China PPTStrategic Design Scenarios
 
This Month in Real Estate - July 2009
This Month in Real Estate - July 2009This Month in Real Estate - July 2009
This Month in Real Estate - July 2009John Reynolds
 
Is A Difference In Scale A Difference In Kind?
Is A Difference In Scale A Difference In Kind?Is A Difference In Scale A Difference In Kind?
Is A Difference In Scale A Difference In Kind?Dan Klyn
 
IxDA Portland - Is It Usable yet?
IxDA Portland - Is It Usable yet?IxDA Portland - Is It Usable yet?
IxDA Portland - Is It Usable yet?Dan Klyn
 
Wet Tropics Powerpoint
Wet Tropics PowerpointWet Tropics Powerpoint
Wet Tropics Powerpointjiba2649
 

Viewers also liked (9)

Game based learning
Game based learningGame based learning
Game based learning
 
Xianqiao > Chongming Island > Shangai > China PPT
Xianqiao > Chongming Island > Shangai > China PPTXianqiao > Chongming Island > Shangai > China PPT
Xianqiao > Chongming Island > Shangai > China PPT
 
Home selling guide
Home selling guideHome selling guide
Home selling guide
 
This Month in Real Estate - July 2009
This Month in Real Estate - July 2009This Month in Real Estate - July 2009
This Month in Real Estate - July 2009
 
NeWu>Wuxi>China PPT
NeWu>Wuxi>China PPTNeWu>Wuxi>China PPT
NeWu>Wuxi>China PPT
 
See 100511 format template large
See 100511 format template largeSee 100511 format template large
See 100511 format template large
 
Is A Difference In Scale A Difference In Kind?
Is A Difference In Scale A Difference In Kind?Is A Difference In Scale A Difference In Kind?
Is A Difference In Scale A Difference In Kind?
 
IxDA Portland - Is It Usable yet?
IxDA Portland - Is It Usable yet?IxDA Portland - Is It Usable yet?
IxDA Portland - Is It Usable yet?
 
Wet Tropics Powerpoint
Wet Tropics PowerpointWet Tropics Powerpoint
Wet Tropics Powerpoint
 

Character device