usb host驱动程序崩溃的问题
最近在调试一个usb主芯片,外接了四个devices.芯片->hub->4 devices.
开机启动时,时好时坏.有时候能正常识别,有时候会崩溃掉.
现象为:
[ 468.495391] PC is at UBIRunIntIN0+0x378/0x5d0 [hcd903x]
反汇编看代码总是崩溃在bulkin的数据接收上,一直没明白,以为是芯片驱动问题.
后来经过仔细测试发现开机启动时,每次启动时,只要识别不出devices时就会崩溃.
发现是hub_port_reset函数中的set_port_feature失败,发现进入cannot reset port %d (err = %d)\n",打印-110.内核中-110为,ETIMEDOUT.
跟踪代码发现是usb_fill_control_urb返回失败.
目前的现象纠结于两个问题:1,为什么hub会识别不出device.2,即使识别不出来device,也不应该崩溃掉.
现在没有什么结论.
问题已解决,主要是由于usb_submit_urb的参数用的是GFP_KERNEL,把其用到的地方,全改为GFP_ATOMIC,重启几十次,没有发现崩溃的现象.
总结得失:
这次崩溃现象之所以花了两天才解决,还是因为对linux的调度不熟悉.崩溃之后,总是纠结于最底层驱动的锁,信号量之类的地方,看结构体是否被抢占,而没有想到是驱动应用层直接调用时就是可抢占的权限.后来在网上查了查,有一英文网站提了一句这个地方,没想到真解决了.
以后得注意两方面:
1,加强利用网络知识,尤其是谷歌的利用.
2,多学习linux知识,多从原理上想问题.而不是去瞎猜.
作者:张亮校
写于:2012.12.27
更改:2012.12.28
usb host驱动程序崩溃的问题相关推荐
- 一步一步解决 kernel 2.6 usb host driver
2.6在s3c2410上usb host不工作的直接结果就是提示110错误: usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...
- USB Host Device And OTG
USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头,USB设备使用公 ...
- 详解WinCE下USB Host驱动开发(2)
当用户需要卸载USB Host设备驱动时,将会调用USBUnInstallDriver函数 BOOL USBUnInstallDriver(); 它与USBInstallDriver类似,不过 ...
- 【移植驱动到Linux3.4.2内核之二】LCD,触摸屏,按键,USB等驱动程序的移植心得总结
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 一移植驱动程序心得体会 二移植LCD驱动程序记录 三移植按 ...
- USB HOST与 USB OTG的区别及工作原理
在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 零 USB背景知识 US ...
- 关于kernel2.6中USB host controller driver 的问题
2.6在s3c2410上usb host不工作的直接结果就是提示110错误: usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...
- TI Cortex-M4 USB Host CDC 驱动详解及源代码
1. USB CDC介绍 USB的CDC类是USB通信设备类(Communication Device Class)的简称.CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信 ...
- linux 重新加载驱动程序,在linux中模拟设备驱动程序崩溃。让python重新加载i
你的代码现在崩溃的原因是,当驱动程序崩溃时,代表你的硬件的设备专用文件就会消失.您的代码仍然具有这些设备的打开文件句柄.根据您的代码在幕后到底在做什么,它可能会尝试向一个现在无效的文件句柄发出IOCT ...
- WINCE对USB HOST供电的控制
上图的USBH_EN(对应于GPG6)是用于对USB HOST供电的,这个需要在BSP中进行控制,可在init.c文件的OEMInit() ->ConfigureGPIO()函数中假如下面的代码 ...
最新文章
- UI产品设计流程中的14个要点
- 《零基础入门学习Python》学习过程笔记【30模块中的函数,os模块,ospath模块中的函数(看了一点)】...
- 摘要:ASP.NET的路由
- mac下antlr4命令使用
- 少撸两局教你搭个博客玩
- HashMap的工作原理--重点----数据结构示意图的理解
- xcap工具使用心得
- 终于讲透了,史上最详细的RS485串口通讯!
- 魅族16s解决杀后台方法!
- sql 语句,主键外键详解
- 《老路用得上的商学课》96-100学习笔记
- Mac解决Error: No such file or directory @ rb_sysopen报错问题
- word如何用制表符对齐公式
- 名词性从句的时态规则
- .net 简单的后台合成图片
- Java 1082 射击比赛
- microsoftvisual c++ runtime library错误
- 数字藏品系统开发,APP小程序成品源码搭建开发
- linux barrier,Linux文件系统的barrier:启用还是禁用
- solr6 mysql_solr6.6.0学习(2)创建核心和与Mysql数据库连接