(以下讨论基于kernel 2.6.11,ARM9 s3c2410,arm-linux-gcc 3.4.1 )
=================================================
2.6在s3c2410上usb host不工作的直接结果就是提示110错误:
usb 1-1: device descriptor read/64, error -110
追踪错误代码,我们来看看能不能找到导致这个错误的线索。
include/asm-generic/errno.h
#define EPROTO 71 /* Protocol error */
#define EILSEQ 84 /* Illegal byte sequence */
#define ETIMEDOUT 110 /* Connection timed out */
Documentation/usb/error-codes.txt
-EPROTO (*, **) a) bitstuff error
b) no response packet received within the
prescribed bus turn-around time
c) unknown USB error
-EILSEQ (*, **) a) CRC mismatch
b) no response packet received within the
prescribed bus turn-around time
c) unknown USB error
-ETIMEDOUT (**) No response packet received within the prescribed
bus turn-around time. This error may instead be
reported as -EPROTO or -EILSEQ.
由此我们可以判断,这个错误与 usb 设备的超时有关。报告这个错误的地方在drivers/usb/core/hub.c中的hub_port_init部分,由于usb_get_device_descriptor获取 usb 设备信息的时候产生了超时。这样基本可以确定三种情况,1、usb 设备及接口有问题;2、usb core有问题;3、usb driver有问题。
我们可以很容易地排除1和2的可能性,问题应该在usb driver implement部分造成的。2.6的usb driver把usb规范中对usb接口的操作集中到了core里面,针对不同设备的implement分别归为host、gadget、storage等。基本确定问题就在ohci-s3c2410.c里。
跟踪进入ohci-s3c2410.c,这里面主要完成s3c2410 usb host设备的初始化工作,包括电源、时钟、寄存器等。
其实很多问题在互联网上已经被遇到和解决,我们要做的就是多参考别人的成功经验,这样可以节省时间,同时能够帮助我们找到一些思路。借助google这双强大的翅膀,我们来看看能找到什么:
http://www.linux-usb.org/FAQ.html#ts6
Q: Why doesn’t USB work at all? I get “device not accepting address”.
A: You may have some problem with your PCI setup that’s preventing your USB host controller from getting hardware interrupts. When Linux submits a request, but never hears back from the controller, this is the diagnostic you’ll see. To see if this is the problem, look at /proc/interrupts to see if the interrupt count for your host controller driver ever goes up. If it doesn’t, this is the problem: either your BIOS isn’t telling the truth to Linux (ACPI sometimes confuses these things, or setting the expected OS to windows in your BIOS), or Linux doesn’t understand what it’s saying.
Sometimes a BIOS fix will be available for your motherboard, and in other cases a more recent kernel will have a Linux fix. You may be able to work around this by passing the noapic boot option to your kernel, or (when you’re using an add-in PCI card) moving the USB adapter to some other PCI slot. If you’re using a current kernel and BIOS, report this problem to the Linux-kernel mailing list, with details about your motherboard and BIOS.
google返回的大量结果中有个建议是设置old_scheme_first标志,让驱动程序优先处理采用老式结构的设备:
设置old_scheme_first=y
测试结果并没有太大帮助,不是这个原因引发的。
linux-usb-devel mail list 上Ben大哥正在不断更新他的ohci-s3c2410 driver,但好像还没最终完成。
http://www.mail-archive.com/linux-usb-devel%40lists.sourceforge.net/msg33670.html
跟踪ohci-s3c2410.c,发现to_s3c2410_info返回NULL,很明显,是platform_data没有定义,在 include/asm/arch/usb-control.h中已经有struct s3c2410_hcd_info,那么仿照simtec的usb-simtec.c,来构造自己的platform_data。
static struct s3c2410_hcd_info smdk2410_usbcfg = {
.port[0] = {
.flags = S3C_HCDFLG_USED
},
};
然后在smdk2410_init中完成初始化:
s3c_device_usb.dev.platform_data = &smdk2410_usbcfg;
重新make zImage,情况有所变化:
初始化usb controller的过程中有一行debug信息:
s3c2410-ohci: CTRL: TypeReq=0x2303 val=0x8 idx=0x1 len=0 ==> -115
在include/asm-generic/errno.h中查了一下这个错误代码:
#define EINPROGRESS 115 /* Operation now in progress */
在Documentation/usb/error-codes.txt中的解释是:
-EINPROGRESS URB still pending, no results yet
(That is, if drivers see this it’s a bug.)
这时无论插入什么USB设备,USB鼠标、U盘、USB无线网卡,都报告:
<6>usb 1-1: new full speed USB device using s3c2410-ohci and address 2
<7>s3c2410-ohci s3c2410-ohci: urb c3c430c0 path 1 ep0in 5ec20000 cc 5 –> status -110
一步一步解决kernel2.6 usb host driver
相关推荐
热点推荐
一个刚走出大学一年的一步一步的脚印的走上电子设计员
它们的使用4.熟悉后开始一步一步的熟悉EDA所用的软件如DXP等,本人英语特差,学起来有点费劲,但是还是慢慢的学,不会的就查5.慢慢的DXP使用的可以了,就开始学习抄板,第一块板正在做着在丝印层,如何快速瞄出各种封装?别人给了个JPG的丝印图后续将自己的路写给各位,希望各位也多多支持
2014-07-15 12:32:09
一步一步介绍在RK3288 Android系统下进行OpenCL开发
1、介绍android下OpenCL开发Firefly rk3288采用Mali-T764的GPU,该GPU支持OpeCL 1.1。下面一步一步介绍android下OpenCL开发。1.首先我们需要
2022-07-20 16:13:01
一步一步学习ModBus
退缩,知难而上;今日开贴 练习写ModBus从机程序,因为我对Modbus还算有一些了解,所以把modbus从机代码的编写作为代码堆积的开始,一步一个脚印,每日一更新,以督促自己,早日成为名副其实的码农,然后
2018-09-02 23:05:01
一步一步学:教你在Windows下对硬盘分区
一步一步学:教你在Windows下对硬盘分区 虽然很多电脑用户、尤其是老玩家们,都习惯了在DOS下用FDISK、DM、PQ这些耳熟能详且驾轻就熟地对硬盘进行分区,但是随着电脑的不断普及,初级
2011-02-27 16:44:56
一步一步将FreeRTOS移植到STM32F103上
前言:由于之前听过太多人抱怨移植FreeRTOS到STM32有各种各样的问题,小灯经过一年多对FreeRTOS的研究并在公司产品中应用,多少有些心得,接下来就由小灯以最新版的FreeRTOS为例一步一步移植到STM32F103上,并提醒大家某些需要注意的事项。本文档为非正式技术文档,故排版会有...
2022-02-21 06:47:44
一步一步教你远程控制
`第一步:制作自己的物联网开发板。下面是我自己制作的一块基于ESP8266的wifi 物联网开发板。一个ESP8266+一个继电器,通过自己搭建的物联网后台实现远程通信。第二步:用lua语言进行
2018-05-26 20:45:33
一步一步精通单端反激式开关电源设计
有着息息相关,影响着每个人的生活,所以大家并不陌生,便于入手,因此很多朋友出于工作兴趣更愿意从反激开关电源设计开始作为电子技术入门,所以学好它是自己成长关键的一步,也是建立电子技术兴趣关键的一步。学习
2015-09-08 08:43:23
Bluetooth®5怎么快人一步
随着Bluetooth®5的提速,您是否也想要抢占先机,快人一步?现在,工程师可以借助TI针对单模Bluetooth低功耗应用、首款通过全面认证的Bluetooth5协议栈轻松支持高速模式。
2019-07-29 08:04:14
CC2530一步步演示程序烧写
CC2530一步步演示程序烧写第一步——先安装IAR开发环境第二歩——安装CC2530烧写工具第三歩——CC2530串口配置软件使用具体完整步骤看下面文档
2016-03-03 14:33:11
Hiber 一步一步教你如何在Altium 中导入ALLEGRO的brd文件
本帖最后由 社区管家 于 2014-12-3 15:07 编辑
Altium 中导入ALLEGRO的brd文件(byHiber) 一步一步教你如何在Altium Designer中导
2014-12-03 15:05:29
PCB学习步骤一步一步来
Protel99构成从电路设计到真实板分析的完整体系。2000年 Protel99se性能进一步提高,可以对设计过程有更大控制力。2002年 Protel DXP 集成了更多工具,使用方便,功能更强大。2003年
2014-02-18 11:15:43
[推荐]·零基础新手建站教程系列:如何一步一步的搭建属于自己的独立网站
·零基础新手建站教程系列:如何一步一步的搭建属于自己的独立网站 题记: 或许你很久以前就憧憬自己有个属于自己的网站,或许你一直感觉做个网站那都是"牛"人做的事情.其实你也可以轻松
2010-11-25 19:06:43
[讨论]如何一步一步的搭建属于自己的独立网站
如何一步一步的搭建属于自己的独立网站 题记: 或许你很久以前就憧憬自己有个属于自己的网站,或许你一直感觉做个网站那都是"牛"人做的事情.其实
你也可以轻松拥有一个自己的网站
2010-12-02 17:18:28
labview程序中怎样返回上一步操作
确定按钮的非是取消按钮要求按下取消按钮之后重新执行上一步操作例如:在进行中医科选择日期的时候按下了取消键就会执行普通门诊 选择科室的操作
2018-12-15 20:47:04
stm32是如何将配置从库函数调用一步一步到寄存器的
stm32是如何将配置从库函数调用一步一步到寄存器的?0. 前言1.综述1.1 流程2.正式开始2.1 LED库函数初始化2.2 GPIO_TypeDef2.3 GPIOA的访问方法2.4
2022-02-15 06:10:57
【Z-turn Board试用体验】+学习一步一步来
学习慢慢来,一步一步,由浅及深,从最简单的开始。先点亮一个灯(哎····好像在哪儿见过!不,我不是在说单片机!)将附带的SD卡连接到PC上格式化(什么?你不想破坏里面的数据?因为里面有做好的系统
2015-06-07 17:44:09
【分享】一步一步学习uCOS和ARM体系结构的心得
【分享】一步一步学习uCOS和ARM体系结构的心得学习必备条件:1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块
2014-09-24 11:58:24
【图文教程】菜鸟教你如何一步一步免费建一个网站!
【图文教程】菜鸟教你如何一步一步免费建一个网站!新手最佳教程,站长手把手教你免费建一个网站!想要做网站,不懂技术,不懂制作,想免费做网站,请看以下教程!1、不懂任何网站技术,技能,也能快速制作一个
2011-11-15 17:40:07
为什么我按照视频一步一步的做还是有这么多错误?
都是按照Altium designer 17 绘制89C51开发板全程实战视频一步一步的学的,为什么出现的错误和视频的不一样,而且很多错误的。还有我也看了管脚的定义了,就是找不到错误在哪
2019-09-17 02:46:01
各位大佬,想问一下为什么这个程序一步一步运行就可以读出正确的读数,正常运行却读不出正确读数
各位大佬,想问一下为什么这个程序一步一步运行就可以读出正确的读数,正常运行却读不出正确读数
2025-06-23 09:57:39
学习STM32f103从点灯一步一步开始
学习STM32f103从点灯开始跟着视频一步一步的模仿.1、工程的建立,源文件、头文件2、GPIO的使用3、函数的定义、使用4、查找函数的参数5、查找编译失败原因(中文状态下的符号、缺少符号 )6
2021-08-23 09:21:35
学习单片机的第一步是什么??
我是学生,想学习下单片机。。。我第一步干嘛好呢???要先买单片机的学习板么?买怎样的???我看到淘宝上大把的,但几乎都不同。。。我该怎么办??
2013-11-23 16:40:19
嵌入式Linux USB驱动开发之教你一步步编写USB驱动程序
驱动程序中。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct u***_driver,它们向USB
2017-11-03 10:18:03
怎么让直流电源执行时 一步一步执行
`怎么让直流电源执行时 一步一步执行,比如:第一步输出5V 、2A、 工作10秒、再执行第二步、第二步输出3V、1A、工作30秒再执行第三步,求帮助,不知道怎么做!`
2018-03-08 09:02:35
想入门嵌入式软件,但是不知道需要一步一步学什么,请老司机指点一下
我是一名硬件工程师,我想转嵌入式软件,以前学过一点C,想从0开始学嵌入式,想玩单片机或者linux,希望有老司机能帮我指点一下,先学什么然后一步一步学什么,学到什么程度,大概就是这个意思,我主要是想学单片机,因为现在公司是做只能硬件的
2020-03-02 14:51:41
手把手教你如何一步一步实现人脸识别的门禁系统
是一个人脸识别的门禁系统开源源码及论文,基本功能实现,但其教程较简略且有欠缺。本教程将从零开始,手把手教你如何一步一步实现人脸识别,意在打造一个升级完整版、全CSDN最详细版。本篇将有两个版本:PC端Ubuntu与嵌入式ARM版本。本教程将从基本...
2021-12-14 06:44:12
求助cadence16.6装完之后打不开,总是报错下边的错误,都是按照步骤一步一步来的!大神解决了发红包
求助cadence16.6装完之后打不开,总是报错下边的错误,都是按照步骤一步一步来的!大神解决了发红包。win7,64位系统,安装步骤都是按照步骤来的,怎么回事!哪位大神解决了,红包不成敬意!!!!谢谢了
2017-08-05 21:58:51
详解Kernel2.6调度算法
Kernel2.6调度算法仍然是基于优先级的调度,它的算法复杂度为O(1),也就是说是调度器的开销是恒定的,与系统当前的负载没有关系。
2019-08-07 06:52:56
详解一步一步设计开关电源
=oxh_wx3、【周启全老师】开关电源全集http://t.elecfans.com/topic/130.html?elecfans_trackid=oxh_wx 详解一步一步设计开关电源资料来自网络资源
2019-06-20 20:14:39
请教大神,根据GIT上SDK配置指导,最后一步构建HELLO_WORD出现失败的原因
我根据HPM_SDK的说明文档,在WINDOWS下一步一步执行里面的操作,最后尝试“4. 为Ninja-build产生构建文件:”失几,提示截图如下:
哪位大神指导下这是什么问题,是哪一步出错了吗?
2023-06-06 22:15:24
请教如何实现提示一步做一步然后再提示一步
本帖最后由 suicone 于 2012-7-22 18:24 编辑
就是运行时会有个提示 不要对话框的 就是一段文字显示在某个特定的地方然后按照提示完成一步 比如“请按布尔1按钮”然后你点布尔1后 文字改变到下一个提示“请按布尔2按钮”诸如此类的现在完全没有思路额。。。。。
2012-07-22 18:15:14
请问怎么从子函数的某一步返回到主函数的某一步?
简单的说就是希望可以在子函数中的某一步程序执行完之后返回到主函数中段的一句指令,尝试过用goto函数,发现不允许夸函数,有什么好的办法么?谢谢了
2019-05-07 05:27:22
谁有Allegro PCB SI一步一步学会前仿真中里面的案例文件,是pcb图,模型这些文件
我有这个Allegro PCB SI一步一步学会前仿真的文件,要的是案例文件?
2016-11-12 15:43:00
一步一步基于ADS进行设计开发
一步一步基于ADS1.2 进行设计开发目 录1 ADS1.2集成开发环境简介.........................................................22利用
2008-09-09 14:29:15
7
7一步一步学ZedBoard:使用PL做流水灯(完整工程文件下载)
一步一步学ZedBoard:使用PL做流水灯:目的是为了学习不使用ARM PS情况下,只对Zynq PL的编程方法,同时学习Xilinx PlanAhead工具的使用方法。(本资料是其相应的完整工程文件下载)
2012-12-05 13:52:39
186
186一步一步学ZedBoard Zynq(二):使用PL做流水灯
《一步一步学ZedBoard & Zynq》系列第二篇,目的是为了学习不使用ARM PS情况下,只对Zynq PL的编程方法,同时学习Xilinx?PlanAhead工具的使用方法?
2017-02-10 20:24:11
4268
4268Xilinx IP核配置,一步一步验证Xilinx Serdes GTX最高8.0Gbps
之前用serdes一直都是跑的比较低速的应用,3.125Gbps,按照官方文档一步一步来都没出过什么问题,这次想验证一下K7系列GTX最高线速8Gbps,看看xilinx的FPGA是不是如官方文档所说。
2018-03-26 14:40:00
11496
11496数据中心如何一步一步接纳NVMe
数据中心拥抱NVMe技术的第一步,就是使用全闪存阵列,其系统内的驱动器是通过NVMe连接的。但是在外部,系统并没有重大变化。
2020-12-25 16:24:34
1021
1021触摸屏是如何一步一步走到今天的?
机,通过手指的不停滑动,我们便可以完成信息的交流和获取。 手机的发展离不开触摸屏的进步,那么触摸屏到底是什么原理呢?又是怎样一步一步走到了今天?话不多多说,一起去看看吧~ 目前比较主流的触摸屏分为两种,分别是电
2021-05-06 10:26:24
3125
3125带你一步一步了解Git的底层原理
版本回退就抓瞎?别问我怎么知道的,问就是:“我曾经就是这样啊~~”。 针对这些问题,今天我就将这几年对Git的认知和理解分享出来,尽可能的从本质去讲解Git,帮助你一步一步去了解Git的底层原理,相信读完本篇文章你便可以换种姿态,更加风骚得使用Git各种指令。 目录 1. 基本
2021-05-10 17:55:44
3606
3606
基于一步步蒸馏(Distilling step-by-step)机制
为优化LLM为“小模型/少数据/好效果”,提供了一种新思路:”一步步蒸馏”(Distilling step-by-step)
2023-05-16 10:24:06
2246
2246
如何一步一步设计开关电源
简介:针对开关电源很多人觉得很难,其实不然。设计一款开关电源并不难,难就难在做精,等你真正入门了,积累一定的经验,再采用分立的结构进行设计就简单多了。万事开头难,笔者在这就抛砖引玉,慢慢讲解如何一步一步设计开关电源。
2023-11-15 14:24:24
3
3CoT 数据集如何让大模型学会一步一步思考?
目前,大模型的回答路径基本遵循 input-output 的方式,在面对复杂任务时表现不佳。反之,人类会遵循一套有条理的思维流程,逐步推理得出正确答案。这种差异促使人们深入思考:如何才能让大模型“智能涌现”,学会像人类一样“一步一步思考”?
2025-04-24 16:51:15
1156
1156
电子发烧友App



评论