zhengwenbin12 2013-06-11 11:50 采纳率: 0%
浏览 3653

测试驱动时发生 irq 15: nobody cared 错误

linux 内核版本2.6.10
其中串口中断注册语句如下
if(request_irq(LNXINTNUM(AVALANCHE_UART0_INT), uart_isr, 0, "uart", NULL) != 0)
{
LOG_ERR("request IRQ %d failed.", LNXINTNUM(AVALANCHE_UART0_INT));

return -1;

}
中断处理函数如下图, 只是简单的读取寄存器值,然后丢弃:
static irqreturn_t uart_isr(int isr,void *data, struct pt_regs *reg)
{
int uart_isr_id = p_uart_obj->uart_regs->c_u.int_id;
int uart_line_stat = p_uart_obj->uart_regs->line_stat;
int int_type = (uart_isr_id & 0x0E) >> 1;
int int_pend = uart_isr_id & INT_PEND;
unsigned char ch = p_uart_obj->uart_regs->b_u.rx_buf;

    return 0;

}
当通过uart_isr()函数接收字符达到一定次数后,发生了以下错误
irq 15: nobody cared!
Call Trace:
[] uart_isr+0x68/0xa4 [uart]
[] __report_bad_irq+0x40/0xc0
[] try_to_wake_up+0x1d8/0x1e0
[] note_interrupt+0xdc/0x110
[] __do_IRQ+0x1ec/0x22c
[] do_IRQ+0x68/0x88
[] mipsIRQ+0x128/0x160
[] need_resched+0x40/0x48
[] r4k_wait+0x0/0xc
[] schedule+0x58/0x158
[] cpu_idle+0x7c/0xe8
[] r4k_wait+0x4/0xc
[] rest_init+0x28/0x48
[] printk+0x1c/0x28
[] start_kernel+0x1d0/0x278
[] unknown_bootoption+0x0/0x304

handlers:

Disabling IRQ #15

上百度、谷歌未能找到解决办法, 所以在这里向各位大神求助, 这是我的第一次完整的驱动程序。 先谢谢大家了。

  • 写回答

1条回答 默认 最新

  • luckywang1103 2014-12-30 08:09
    关注

    内核的中断处理函数认为你没有正确的处理中断,
    如果你的中断正常处理好了,应该return IRQ_HANDLED

    评论

报告相同问题?

悬赏问题

  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch