首页 > 代码库 > 我的第一个Linux 驱动模块编程实验

我的第一个Linux 驱动模块编程实验

2014.04.28

module 首测

1)环境:Centos release 6.5 (Final)

    kernel: 2.6.32-358.23.2.e16.centos.plus.i686

2)源文件及Makefile

源文件:是一个入门的Hello.c文件,网上到处可以找得到。

Makefile 第一版本内容如下:

 obj-m := hello.o

3)make 时的命令

make -C /lib/modules/$(uname -r)/build  SUBDIRS=$PWD modules

能供产生 hello.ko 文件

4)测试

insmod hello.ko     在虚拟终端没有任何消息

dmesg | tail      可以看到有 printk() 输出的一个 “Hello world”消息

modinfo hello.ko    有模块的相应信息。(注意此命令只能在这个模块文件存在的目录才能使用成功)

rmmod hello.ko    在虚拟终端没有任何消息

dmesg | tail      可以看到由 printk()输出的一个“Module exits...”消息

 

5)改进的 Makefile :

obj-m := hello.o

KERNELDIR =/lib/modules/$(shell uname -r)/build

PWD=$(shell pwd)

default:

  $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:

  $(RM) *.o *.ko *.mod.c *.order *.unsigned

# make end

 

我的总结:

重点在Makefile文件的编写,它需要明确的指出内核的版本及内核文件的路径。

注意在生成 target的command中每个部分的含义 .

参见 The Linux Kernel Module Programming Guide

http://www.tldp.org/LDP/lkmpg/2.6/html/x181.html