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

问题描述

测试驱动时发生 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

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

解决方案

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

时间: 2024-09-20 18:08:08

测试驱动时发生 irq 15: nobody cared 错误的相关文章

visual studio 2010中创建测试项目时发生错误

问题描述 visual studio 2010中创建测试项目时发生错误 十分感谢! 解决方案 VC++的单元测试?你的VS2010最好打上SP1.我记得VS2010对VC++的Unit Test支持有问题. 解决方案二: 没安装壕吧,修复一下 .

连接数据库时发生"一般性网络错误"的另类解释

错误|连接数据库|网络   连接数据库时发生   "一般性网络错误"   的另类解释  Revision History:Version Date Creator Description 1.0.0.1 2003-11-15 郑昀 草稿Implementation Scope:本文档将说明出现一种不容易想到原因的访问数据库时发生"一般性网络错误",错误报告的来源是ADODB,错误号是"-2147467259,或者0x80004005".   继续

在用vs2010调程序时发生找不到服务器错误,跪求解决!

问题描述 解决方案 解决方案二:数据库登陆失败.....解决方案三:你的连接字符串写的对不解决方案四:要怎么写呢?解决方案五:你数据库连接有问题啊解决方案六:搜一搜:C#连接SQL数据库,代码一大堆找个完整的例子,然后把你的连接字符串相应的改一改,就行了不要从只言片语里猜,然后去修修改改解决方案七:数据库用sa和密码能登陆不,登陆不上的话就是连接字符串写的有问题解决方案八:搜个源代码.然后把他的替换成你的.这是最简单的方法.解决方案九:看用sa账号是否能够登陆数据库,看看密码对不对

安装驱动时出现“数据错误(循环冗余检查)”问题的解决办法

在用驱动人生或者手动安装驱动时,有时会出现"数据错误(循环冗余检查)"的提示,这种情况大多是由于硬盘坏道引起的错误,下面小编告诉大家解决方法. 打开驱动人生--软件--系统工具,找到HD Tune硬盘检测工具,下载安装之后,选择错误扫描,开始对硬盘扫描,如下图,如果扫描过程中出现红色小方块,则被视为硬盘有坏道 解决方法(确认您的电脑符合以上情况) 逻辑损坏(软件及系统原因):右键计算机--管理--磁盘管理--选择卷符(如C盘)右键属性--工具--开始检查,都勾选上,这样对每个盘符进行修

安装驱动时出现数据错误怎么办

在用驱动人生或者手动安装驱动时,有时会出现"数据错误(循环冗余检查)"的提示,安装驱动时出现数据错误怎么办呢? 打开驱动人生--软件--系统工具,找到HD Tune硬盘检测工具,下载安装之后,选择错误扫描,开始对硬盘扫描,如果扫描过程中出现红色小方块,则被视为硬盘有坏道; 解决方法(确认您的电脑符合以上情况) 逻辑损坏(软件及系统原因):右键计算机--管理--磁盘管理--选择卷符(如C盘)右键属性--工具--开始检查,都勾选上,这样对每个盘符进行修复; 物理损坏(硬盘损坏):更换硬盘或

《测试驱动数据库开发》目录—导读

版权声明 测试驱动数据库开发 Authorized translation from the English language edition, entitled Test-Driven Database Development: Unlocking Agility, 9780321784124 by Max Guernsey, III, published by Pearson Education, Inc., publishing as Addison-Wesley, Copyright 2

《测试驱动数据库开发》—第2章2.1节TDD中类的角色

第 2 章 建立数据库的类 测试驱动数据库开发 开始测试驱动数据库时,需要做的第一件事是定义数据库的类,并且不用过多地担心特定的数据库实例.读完本书后,读者将有可能开始从允许任意的手工修改,转变到允许保持任意有意义的数据库实例.为了帮读者达到这个目的,本章将深入讨论什么是类以及类如何能够提供帮助,还将深入探讨在数据库开发中的影响力是如何不同于应用程序开发的影响力的. 在调和了类的本质与在数据库开发中出现的新的影响力之后,本章展现了一个数据库的类的需求,并展示了如何实现该需求.希望能为开发者提供与

《测试驱动数据库开发》——2.1 TDD中类的角色

2.1 TDD中类的角色 测试驱动数据库开发 在测试驱动开发中,一个类的主要作用是提供一种机制,以便许多具有相同行为的对象能够被创建.这一点非常重要,因为测试软件的方式就是通过检查一个单独对象的行为,并据此来预知从该对象的类生成的所有其他实例的行为. 当没有类时,测试仅仅告诉开发者有关某个特定对象的情况.当有了类时,测试会告诉开发者有关对象将如何被创建的情况,并进一步告诉开发者所有其他对象将如何被创建的情况. 2.1.1 可靠的实例化过程 当人们说"我写了一个对象来做X事情"时,事实上

《测试驱动数据库开发》—第2章2.3节数据库的类

2.3 数据库的类测试驱动数据库开发尽管事实上,大多数的时候,数据库就是上面保存那些不被使用的对象内容的"其他地方",在数据库开发中运用上述模式一点也不切合实际.与上述描述最接近的做法,应该是当每次想更新对象的行为时,就从旧数据库中迁移数据到新创建的更新后的对象中.对于许多数据库来说,上述做法可能仍然比许多人现在做的方式要快许多,但是因为还有另一种支持比这还要快的开发过程的做法,因此就将上述做法作为一个可选项而不再继续讨论了. 2.3.1 两条途径:创建或改变在许多系统中,创建某&qu