在linux内核中添加驱动 不使用模块化加入的方式

最近一直在搞linux方面的开发   在添加驱动的时候碰到一点点小麻烦 ,就是模块化添加驱动**.ko和直接把驱动编译进内核这两点   其实我感觉还是把驱动直接编译进内核比较方便。当然根据不同的需求需要的方式也不尽相同  
编写驱动的基本格式:

#include

#include

#include  

static int hello_init(void){

         printk("hello world\n");

         return 0;

} 

static void hello_exit(void)

{

         printk("bye hello world\n");

}

module_init(hello_init);

module_exit(hello_exit);

 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("LJL");

Makle 的编写

obj-m := hello.o


KERNELBUILD :=/usr/src/linux-headers-3.2.0-24-generic-pae


default:

       make -C $(KERNELBUILD) M=$(shell pwd) modules

clean:

 

       rm -rf *.o  *.ko *.mod.c .*.cmd .tmp_versions *.order *.symvers

记住不是顶行写的一定要空一格TAB键值 也就是四个字符间隔

编译后生成hello.ko  拷贝到文件系统中insmod hello.ko  /rmmod hello.ko

可以试一下

方法二:直接编译进内核

还是以上边那个模板举例子  ,我要写的是字符设备驱动  然后把程序保存在kernel/driver/char/hello.c 。

然后在Makefile中添加变量以及编译路径

例如我再kernel/driver/char/下面的Makefile中的首行添加如下:

OBJ-$(CONFIG-HELLO) += hello.o

然后在/kernel/driver/char/下边的Kconfig 中添加如下语句:(Kconfig的作用大家肯定知道 不在此缀述。)

config HELLO

bool "HELLO DRV"

现在就可以的回到kernel根目录下make menuconfig -》driver》char》就可以选择了选中后直接编译内核就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值