Skip to content

Latest commit

 

History

History
69 lines (48 loc) · 1.26 KB

ch1_03-第一个驱动程序.md

File metadata and controls

69 lines (48 loc) · 1.26 KB

做为入门,我们先做一个hello_drv 的驱动程序,完整的了解驱动程序的开发过程。

代码如下,只包含了一个最简单的驱动程序必须的部分。

1 编写 hello_drv.c 文件

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/device.h>

//加载模块
static in hello_drv_init(void)
{
	printk("insmod ok\n");

	return 0;
}

//卸载模块
static void hello_drv_exit(void)
{
	printk("rmmod ok\n");
}

//注册模块入口
module_init(hello_drv_init);
module_exit(hello_drv_exit);

//模块许可声明
MODULE_LICENSE("GPL");

完成了驱动程序的源文件的编写,我们接着编写 Makefile 文件,

2 编写 Makefile 文件

#内核目录
KERN_DIR = /work/system/linux-2.6.22.6

#编译模块
all:
make -C $(KERN_DIR) M=`pwd` modules

# clean
clean:
		make -C $(KERN_DIR) M=`pwd` modules clean
		rm -rf modules.order

#将驱动以模块的形式编译
obj-m	+= hello_drv.o

3 编译并且在嵌入式平台上测试

测试的时候,主要看编译的模块能否加载和卸载成功

insmod hello_drv.ko		//加载模块驱动
rmmod hello_drv.ko		//卸载模块驱动

平台上测试结果如下 :

first_drv