Linux驱动

Linux字符设备驱动

模块头文件

Continue reading “Linux字符设备驱动” »

Linux驱动学习笔记4:带参数的模块

Linux的模块在装载到内核时还可以带有参数,按照《Linux设备驱动程序》一书上的说明,在运行的自行编译的Linux内核上进行了操作,把上一次编写的hello模块进行了简单的修改。

Linux内核:2.6.32.35

Linux发行版:CentOS 6.4

gedit hello.c

Continue reading “Linux驱动学习笔记4:带参数的模块” »

Linux驱动学习笔记3:编写第一个Linux模块

Linux内核树创建完成后,就可以编写Linux驱动模块了,编写了一个简单的hello模块,在模块加载到内核或从内核卸载时输出字符串信息。

gedit hello.c

Continue reading “Linux驱动学习笔记3:编写第一个Linux模块” »

Linux驱动学习笔记2:运行已编译的Linux内核(更新Linux内核)

Linux驱动学习笔记1:创建Linux内核树一文中,已经创建了Linux内核树,编译了新版本的Linux内核。由于在已创建的Linux内核树上生成的驱动程序模块或许无法安装在原有的Linux系统内核中,这就需要更新Linux内核。

可以在创建内核树后, 安装新的Linux内核

make install

如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,有时可以忽略。 Continue reading “Linux驱动学习笔记2:运行已编译的Linux内核(更新Linux内核)” »

Linux驱动学习笔记1:创建Linux内核树

昨天看了《Linux设备驱动程序(第3版)》一书,该书提到编译Linux模块需要构建Linux内核树,对此一直摸不到头脑。通过查找资料,现在虽然理解的还不是很深刻,经过自己的实际操作总算是有了一点点了解。

几个月前就在虚拟机上安装Linux操作系统:CentOS 6.4,昨天在看书的时候也不清楚这个系统有没有内核树,到现在才知道是有的,已经不需要重新创建。但是书中说发行版的系统内核通常会打了许多补丁,从而和主线内核存在很大差异,某些情况下,厂商的补丁会修改设备驱动程序使用的内核API,所以学习驱动程序的编写,还是标准内核最好。

首先查看当前系统的内核版本:

uname –r

可以看书系统内核版本为:2.6.32 Continue reading “Linux驱动学习笔记1:创建Linux内核树” »