1.概要
2.代码
1.parameter.c
#include <linux/init.h>
#include <linux/module.h>
static int number;//定义 int 类型变量 number
static char *name;//定义 char 类型变量 name
static int para[8];//定义 int 类型的数组
static char str1[10];//定义 char 类型字符串 str1
static int n_para;//定义 int 类型的用来记录 module_param_array 函数传递数组元素个数的变量 n_para
module_param(number, int, S_IRUGO);//传递 int 类型的参数 number,S_IRUGO 表示权限为可读
module_param(name, charp, S_IRUGO);//传递 char 类型变量 name
module_param_array(para , int , &n_para , S_IRUGO);//传递 int 类型的数组变量 para
module_param_string(str, str1 ,sizeof(str1), S_IRUGO);//传递字符串类型的变量 str1
static int __init parameter_init(void)//驱动入口函数
{
static int i;
printk(KERN_EMERG "%d\n",number);
printk(KERN_EMERG "%s\n",name);
for(i = 0; i < n_para; i++)
{
printk(KERN_EMERG "para[%d] : %d \n", i, para[i]);
}
printk(KERN_EMERG "%s\n",str1);
return 0;
}
static void __exit parameter_exit(void)//驱动出口函数
{
printk(KERN_EMERG "parameter_exit\n");
}
module_init(parameter_init);//注册入口函数
module_exit(parameter_exit);//注册出口函数
MODULE_LICENSE("GPL v2");//同意 GPL 开源协议
MODULE_AUTHOR("topeet");
2. Makefile
export ARCH=arm64#设置平台架构
export CROSS_COMPILE=aarch64-none-linux-gnu-#交叉编译器前缀
obj-m += parameter.o #此处要和你的驱动源文件同名
KDIR :=/home/topeet/Linux/linux_sdk/kernel #这里是你的内核目录
PWD ?= $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules #make 操作
clean:
make -C $(KDIR) M=$(PWD) clean #make clean 操作
3.运行结果
insmod parameter.ko number=100 name="topeet" para=0,1,2,3,4,5,6,7 str="itop"

498

被折叠的 条评论
为什么被折叠?



