完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Platform: ROCKCHIP
OS: Android 6.0 Kernel: 3.10.92 上一篇文件小结了USB设备的枚举过程,而设备是插入到hub上才被检测到的. 这里小结hub的初始化,假设初始化之前USB设备已经插入,并且这里讨论的是 root hub,非root hub的行为会和u***设备类似. u*** core初始化会创建一个hub thread, 来处理USB设备插入后的枚举事件. u***_init -> core/u***.c u***_hub_init -> hub.c u***_register //和其他USB设备一样注册到core中,让core知道它的存在. hub_thread -> hub_events //while循环,第一次进来后hub event list是空,马上退出然后进入休眠. wait_event_freezable //休眠等待测到有u***插入. 对于root hub,它和host controller一起的,也就是说有host controller,就一定有root hub存在, 在host controller初始化时会一并将root hub注册. ehci_rk_init -> echi-rockchip.c platform_driver_register -> ehci_rk_probe -> u***_add_hcd -> u***_alloc_dev //分配root hub的u***_device register_root_hub -> u***_new_device -> u***_enumerate_device //枚举获取root hub信息 device_add -> 进而调用hub drvier的probe hub_probe -> hub.c hub_configure -> u***_get_status //获得hub device状态 u***_alloc_urb //分配urb u***_fill_int_urb //填充中断类型的urb(hub支持control/int类型), 注意这里的hub_irq()参数,后面会重点提到. hub_activate -> schedule_delayed_work -> hub_init_func2 -> hub_activate //HUB_INIT2阶段 schedule_delayed_work -> hub_init_func3 -> hub_activate ->//HUB_INIT3阶段 u***_submit_urb //提交urb kick_khubd -> wake_up(&khubd_wait) -> //接下来就是枚举设备的过程了. hub_thread -> hub_events -> hub_port_connect_change -> u***_alloc_dev u***_set_device_state //USB_STATE_POWERED:上电状态 choose_devnum hub_port_init u***_new_device u***_enumerate_device device_add //接着就会调用到对应设备的probe函数. |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
431 浏览 0 评论
524 浏览 1 评论
1789 浏览 1 评论
3043 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
3771 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 23:39 , Processed in 0.557199 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号