Linux之hello驱动编写

## CentOS下搭建编译驱动的环境

S1、yum install kernel  和 yum install kernel-devel

S2、修改软连接

         /lib/modules/$(uname -a)/build 指向的软连接 

        查看默认的ll build指向的软连接,如果不正确,编译会报错,如下:

        make: *** /lib/modules/2.6.32-431.29.2.el6.x86_64/build: No such file or directory.  Stop.

S3、执行S1步骤之后,在/usr/src/kernels目录之下将生成对应的安装包,然后让S2中build目录指向该目录,如下

         ln  -s  /usr/src/kernels/2.6.32-573.8.1.el6.centos.plus.x86_64   /lib/modules/2.6.32-431.29.2.el6.x86_64/build


## hello_driver.c

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

static int __init hello_init(void)
{
    printk(KERN_ALERT "hello driver init!\n");
    return 0;
}

static void __exit hello_exit(void)
{
    printk(KERN_ALERT "hello driver exit\n");
}

module_init(hello_init);
module_exit(hello_exit);

## Makefile

ifneq ($(KERNELRELEASE),)
	obj-m :=hello_driver.o
else
	KERNELDIR ?=/lib/modules/$(shell uname -r)/build

PWD       := $(shell pwd)
modules:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

clean:
    rm -rf *.o *~ .depend .* .


## printk的权限定义(1-7输出信息到 /var/log/message,0输出信息到终端)

linux/kernel.h
#define KERN_EMERG     "<0>"
#define KERN_ALERT    "<1>"
#define KERN_CRIT      "<2>"
#define KERN_ERR       "<3>"
#define KERN_WARNING   "<4>"
#define KERN_NOTICE    "<5>"
#define KERN_INFO      "<6>"
#define KERN_DEBUG     "<7>"

## 驱动ko使用

insmod hello_driver.ko
rmmod hello_driver.ko
lsmod | grep hello_driver   //检查

## 驱动测试


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值