最近在调试一个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驱动程序崩溃的问题相关推荐

  1. 一步一步解决 kernel 2.6 usb host driver

    2.6在s3c2410上usb host不工作的直接结果就是提示110错误:  usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...

  2. USB Host Device And OTG

    USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一.  硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头,USB设备使用公 ...

  3. 详解WinCE下USB Host驱动开发(2)

    当用户需要卸载USB Host设备驱动时,将会调用USBUnInstallDriver函数 BOOL USBUnInstallDriver();     它与USBInstallDriver类似,不过 ...

  4. 【移植驱动到Linux3.4.2内核之二】LCD,触摸屏,按键,USB等驱动程序的移植心得总结

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 一移植驱动程序心得体会 二移植LCD驱动程序记录 三移植按 ...

  5. USB HOST与 USB OTG的区别及工作原理

    在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 零 USB背景知识 US ...

  6. 关于kernel2.6中USB host controller driver 的问题

    2.6在s3c2410上usb host不工作的直接结果就是提示110错误:  usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...

  7. TI Cortex-M4 USB Host CDC 驱动详解及源代码

    1. USB CDC介绍 USB的CDC类是USB通信设备类(Communication Device Class)的简称.CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信 ...

  8. linux 重新加载驱动程序,在linux中模拟设备驱动程序崩溃。让python重新加载i

    你的代码现在崩溃的原因是,当驱动程序崩溃时,代表你的硬件的设备专用文件就会消失.您的代码仍然具有这些设备的打开文件句柄.根据您的代码在幕后到底在做什么,它可能会尝试向一个现在无效的文件句柄发出IOCT ...

  9. WINCE对USB HOST供电的控制

    上图的USBH_EN(对应于GPG6)是用于对USB HOST供电的,这个需要在BSP中进行控制,可在init.c文件的OEMInit() ->ConfigureGPIO()函数中假如下面的代码 ...

最新文章

  1. JScript多语言语法加亮引擎显示(代码精简)
  2. FPGA之道(71)提高设计的综合性能(三)提高设计的重用性与易改性
  3. Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解
  4. 堆内存与栈内存的区别
  5. ES6_入门(2)_const命令
  6. html文本框样式大全,HTML文本框样式大全
  7. 提高篇 第三部分 图论 第1章 最小生成树
  8. 为什么mysql启动不了了_Mysql为什么启动不了
  9. 建表mysql语句吗_mysql建表语句问题
  10. Spotfire 设置 组合图表的刻度范围
  11. element中Tree组件更新后不自动收起
  12. 关于ARINC 573/717帧同步字的误解
  13. 传感器学习——ESP8266(无线串口使用)
  14. 六自由度机器人(机械臂)运动学建模及运动规划系列(五)——避障路径规划
  15. 记录一次京东面试吧,面试的是虚拟平台的经验.
  16. Uboot学习笔记①---(文件目录结构、README摘要、uImage的64字节头信息)
  17. 终于搞清楚了,关于核心线程会不会回收
  18. 5A成绩拿下PMP的备考经验
  19. 基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
  20. word表格如何设置重复表头

热门文章

  1. 3.3.1JavaScript网页编程——WebAPI(JS之DOM基础篇,含事件)
  2. 春秋杯秋季联赛勇者赛道MISC部分WP
  3. VS2010编译POCO1.8.1
  4. 游戏美术行业,选原画好还是3D建模好?
  5. 数学建模实验——贷款计算
  6. Mybatis中limit用法与分页查询
  7. 测试用例设计方法之判定表法
  8. Leetcode刷题笔记之42.接雨水
  9. 数资问题【组合概率】相同元素分配问题和平均分组问题
  10. 错误信息:没有为会计年度0定义版本2018.