Linux驱动概述

一、Linux驱动分类
  Linux设备的驱动分为两种类型:内核模块驱动文件和KO模块驱动文件,如下图。
Linux驱动概述
  内核模块驱动文件,是内核文件(uImage)不可分割的一部分,它们之间是一个整体。在内核启动时(开机时),直接执行内核模块驱动文件,此情况,适应于开机时必须启动的设备,比如Linux系统计算机的液晶屏驱动。
  KO模块驱动文件,是独立的一部分,可单独的加载与卸掉。一般用于开机之后,后续加载运行的设备,比如蓝牙设备,电脑开启之后如需要蓝牙就加载其驱动,不需要就不加载。

二、两种驱动文件的优缺点
1、内核模块驱动文件优点:开机即执行,适用于开机必须启动的设备;
2、KO模块驱动文件优点:A、和内核分离,可单独加载与卸载,灵活度高;B、模块化,易管理;C、减小内核体积。

三、KO模块驱动文件运行步骤
1、内核Image先编译;
2、编写KO驱动代码;
3、编译KO驱动代码;
4、装载uImage文件,内核系统先运行;
5、运行KO驱动文件(KO驱动是运行在内核空间的)。