关于设备驱动和设备管理,分为四种内核成分
设备类型:在所有unix系统中为了统一普通设备的操作所采用的分类
模块:Linux内核中用于按需加载和卸载目标代码的机制
内核对象:内核数据结构中支持面向对象的简单操作,还支持维护对象之间的父子关系
sysfs:系统中设备树的一个文件系统
块设备
可寻址的,寻址以块为单位,块的大小随设备的不同而不同。块设备通常支持重定位操作,也就是对数据的随机访问
字符设备
不可寻址,仅提供数据的流式访问,就是一个个字符或字节。与块设备不同,应用程序是通过直接访问节点与字符设备交互
网络设备
又是也以以太网设备来称呼,提供了对网络的访问,是通过一个网络适配器和一种特定的协议进行的。他不是通过设备节点来访问,而好似通过套接字API这样的特殊接口来访问
杂项设备
实际上是一个简化的字符设备,对通用基本架构的一种折中
并不是所有的设备驱动都表示物理设备,有些设备是虚拟的仅提供内核访问功能
Linux内核是模块化组成的,他允许内核在运行时动态的向其中插入或删除代码
可装载内核模块(模块): 修改的代码被一并组合在一个单独的二进制镜像中
好处
1 基本内核镜像可以尽可能的小,因为可选的功能和驱动程序可以利用模块形式再提供
2 模块允许我们方便的删除和重新载入代码也方便了调试工作
构建模块的第一步是决定在哪管理模块源代码
内核模块正式成为Linux的一部分
obj-m += ****/
模块被编译后的扩展名是**.ko**
Obj-m:=****.o
编译:
-objs :=-mian.o ****-line.o
模块在内核内
因篇幅问题不能全部显示,请点此查看更多更全内容