Linux设备驱动-内核模块介绍

 Linux内核模块,可以在系统运行期间动态扩展系统功能而无须重启系统,更无须为这些新增的功能重新编译一个新的系统内核映像。内核模块的这个特性为内核开发者开发验证新的功能提供了极大的便利。

内核模块的文件格式

以内核模块形式存在的驱动程序,比如 hello.ko,其在文件的数据组织形式上是 ELF(Executable and Linkable Format)格式。具体来说,内核模块是一种普通的可重定位的目标文件。用 file 命令查看 hello.ko 文件,可得到如下输出:

$ file hello.ko
hello.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

ELF 是 Linux 下非常重要的一种文件格式,常见的可执行程序都是以 ELF 的形式存在。

结合 Linux 源代码中定义的 ELF相关数据结构(基于 32 位体系结构),ELF 格式的一个比较详细的结构图:

Linux设备驱动-内核模块介绍_第1张图片

静态 ELF 文件视图总体上可分为三大部分:头部的 ELF header,中间的 Section 和 尾部的 Section Header table。

  • ELF header 部分

大小是 52 字节,位于文件头部。对于驱动模块文件来说,一些比较重要的数据成员在下方进

你可能感兴趣的:(Linux驱动,linux)