You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式Linux中使硬件中断(如DMA)显示在/proc/interrupts的必要步骤

嵌入式Linux下让硬件中断(如DMA)显示在/proc/interrupts的具体步骤

1. 硬件层面确认中断配置

  • 确保目标硬件(如DMA控制器)的中断输出引脚正确连接到CPU的中断控制器(如GIC、NVIC等)。
  • 配置硬件寄存器开启中断触发:以DMA为例,需设置对应通道的中断使能位(如DMA_CHx_INT_EN寄存器),确保DMA完成/出错时能触发中断信号。

2. 内核驱动中注册中断

在驱动代码中完成中断注册,这是中断能被/proc/interrupts识别的核心步骤:

  • 使用devm_request_irq()(推荐,自动管理资源释放)或request_irq()函数注册中断处理逻辑,关键参数说明:
    • 中断号:可通过设备树解析(platform_get_irq())或平台数据获取;
    • 中断处理函数:自定义的中断响应逻辑(如DMA完成后的收尾操作);
    • 触发类型:根据硬件特性设置,如IRQF_TRIGGER_RISING(上升沿触发)、IRQF_TRIGGER_LEVEL_HIGH(高电平触发);
    • 中断名称:此名称会直接显示在/proc/interrupts中,需清晰标识(如"dma-channel-0");
    • 私有数据:传递给中断处理函数的设备上下文。
  • 示例代码片段:
    int irq = platform_get_irq(pdev, 0);
    if (irq < 0) {
        return irq;
    }
    ret = devm_request_irq(&pdev->dev, irq, dma_interrupt_handler, 
                           IRQF_TRIGGER_LEVEL_HIGH, "dma-channel-0", dma_dev);
    if (ret) {
        dev_err(&pdev->dev, "Failed to request IRQ %d\n", irq);
        return ret;
    }
    

3. 设备树(若使用)配置中断信息

如果系统采用设备树管理硬件资源,需在对应节点中添加interrupts属性:

  • 示例DMA控制器节点配置:
    dma-controller@12340000 {
        compatible = "vendor,dma-controller";
        reg = <0x12340000 0x1000>;
        interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; // 中断号、触发类型
        #dma-cells = <1>;
    };
    
  • 内核会自动解析设备树中的中断信息,驱动通过platform_get_irq()即可获取正确的中断号。

4. 确保内核配置项开启

检查内核配置,确保相关子系统和驱动已启用:

  • 基础中断子系统配置:CONFIG_IRQ_SUPPORT、CONFIG_GENERIC_IRQ_CHIP(一般默认开启);
  • 目标硬件驱动配置:如DMA控制器对应的内核选项(如CONFIG_AM335X_DMA、CONFIG_STM32_DMA等,根据SOC厂商选择);
  • 可通过cat .config | grep CONFIG_XXX查看配置状态,或用make menuconfig调整。

5. 加载驱动并验证

  • 编译驱动(若为模块)并加载:insmod dma_driver.ko;
  • 执行cat /proc/interrupts,查看是否存在之前设置的中断名称(如dma-channel-0);
  • 触发一次DMA操作,确认中断计数是否递增,验证中断功能正常。

常见排查点

  • 若中断未显示,先通过dmesg查看驱动注册日志,确认request_irq()是否成功;
  • 检查CPU中断控制器寄存器,确认对应中断未被屏蔽;
  • 回查硬件连接和寄存器配置,确保中断信号能正常触发。

内容的提问来源于stack exchange,提问作者Creator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:09:55