作者:三星anycall | 来源:互联网 | 2023-05-17 12:52
模块参数是用于在加载驱动模块时,指定模块里面的特定变量的具体值.
实现方法:
1). #include
2). 在驱动源码里定义变量
static int num = 0;
3). 声明指定的变量为驱动模块参数
module_param(变量名, 类型, 权限);
4). 加载驱动模块时指定模块参数的具体值:
insmod test.ko 变量名1=值1 变量名2=值2
////////////////////////////////////////////
根据上例改成在加载驱动模块时通过模块参数决定led灯初始时的状态.
test.c
#include
#include
#include
#include
#include
static int on = 1;
module_param(on, int, 0644);
#define LED_GPIO GPIOA(15)
static int __init test_init(void)
{
int ret;
ret = gpio_request(LED_GPIO, "myled");
if (ret <0)
return ret;
gpio_direction_output(LED_GPIO, on);
return 0;
}
static void __exit test_exit(void)
{
gpio_set_value(LED_GPIO, 0);
gpio_free(LED_GPIO);
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
编译成ko文件后,可用modinfo查看到模块参数的信息:
filename: /disk3/h3fs/kernel_codes/01hello/04module_params/test.ko
license: GPL
depends:
vermagic: 3.4.112 SMP preempt mod_unload ARMv7 p2v8
parm: on:int
加载驱动模块时:
insmod test.ko on=1 或者 insmod test.ko on=0