设备驱动-模块参数-ubuntu12.04

本文介绍如何在Ubuntu 12.04环境下,使用C语言和Linux内核API实现并安装一个带有参数的驱动模块。通过创建特定文件夹、编写驱动源文件和Makefile,最终实现模块的初始化、退出、参数设置与读取功能。

前一篇博文讲解了ubuntu12.04下实现第一个设备驱动模块。这一次来实现以下带有参数的驱动模块。

操作过程在root权限下!

---------------------------------------------------------------------------------

我再桌面上面建立我文件夹,路径为:/home/gavin-guo/Desktop/workdir/driver/driverparam

这个里面有两个文件:driverparam.cMakefile

它们的内容为:

driverparam.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");

static char *namestr = "word";
static int age = 4;

static int driverparam_init(void)
{
      printk(KERN_ALERT “name:%s\n",namestr);
      printk(KERN_ALERT "age:%d\n",age);
      return 0;
}

static void driverparam_exit(void)
{
      printk(KERN_ALERT “Goodbye,driverparam”);
}

module_init(driverparam_init);
module_exit(driverparam_exit);
module_param(age,int,S_IRUGO);
module_param(namestr,charp,S_IRGO);
1.include是引入的头文件

2.MODULE_LICENSE表示该模块带有的自由许可证。

3.namestr,age是定义的参数。定义的参数都应该给一个缺省值,insmod只在用户明确告诉它的时候,才改变它的值。

4.KERN_ALERT代表信息的级别的权限。

5.%s,%d代码占位符。

6.module_param,在insmod可以修改模块参数前,模块必须使它们可用,参数用module_param宏定义来声明,使用了三个参数:变量名,类型,权限掩码。至于最后一个权限掩码,是用来辅助的sysfs入口。S_IRUGO表示参数可以被所有人读取,S_IRUGO|S_IWUSR表示允许root来改变参数。至于参数的类型,有很多种。

Makefile

obj-m := driverparam.o
KERNELDIR := $(shell uname -r)
PWD := $(shell pwd)
modules:
这个是一个tab符号$(MAKE) -C /lib/modules/$(KERNELDIR)/build M=$(PWD) modules
modules_install:
这个是一个tab符号$(MAKE) -C /lib/modules/$(KERNELDIR)/build M=$(PWD) modules_install

脚本注释请参考: HelloWorld

----------------------------------------------------------------------------

ok,脚本写完了,我们在项目的根目录进行编译:make

成功之后,会在项目中生成下面的文件:



接下来,我们进行安装和测试输出:


可以看到在,没有明确告诉内核参数的情况下,它使用的是默认值,当我们给出参数的时候,就是显示我们指定的值。

我们在sys/modules下面可以看到driverparam文件夹,也就是我们的模块,在其中可以有一个paramters文件夹,里面有我们的参数文件。


经过上一次的折腾,这一次就顺利很多了,基本没有什么问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值