Linux设备驱动程序学习笔记


Linux设备驱动程序的作用

设备 驱动程序就像一个个的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。 

大多数编程可以分为两个部分:

机制:需要提供什么功能
策略:如何使用这些功能

内核的功能划分:

进程管理,内存管理,文件系统,设备控制,网络功能 

设备和驱动模块

三种类型的设备:

字符设备

字符设备是个能像字节流(类似文件)一样被访问的设备,由字符设备驱动来实现这种特性。字符设备驱动通常至少实现open,close,read,write系统调用。

块设备

一个块设备驱动程序主要通过传输固定大小的数据来访问设备。块设备和字符设备的区别仅仅在于内核管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对用户来讲是透明的。在内核中,和字符取得相比,块设备具有完全不同的接口。

网络接口设备

任何网络事物都经过一个网络接口形成,即一个能够和其它主机交换数据的设备。它可以是个硬件设备,但也可能是个纯软件设备。访问网络接口的方法仍然是给它们分配一个唯一的名字(比如eth0),但这个名字在文件系统中不存在对应的节点。内核和网络设备驱动程序间的通信,完全不同于内核和字符以及块驱动程序之间的通信,内核调用一套和数据包传输相关的函数而不是read、write等。 

知识点:

1.任何从内核中得到的内存,都必须在提供给用户进程或者设备之前清零或者以其它方式初始化,否则就可能发生信息泄露(如数据和密码泄露等)。

2.一个经过恶意修改过的内核可能会允许任何人装载内核,所有,下载内核的地址应该选择正规网站。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9..
  • 14
  • 下一页
【内容导航】
第1页:简介 第2页:构造和运行模块
第3页:字符设备驱动程序 第4页:并发与静态
第5页:高级字符驱动程序操作--ioctl 第6页:高级字符驱动学习--阻塞型I/0
第7页:时间、延迟及延缓操作 第8页:tasklet,工作队列,共享队列
第9页:分配内存 第10页:与硬件通信
第11页:中断处理 第12页:Linux设备模型1
第13页:Linux设备模型2 第14页:Linux设备模型3

相关内容