首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核insmod失败,出现错误:参数无效

Linux内核insmod失败,出现错误:参数无效
EN

Stack Overflow用户
提问于 2020-12-09 14:51:36
回答 1查看 167关注 0票数 1

我有一个简单的内核模块,并想定义一个IRQ。如果我在代码中调用以下函数,则无法插入模块:

代码语言:javascript
复制
   result = request_irq(12,     
                        test_irq,  
                        0,   
                        "testgpio", 
                        NULL); 

这是来自insmod的错误:

代码语言:javascript
复制
insmod: ERROR: could not insert module gpioc.ko: Invalid parameters

硬件是2 GB的RPI 4和64位的Ubuntu。

代码语言:javascript
复制
static irqreturn_t test_irq(int irq, void *data)
{
    /*interrupt-handling*/

    return IRQ_HANDLED;
}

@我尝试过获取irq编号,但没有成功:

代码语言:javascript
复制
  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;
   }

函数"gpiod_get“的用法不明确。这里特别是第一个参数!

有没有人知道工作示例在哪里?

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 16:46:17

根据注释,显然你从request_irq()得到了EINVAL错误。请求的IRQ可能不正确。对于GPIO,您可能需要使用函数来获取与给定GPIO关联的IRQ。

GPIO documentation文档提供了GPIO号的引脚。后者被传递给gpio_to_irq()以获取IRQ。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65211944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档