LDD3翻译:第三章 (字符驱动)

突然看到大四的时候试着翻译的一小段ldd草稿, 感觉还不错艾, 嘿嘿。


第三章    字符驱动

这一章我们的任务是写一个完整的字符设备驱动,我们会写一个演示性质的驱动程序,这个程序非常适合用来向大家展示一些简单设备驱动的工作原理。字符设备驱动相对于块设备驱动和网络设备驱动要容易理解的多(后两种我们会在后面的章节中讲到)。我们最终的目的是写一个模块化的字符驱动,但是我们不会在这一章去讨论模块化这一概念的具体细节(这是一个很大的话题)。

这一章里向大家展示的代码片段都是从一个真实的设备驱动里面提取出来的,这个驱动就是scull (Simple Character Utility for Loading Localities)。它将一片内存看做成一个设备,主要是为了让大家不用去安装一个真实的字符设备也能运行这个驱动。在本章后面的内容中我们就直接把它当做一个真实的设备来看待。

scull的一大优点就是它不依赖于具体的硬件,因为它是运行在从内核空间分配的一片内存上的,任何人都可以编译运行scull,并且它可以运行在任何运行着linux的计算机架构上的 (X86、ARM等等),scull没有实际的作用,它存在的唯一目的就是向我们展示内核和字符驱动直接的接口,并且允许我们针对其运行一些测试程序。

scull的设计

要开始写驱动,第一步应该先定义驱动程序能给用户应用程序提供什么能力 (机制)。由于我们的设备是基于内存的,因此我们可以随意的给予他任何能力,可以把它当做一个顺序访问的设备,也可以当做一个随机访问的设备,或者其他类型的设备都可以。

为了使scull成为我们将来要写的真实设备驱动的模板,我们会向大家展示...

你可能感兴趣的:(linux,内核)