请问大哥们。。usb的检测是怎么一回事呢。。。。我怎么知道他插入了呢,CE里面的代码在哪里呢。。
引用: 引用 1 楼 91program 的回复:
就是一个电平检测的问题
但是我发现我手上的驱动程序没有检测的线程,似乎全是ce做的。。。我老大说了,没有GPIO来用来做检测U盘这件事情
作为从设备的话是一定要de
并且我看这个USB协议,作为主设备也是需要的。你再仔细看看吧。
还没有能力和时间看这么复杂的东西呢。
引用: 引用 4 楼 gooogleman 的回复:
作为从设备的话是一定要de
并且我看这个USB协议,作为主设备也是需要的。你再仔细看看吧。
还没有能力和时间看这么复杂的东西呢。
那就是说做usb是一件很难的事情了,但是我的驱动bsp里面真的没有detect它,
可以不用。现在cpu做的很完整了。
设备端直接依赖USB控制器的中断来判断自己接到了USB主机上。
主机端也可以直接依赖usb控制器的中断来判断有usb设备接上了。
引用: 引用 6 楼 shuiyan 的回复:
可以不用。现在cpu做的很完整了。
设备端直接依赖USB控制器的中断来判断自己接到了USB主机上。
主机端也可以直接依赖usb控制器的中断来判断有usb设备接上了。
这位大哥。。。是你这么说的。。但是这部分代码在哪里呢。。我现在的问题是我插上U盘然后重启我的板子,但是人不出来。但只要我再拔出,在差就能认。。。。这是为什么呢,我需要改微软的底层代码吗?
不是由你来检测的,是由USB HOST CONTROLLER检测的。检测到的话他会根据USB设备的信息查找相关的client驱动程序加载。
我也遇到了重启认不出来,要插拔才认的出来。
不过我是用的微软自带的USB鼠标和键盘驱动。
CE6没有添加Hive-Base Registry的时候,USB鼠标基本上每次开机都能正常工作。
添加Hive-Base Registry后,情况是USB鼠标开机有时后正常工作,有时候不行,需要重新拔掉再插上才能工作。
打了R2补丁,情况要严重些,可能系统开机时更慢,USB驱动加载和扫描时序有点问题。
common.reg
IF BSP_NOUSB !
; @CESYSGEN IF CE_MODULES_USBD
; @CESYSGEN IF CE_MODULES_USBHID
; USB - Human Interface Device (HID) class Driver
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\3\Hid_Class]
"DLL"="USBHID.DLL"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Hid\Instance]
"DLL"="USBHID.DLL"
[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\Hid\Hid_Class]
"DLL"="USBHID.DLL"
"Prefix"="HID"
"QueuedTransferCount"=dword:2
; @CESYSGEN ENDIF
...........
正常的话如果检测到USB插入,那把D+拉高通知Host
象我们所有的板子硬件设计的时候都会用一个GPIO来检测电平,然后通过中断来通知CE系统USB的插入
如果没有GPIO来做检测,那就可以用查询的方法来判断是否有USB插入