![](/img/trans.png)
[英]insmod: ERROR: could not insert module module.ko: Invalid parameters
[英]Linux kernel insmod failed with error Invalid parameters
我有一个简单的 kernel 模块并想定义一个 IRQ。 如果我在代码中调用如下function,模块无法插入:
result = request_irq(12,
test_irq,
0,
"testgpio",
NULL);
这是来自 insmod 的错误:
insmod: ERROR: could not insert module gpioc.ko: Invalid parameters
硬件是具有 2 GB 和 Ubuntu 64 位的 RPI 4。
static irqreturn_t test_irq(int irq, void *data)
{
/*interrupt-handling*/
return IRQ_HANDLED;
}
@我试过这个来获取中断号但没有成功:
struct gpio_desc *gpio = NULL;
gpio = gpiod_get(NULL, "SPI_CE0_N", GPIOD_OUT_HIGH);
if (NULL == gpio){
printk(KERN_INFO "GPIO_TEST: invalid GPIO16\n");
return -ENODEV;
}
int n = gpiod_to_irq(gpio);
if (n <= 0){
printk(KERN_INFO "GPIO_TEST: invalid IRQ\n");
return -ENODEV;
}
不清楚使用 function “gpiod_get”。 这里特别是第一个参数!
有谁知道一个工作示例存在于哪里?
显然,根据评论,您从request_irq()收到EINVAL错误。 请求的 IRQ 可能不正确。 对于 GPIO,您可能需要使用gpio_to_irq() function 来获取与给定 GPIO 关联的 IRQ。
GPIO 文档文档提供了 GPIO 编号的引脚。 后者被传递给gpio_to_irq()以获取 IRQ。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.