USB Hub Kernel Debug

此记录详细展示了在一个特定时间点上,USB设备从连接到被识别,再到最终断开的全过程。其中包括了设备的速度变化、状态更新、以及设备的具体信息如供应商ID和产品ID等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mar 26 10:19:50 localhost kernel: usb usb1: usb resume
Mar 26 10:19:50 localhost kernel: ehci_hcd 0000:00:1d.7: resume root hub
Mar 26 10:19:50 localhost kernel: hub 1-0:1.0: hub_resume
Mar 26 10:19:50 localhost kernel: ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001803 POWER sig=j CSC CONNECT
Mar 26 10:19:50 localhost kernel: hub 1-0:1.0: port 5: status 0501 change 0001
Mar 26 10:19:50 localhost kernel: hub 1-0:1.0: state 7 ports 8 chg 0020 evt 0000
Mar 26 10:19:50 localhost kernel: hub 1-0:1.0: port 5, status 0501, change 0000, 480 Mb/s
Mar 26 10:19:50 localhost kernel: ehci_hcd 0000:00:1d.7: port 5 high speed
Mar 26 10:19:50 localhost kernel: ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001005 POWER sig=se0 PE CONNECT
Mar 26 10:19:50 localhost kernel: usb 1-5: new high speed USB device using ehci_hcd and address 3
Mar 26 10:19:51 localhost kernel: ehci_hcd 0000:00:1d.7: port 5 high speed
Mar 26 10:19:51 localhost kernel: ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001005 POWER sig=se0 PE CONNECT
Mar 26 10:19:51 localhost kernel: usb 1-5: udev 3, busnum 1, minor = 2
Mar 26 10:19:51 localhost kernel: usb 1-5: New USB device found, idVendor=058f, idProduct=6254
Mar 26 10:19:51 localhost kernel: usb 1-5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 26 10:19:51 localhost kernel: usb 1-5: uevent
Mar 26 10:19:51 localhost kernel: usb 1-5: usb_probe_device
Mar 26 10:19:51 localhost kernel: usb 1-5: configuration #1 chosen from 1 choice
Mar 26 10:19:51 localhost kernel: usb 1-5: adding 1-5:1.0 (config #1, interface 0)
Mar 26 10:19:51 localhost kernel: usb 1-5:1.0: uevent
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: usb_probe_interface
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: usb_probe_interface - got id
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: USB hub found
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: 4 ports detected
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: standalone hub
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: ganged power switching
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: global over-current protection
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: Single TT
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: TT requires at most 8 FS bit times (666 ns)
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: Port indicators are supported
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: power on to power good time: 100ms
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: local power source is good
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: no over-current condition exists
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: enabling power on all ports
Mar 26 10:19:51 localhost kernel: usb 1-5: uevent
Mar 26 10:19:51 localhost kernel: drivers/usb/core/inode.c: creating file '003'
Mar 26 10:19:51 localhost kernel: usb 1-5: link qh256-0001/f468abc0 start 2 [1/0 us]
Mar 26 10:19:51 localhost kernel: hub 1-5:1.0: state 7 ports 4 chg 0000 evt 0000
Mar 26 10:19:54 localhost kernel: hub 1-5:1.0: hub_suspend
Mar 26 10:19:54 localhost kernel: usb 1-5: unlink qh256-0001/f468abc0 start 2 [1/0 us]
Mar 26 10:19:54 localhost kernel: usb 1-5: usb auto-suspend
Mar 26 10:19:55 localhost kernel: hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0020
Mar 26 10:19:55 localhost kernel: ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001002 POWER sig=se0 CSC
Mar 26 10:19:55 localhost kernel: hub 1-0:1.0: port 5, status 0100, change 0001, 12 Mb/s
Mar 26 10:19:55 localhost kernel: usb 1-5: USB disconnect, address 3
Mar 26 10:19:55 localhost kernel: usb 1-5: unregistering device
Mar 26 10:19:55 localhost kernel: usb 1-5: usb_disable_device nuking all URBs
Mar 26 10:19:55 localhost kernel: usb 1-5: unregistering interface 1-5:1.0
Mar 26 10:19:55 localhost kernel: usb 1-5:1.0: uevent
Mar 26 10:19:55 localhost kernel: usb 1-5: uevent
Mar 26 10:19:55 localhost kernel: hub 1-0:1.0: debounce: port 5: total 100ms stable 100ms status 0x100


我是一名嵌入式驱动工程师,最近在开发USB hub的驱动,目前已经实现了hub本身的驱动,下一步要实现hub上设备的驱动,目前在端口复位之后,设备枚举出现了一些问题。 我的理解是,当复位之后,主机需要分配两个通道,对应设备的端点0 ,然后主机设置状态机为枚举,调用主流程去枚举,然后发现问题是设备无响应。 下面是代码,请你告诉我详细的过程(能够对应编码实现的),然后看看代码中不正确的地方以及需要改进的地方。 ///////////////////////////////////////////////////////////////// // 文件说明:本文件实现USBhub的类描述 // by jinyh 2025-2-11 //////////////////////////////////////////////////////////////// #include "hubclass.h" #include "hubctrl.h" #include "usb_host_core.h" #include "usb_host_stdreq.h" #include "usb_host_ctrltrans.h" #include "usb_host_cfgch.h" #include "usb_host_driver.h" #include "usb_host_user.h" DESCRIPTOR_HUB_DESC_T myHubDesc; //hub描述符,本工程中只有唯一的一个hub HUB_Machine_TypeDef myHUB_Machine; // Hub的操作结构体 extern __USB_ALIGN_BEGIN USBH_HOST usb_app_host; // 连接一个设备, extern __USB_ALIGN_BEGIN USBH_HOST usb_child_host[5]; // 如何是hub的话,则连接最多4个设备。 //function //void usb_hub_dev_process(usb_core_instance *pdev, USBH_HOST *phost); extern HOST_STATUS usb_host_enumprocess(usb_core_instance *pdev, USBH_HOST *phost); // 跟应用相关,照猫画虎写一写 2025-1-22 static HOST_STATUS usb_host_hub_init(usb_core_instance *pdev, void *phost); void usb_host_hub_deinit(usb_core_instance *pdev,void *phost); static HOST_STATUS usb_host_hub_classreq(usb_core_instance *pdev, void *phost); static HOST_STATUS usb_host_hub_process(usb_core_instance *pdev, void *phost); usb_host_class_callback_func USBH_hub_cb = { usb_host_hub_init, usb_host_hub_deinit, usb_host_hub_classreq, usb_host_hub_process }; static HOST_STATUS usb_host_hub_init(usb_core_instance *pdev, void *phost) { // hub 初始化,已经枚举结束 USBH_HOST *pphost = phost; myHUB_Machine.hub_reqState=HUB_GET_DESC_REQUEST; // 控制hub的req状态为HUB_GET_DESC_REQUEST myHUB_Machine.hub_process_state=HUB_GET_PORT_STATUS; // 默认是读取端口状态 HOST_STATUS status = HSTATUS_BUSY ; if (pphost->device_prop.devitfdesc[0].bInterfaceClass == USB_HUB_CLASS) { myHUB_Machine.dev_addr=pphost->device_prop.devaddr
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值