admin 管理员组

文章数量: 1086019


2024年3月22日发(作者:visual basic是高级语言吗)

ddd

1:

Linux设备驱动开发入门

本文以快捷而简单的方式讲解如何像一个内核开发者那样

开发linux设备驱动

源作者: Xavier Calbet

版权:GNU Free Documentation License

2:

3:

4:

5:

6:

7:

8:

9:

10:

翻译: 顾宏军()

中文版权:创作共用.署名-非商业用途-保持一致

11:

12:

知识准备

要开发Linux设备驱动,需要掌握以下知识:

C编程 需要掌握深入一些的C语言知识,比如,指针的使

用,位处理函数,等。

•微处理器编程 需要理解微机的内部工作原理:存贮器地

址,中断,等。这些内容对一个汇编程序员应该比较熟

悉。

Linux下有好几种不同的设备。为简单起见,本文只涉及以模块

形式加载的字符设备。使用2.6.x的内核。(特别是Debian Sarge

使用的2.6.8内核。)

13:

14:

15:

16:

17:

18:

19:

20:

21:

22:

23:

24:

25:

用户空间和内核空间

当你开发设备驱动时,需要理解“用户空间”和内核空间之间的

区别。

- 1 / 32 -

ddd

26:

27:

28:

29:

30:

31:

32:

33:

34:

35:

36:

37:

•内核空间 :Linux操作系统,特别是它的内核,用一种简单

而有效的方法管理机器的硬件,给用户提供一个简捷而统

一的编程接口。同样的,内核,特别是它的设备驱动程

序,是连接最终用户/程序员和硬件的一坐桥或者说是接

口。任何子程序或者函数只要是内核的一部分(例如:模

块,和设备驱动),那它也就是内核空间的一部分。

用户空间. 最终用户的应用程序,像UNIX的shell或者其它的

GUI的程序(例如,gedit),都是用户空间的一部分。很显然,

这些应用程序需要和系统的硬件进行交互。但是,他们不

是直接进行,而是通过内核支持的函数进行。

它们的关系可以通过下图表示:

38:

39:

40:

图1: 应用程序驻留在用户空间, 模块和设备驱动驻留在内核空间

- 2 / 32 -


本文标签: 内核 设备 空间 需要 驱动