免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2796 | 回复: 9
打印 上一主题 下一主题

用过freescale imx31usb 开发的请救救急吧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-03 11:00 |只看该作者 |倒序浏览
我现在用的所freescale的imx31开发板,在linux环境下的,就用原来自带的zImage 和 modules,可是却发现了下列问题,kenerl是可以正常启动的,只要一挂载usb驱动就提示:
EXPIO: Spurious interrupt 0x0,这么一个错误,那个大虾来给指点一下。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2008-11-03 11:16 |只看该作者
原帖由 ywfssl 于 2008-11-3 11:00 发表
我现在用的所freescale的imx31开发板,在linux环境下的,就用原来自带的zImage 和 modules,可是却发现了下列问题,kenerl是可以正常启动的,只要一挂载usb驱动就提示:
EXPIO: Spurious interrupt 0x0,这么一 ...



我建议你还是重新编译一下,因为这个自带的是否把usb驱动加进去了,是不能确定的。

论坛徽章:
0
3 [报告]
发表于 2008-11-03 13:02 |只看该作者
我也自己重新编译过的,作了10个版本的样子,还是同样的问题,不知道是驱动代码有问题还是我的什么地方要进行特别的设置。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2008-11-03 13:06 |只看该作者
建议你先查一下EXPIO: Spurious interrupt 0x0是在什么情况下打印出来的;
系统启动后,你lsmod查看一下是否有usb驱动的模块。

论坛徽章:
0
5 [报告]
发表于 2008-11-03 13:58 |只看该作者
我在代码里查过了,是在系统相关的部分里,在arch目录下的,这个出错信息是在一个判断语句里的。 我看到的意思是判断两个寄存器的值都为零的时候,就发生这个错误。
457 static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
458 {
459     u32 imr_val;
460     u32 int_valid;
461     u32 expio_irq;
462
463     desc->chip->mask(irq);  /* irq = gpio irq number */
464
465     imr_val = __raw_readw(PBC_INTMASK_SET_REG);
466     int_valid = __raw_readw(PBC_INTSTATUS_REG) & imr_val;
467
468     if (unlikely(!int_valid)) {
469         printk(KERN_ERR "\nEXPIO: Spurious interrupt:0x%0x\n\n",
470                int_valid);
471         goto out;
472     }
473
474     expio_irq = MXC_EXP_IO_BASE;
475     for (; int_valid != 0; int_valid >>= 1, expio_irq++) {
476         struct irq_desc *d;
477         if ((int_valid & 1) == 0)
478             continue;
479         d = irq_desc + expio_irq;
480         if (unlikely(!(d->handle_irq))) {
481             printk(KERN_ERR "\nEXPIO irq: %d unhandeled\n",
482                    expio_irq);
483             BUG();  /* oops */
484         }
485         d->handle_irq(expio_irq, d);
486     }
487
488       out:
489     desc->chip->ack(irq);
490     desc->chip->unmask(irq);
491 }

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2008-11-03 14:25 |只看该作者
你这是什么版本的内核?我查了一下2.6.16和2.6.25都没有找到这些函数,我想问题不是出在内核驱动程序,而是你这个函数,有两个可能的原因:
1、这个驱动程序你的USB设备;
2、这个驱动程序有问题;

建议的解决方案:
1、根据你自己usb设备的特性,修改这个驱动程序,并仔细检查驱动程序是否有问题;
2、寻找相关支持(硬件厂商),获得对应的驱动程序。

论坛徽章:
0
7 [报告]
发表于 2008-11-03 14:33 |只看该作者
我这个内核版本所2.6.24的,我这个函数是在linux-2.6.24/arch/arm/mach-mx3目录下的,有这个开发板有两种驱动,一种是host的,当挂载这个驱动有以上的问题,而另一个是otg的,驱动可以挂载的。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [报告]
发表于 2008-11-03 14:44 |只看该作者
原帖由 ywfssl 于 2008-11-3 14:33 发表
我这个内核版本所2.6.24的,我这个函数是在linux-2.6.24/arch/arm/mach-mx3目录下的,有这个开发板有两种驱动,一种是host的,当挂载这个驱动有以上的问题,而另一个是otg的,驱动可以挂载的。


官方源码里面我确实没有看到,2.6.24我也看了,你可以把代码贴上来看看。

论坛徽章:
0
9 [报告]
发表于 2008-11-03 16:50 |只看该作者
恩,我刚才也看了下官方的源码,里面确实没有,我用的是freescale提供的开发所用的,加了一些patch进来,所以可能和官方的源码有点出入吧

因为从pc下载的源码是没有关于很多的arm的板子的代码部分的吧。

代码很多,不好贴出来啊。

尴尬

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
10 [报告]
发表于 2008-11-03 17:00 |只看该作者
原帖由 ywfssl 于 2008-11-3 16:50 发表
恩,我刚才也看了下官方的源码,里面确实没有,我用的是freescale提供的开发所用的,加了一些patch进来,所以可能和官方的源码有点出入吧

因为从pc下载的源码是没有关于很多的arm的板子的代码部分的吧。

...


那你应该很好定位到你得问题了:
对照数据手册分析一下patch的源代码,看看问题到底出在哪里。

希望解决了,可以拿来大家一起分享一下你的经验。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP