Linux驱动之建立一个hello模块

发布时间: 2024-08-20
来源: 电子工程世界

目标:在开发板上执行insmod hello.ko能在控制台打印出hello init;接着执行rmmod会在控制台打印出hello exit


建立一个hello模块的步骤如下:


1、建立一个hello.c文件,敲入一下代码


#include

#include


int major;

static int first_drv_init(void)

{

    printk('hello initn');


    return 0;

}


static void first_drv_exit(void)

{

    printk('hello exitn');

}


module_init(first_drv_init);//在insmod后会将first_drv_init调用

module_exit(first_drv_exit); //在rmmod后会将first_drv_exit调用


MODULE_LICENSE('GPL');//GPL协议


2、建立一个Makefile,填入如下代码,其中KERN_DIR为需要装载模块的内核源码路径,此源码路径必须成功编译过内核并且在开发板上跑起来。 


KERN_DIR = /work/system/linux-2.6.22.6


all:

        make -C $(KERN_DIR) M=`pwd` modules //M='pwd'表示当前目录。这句话的意思是利用内核目录下的Makefile规则来编译当前目录下的模块


clean:

        make -C $(KERN_DIR) M=`pwd` modules clean

        rm -rf modules.order


obj-m   +=hello.o//调用内核目录下Makefile编译时需要用到这个参数


3、执行Make后,在目录下会产生hello.ko文件


4、将hello.ko文件拷贝到开发板的文件系统上。执行insmod可以看到有hello init输出,在执行rmmod可以看到有hello exit输出。


5、第一个模块建立成功


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。