導航:首頁 > 操作系統 > linuxusb30

linuxusb30

發布時間:2022-10-05 16:10:59

『壹』 USB2.0和USB3.0的區別

如下。

『貳』 如何在嵌入式linux開發板上使用USB鍵盤

滑鼠驅動可分為幾個部分:驅動載入部分、probe部分、open部分、urb回調函數處理部分。
下文陰影部分為註解。
一、驅動載入部分
static int __init usb_mouse_init(void)
{
int retval = usb_register(&usb_mouse_driver);//注冊滑鼠驅動
if (retval == 0)
info(DRIVER_VERSION ":" DRIVER_DESC);
return retval;
}
其中usb_mouse_driver的定義為:
static struct usb_driver usb_mouse_driver = {
.owner = THIS_MODULE,
.name = "usbmouse",
.probe = usb_mouse_probe,
.disconnect = usb_mouse_disconnect,
.id_table = usb_mouse_id_table,
};
如果注冊成功的話,將會調用usb_mouse_probe。那麼什麼時候才算注冊成功呢?
和其它驅動注冊過程一樣,只有在其對應的「匯流排」上發現匹配的「設備」才會調用probe。匯流排匹配的方法和具體匯流排相關,如:platform_bus_type中是判斷驅動名稱和平台設備名稱是否相同;那如何確認usb匯流排的匹配方法呢?
Usb設備是注冊在usb_bus_type匯流排下的。查看usb_bus_type的匹配方法。
struct bus_type usb_bus_type = {
.name = "usb",
.match = usb_device_match,
.hotplug = usb_hotplug,
.suspend = usb_generic_suspend,
.resume = usb_generic_resume,
};
其中usb_device_match定義了匹配方法
static int usb_device_match (struct device *dev, struct device_driver *drv)
{
struct usb_interface *intf;
struct usb_driver *usb_drv;
const struct usb_device_id *id;
/* check for generic driver, which we don't match any device with */
if (drv == &usb_generic_driver)
return 0;
intf = to_usb_interface(dev);
usb_drv = to_usb_driver(drv);
id = usb_match_id (intf, usb_drv->id_table);
if (id)
return 1;
return 0;
}
可以看出usb的匹配方法是usb_match_id (intf, usb_drv->id_table),也就是說通過比對「dev中intf信息」和「usb_drv->id_table信息」,如果匹配則說明驅動所對應的設備已經添加到匯流排上了,所以接下了就會調用drv中的probe方法注冊usb設備驅動。
usb_mouse_id_table的定義為:
static struct usb_device_id usb_mouse_id_table[] = {
{ USB_INTERFACE_INFO(3, 1, 2) },
{ } /* Terminating entry */
};
#define USB_INTERFACE_INFO(cl,sc,pr) /
.match_flags = USB_DEVICE_ID_MATCH_INT_INFO, /
.bInterfaceClass = (cl), /
.bInterfaceSubClass = (sc), /
.bInterfaceProtocol = (pr)
滑鼠設備遵循USB人機介面設備(HID),在HID規范中規定滑鼠介面類碼為:
介面類:0x03
介面子類:0x01
介面協議:0x02
這樣分類的好處是設備廠商可以直接利用標準的驅動程序。除了HID類以外還有Mass storage、printer、audio等
#define USB_DEVICE_ID_MATCH_INT_INFO /
(USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL)
匹配的過程為:
usb_match_id(struct usb_interface *interface, const struct usb_device_id *id)
{
struct usb_host_interface *intf;
struct usb_device *dev;
/* proc_connectinfo in devio.c may call us with id == NULL. */
if (id == NULL)
return NULL;
intf = interface->cur_altsetting;
dev = interface_to_usbdev(interface);
/* It is important to check that id->driver_info is nonzero,
since an entry that is all zeroes except for a nonzero
id->driver_info is the way to create an entry that
indicates that the driver want to examine every
device and interface. */
for (; id->idVendor || id->bDeviceClass || id->bInterfaceClass ||
id->driver_info; id++) {
if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
id->idProct != le16_to_cpu(dev->descriptor.idProct))
continue;
/* No need to test id->bcdDevice_lo != 0, since 0 is never greater than any unsigned number. */
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
(id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice)))
continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
(id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice)))
continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
(id->bDeviceClass != dev->descriptor.bDeviceClass))
continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
(id->bDeviceSubClass!= dev->descriptor.bDeviceSubClass))
continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
(id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
continue;
//介面類
if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_CLASS) &&
(id->bInterfaceClass != intf->desc.bInterfaceClass))
continue;
//介面子類
if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_SUBCLASS) &&
(id->bInterfaceSubClass != intf->desc.bInterfaceSubClass))
continue;
//遵循的協議
if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_PROTOCOL) &&
(id->bInterfaceProtocol != intf->desc.bInterfaceProtocol))
continue;
return id;
}
return NULL;
}
從中可以看出,只有當設備的介面類、介面子類、介面協議匹配滑鼠驅動時滑鼠驅動才會調用probe方法。

『叄』 嵌入式linux2.6.30用usb_modeswitch驅動3G無線上網卡貌似成功但無ttyUSBx出來求教高手

不知道為什麼,我不用usb_modeswitch一樣可以用3G撥號上網。而且設備不是ttyUSB,而是ttyACM*

『肆』 怎麼查看linux usb設備驅動

下面的信息都是在VMware中運行Ubuntu12-04系統上執行的。同樣該命令也支持在嵌入式系統中進行USB調試。
一、cat設備節點獲取信息
在一些嵌入式開發中需要調試USB功能,經常會cat /sys 下的相關設備節點來查看某些信息,比如說我們可以看到 /sys/bus/usb/devices 目錄有多個子目錄。進入到某個子目錄可以看到usb設備更加詳細的信息(可以理解為設備描述符)。
1、usb設備在匯流排上的信息
// usb設備在匯流排上的信息
[email protected]:/sys/kernel/debug# cd /sys/bus/usb/devices
[email protected]:/sys/bus/usb/devices# ll
total 0
drwxr-xr-x 2 root root 0 Nov 26 21:21 ./
drwxr-xr-x 4 root root 0 Nov 26 21:21 ../
lrwxrwxrwx 1 root root 0 Nov 26 21:21 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-0:1.0/
lrwxrwxrwx 1 root root 0 Dec 15 23:10 1-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/
lrwxrwxrwx 1 root root 0 Dec 15 23:18 1-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-0:1.0/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-1:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.0/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 2-2:1.0 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2:1.0/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb1 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/
lrwxrwxrwx 1 root root 0 Nov 26 21:21 usb2 -> ../../../devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/
其中 usbx/第x個匯流排,x-y:a.b/的目錄格式,x表示匯流排號,y表示埠,a表示配置,b表示介面。
具體解釋可以參照如下:
The names that begin with "usb" refer to USB controllers. More accurately, they refer to the "root hub" associated with each controller. The number is the USB bus number. In the example there is only one controller, so its bus is number 1. Hence the name "usb1".
"1-0:1.0" is a special case. It refers to the root hub's interface. This acts just like the interface in an actual hub an almost every respect; see below.
All the other entries refer to genuine USB devices and their interfaces. The devices are named by a scheme like this:
bus-port.port.port ...
In other words, the name starts with the bus number followed by a '-'. Then comes the sequence of port numbers for each of the intermediate hubs along the path to the device.
For example, "1-1" is a device plugged into bus 1, port 1. It happens to be a hub, and "1-1.3" is the device plugged into port 3 of that hub. That device is another hub, and "1-1.3.1" is the device plugged into its port 1.
The interfaces are indicated by suffixes having this form:
:config.interface
That is, a ':' followed by the configuration number followed by '.' followed by the interface number. In the above example, each of the devices is using configuration 1 and this configuration has only a single interface, number 0. So the interfaces show up as;
1-1:1.0 1-1.3:1.0 1-1.3.1:1.0
A hub will never have more than a single interface; that's part of the USB spec. But other devices can and do have multiple interfaces (and sometimes multiple configurations). Each interface gets its own entry in sysfs and can have its own driver.
2、特定設備的詳細信息
進入到某個目錄中去,可以看到該設備的詳細信息,可用cat命令獲取信息。
// usb設備的詳細信息
[email protected]:/sys/bus/usb/devices/usb1# ll
total 0
drwxr-xr-x 6 root root 0 Nov 26 21:21 ./
drwxr-xr-x 4 root root 0 Nov 26 21:21 ../
drwxr-xr-x 10 root root 0 Nov 26 21:21 1-0:1.0/
drwxr-xr-x 5 root root 0 Dec 15 23:10 1-1/
-rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized
-rw-r--r-- 1 root root 4096 Dec 15 23:40 authorized_default
-rw-r--r-- 1 root root 4096 Dec 15 23:40 avoid_reset_quirk
-r--r--r-- 1 root root 4096 Nov 26 21:21 bcdDevice
-rw-r--r-- 1 root root 4096 Nov 26 21:21 bConfigurationValue
-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceClass
-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceProtocol
-r--r--r-- 1 root root 4096 Nov 26 21:21 bDeviceSubClass
-r--r--r-- 1 root root 4096 Dec 15 23:40 bmAttributes
-r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPacketSize0
-r--r--r-- 1 root root 4096 Dec 15 23:40 bMaxPower
-r--r--r-- 1 root root 4096 Dec 15 23:40 bNumConfigurations
-r--r--r-- 1 root root 4096 Dec 15 23:40 bNumInterfaces
-r--r--r-- 1 root root 4096 Nov 26 21:21 busnum
-r--r--r-- 1 root root 4096 Dec 15 23:40 configuration
-r--r--r-- 1 root root 65553 Nov 26 21:21 descriptors
-r--r--r-- 1 root root 4096 Dec 15 23:40 dev
-r--r--r-- 1 root root 4096 Nov 26 21:21 devnum
-r--r--r-- 1 root root 4096 Dec 15 23:40 devpath
lrwxrwxrwx 1 root root 0 Nov 27 20:06 driver -> ../../../../../bus/usb/drivers/usb/
drwxr-xr-x 3 root root 0 Dec 15 23:40 ep_00/
-r--r--r-- 1 root root 4096 Nov 26 21:21 idProct
-r--r--r-- 1 root root 4096 Nov 26 21:21 idVendor
-r--r--r-- 1 root root 4096 Dec 15 23:40 ltm_capable
-r--r--r-- 1 root root 4096 Nov 26 21:21 manufacturer
-r--r--r-- 1 root root 4096 Dec 15 23:40 maxchild
drwxr-xr-x 2 root root 0 Nov 26 21:21 power/
-r--r--r-- 1 root root 4096 Nov 26 21:21 proct
-r--r--r-- 1 root root 4096 Dec 15 23:40 quirks
-r--r--r-- 1 root root 4096 Nov 26 21:21 removable
--w------- 1 root root 4096 Dec 15 23:40 remove
-r--r--r-- 1 root root 4096 Nov 26 21:21 serial
-r--r--r-- 1 root root 4096 Nov 26 21:21 speed
lrwxrwxrwx 1 root root 0 Nov 26 21:21 subsystem -> ../../../../../bus/usb/
-rw-r--r-- 1 root root 4096 Nov 26 21:21 uevent
-r--r--r-- 1 root root 4096 Dec 15 23:40 urbnum
-r--r--r-- 1 root root 4096 Dec 15 23:40 version
二、使用debugfs
1、掛載 debugfs 到 /sys/kernel/debug 路徑下
[email protected]:mount -t debugfs none /sys/kernel/debug
2、執行上述步驟之後,在 /sys/kernel/debug 就會生成如下的文件
[email protected]:/sys/bus/usb/devices# cd /sys/kernel/debug/
[email protected]:/sys/kernel/debug# ll
total 0
drwx------ 22 root root 0 Nov 26 21:21 ./
drwxr-xr-x 7 root root 0 Nov 26 21:21 ../
drwxr-xr-x 2 root root 0 Nov 26 21:21 acpi/
drwxr-xr-x 32 root root 0 Dec 4 16:30 bdi/
drwxr-xr-x 2 root root 0 Nov 26 21:21 bluetooth/
drwxr-xr-x 2 root root 0 Nov 26 21:21 cleancache/
drwxr-xr-x 2 root root 0 Nov 26 21:21 dma_buf/
drwxr-xr-x 4 root root 0 Nov 26 21:21 dri/
drwxr-xr-x 2 root root 0 Nov 26 21:21 dynamic_debug/
drwxr-xr-x 2 root root 0 Nov 26 21:21 extfrag/
drwxr-xr-x 2 root root 0 Nov 26 21:21 frontswap/
-r--r--r-- 1 root root 0 Nov 26 21:21 gpio
drwxr-xr-x 3 root root 0 Nov 26 21:21 hid/
drwxr-xr-x 2 root root 0 Nov 26 21:21 kprobes/
drwxr-xr-x 3 root root 0 Nov 26 21:21 kvm-guest/
drwxr-xr-x 2 root root 0 Nov 26 21:21 mce/
drwxr-xr-x 2 root root 0 Nov 26 21:21 pinctrl/
-r--r--r-- 1 root root 0 Nov 26 21:21 pwm
drwxr-xr-x 2 root root 0 Nov 26 21:21 regmap/
drwxr-xr-x 3 root root 0 Nov 26 21:21 regulator/
-rw-r--r-- 1 root root 0 Nov 26 21:21 sched_features
-r--r--r-- 1 root root 0 Nov 26 21:21 sleep_time
-r--r--r-- 1 root root 0 Nov 26 21:21 suspend_stats
drwxr-xr-x 7 root root 0 Nov 26 21:21 tracing/
drwxr-xr-x 3 root root 0 Nov 26 21:21 usb/
drwxr-xr-x 2 root root 0 Nov 26 21:21 virtio-ports/
-r--r--r-- 1 root root 0 Nov 26 21:21 vmmemctl
-r--r--r-- 1 root root 0 Nov 26 21:21 wakeup_sources
drwxr-xr-x 2 root root 0 Nov 26 21:21 x86/
3、cat 設備節點
執行下述命令之後會以特定格式列印目前USB匯流排上所有USB設備的信息如下:
[email protected]:/sys/kernel/debug# cat usb/devices
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 17/900 us ( 2%), #Int= 1, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 3.13
S: Manufacturer=Linux 3.13.0-32-generic uhci_hcd
S: Proct=UHCI Host Controller
S: SerialNumber=0000:02:00.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0e0f ProdID=0003 Rev= 1.03
S: Manufacturer=VMware
S: Proct=VMware Virtual USB Mouse
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=1ms
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 7
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0e0f ProdID=0002 Rev= 1.00
S: Proct=VMware Virtual USB Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6
B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 3.13
S: Manufacturer=Linux 3.13.0-32-generic ehci_hcd
S: Proct=EHCI Host Controller
S: SerialNumber=0000:02:03.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1
P: Vendor=0bda ProdID=0129 Rev=39.60
S: Manufacturer=Generic
S: Proct=USB2.0-CRW
S: SerialNumber=20100201396000000
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=06 Prot=50 Driver=rts5139
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 3 Ivl=64ms
至於信息的詳細解析可以參照 Linux源代碼中 Documentation/usb/proc_usb_info.txt 文件。現摘錄其中對該格式的詳細解釋:

| | |__Proct ID code
| |__Vendor ID code
|__Device info tag #2

String descriptor info:
S: Manufacturer=ssss
| |__Manufacturer of this device as read from the device.
| For USB host controller drivers (virtual root hubs) this may
| be omitted, or (for newer drivers) will identify the kernel
| version and the driver which provi

『伍』 usb3.0 傳輸速度最快是多少

USB3.0的最大傳輸帶寬高達5.0Gbps(500MB/s)。

請注意5Gb/s的帶寬並不是5Gb/s除以8得到的640MB/s而是採用與SATA相同的10 Bit傳輸模式(在USB2.0的基礎上新增了一對糾錯碼),因此其全速只有500MB/s。

不過,大家要注意這是理論傳輸值,如果幾台設備共用一個USB通道,主控制晶元會對每台設備可支配的帶寬進行分配、控制。

如在USB1.1中,所有設備只能共享1.5MB/s的帶寬。如果單一的設備佔用USB介面所有帶寬的話,就會給其他設備的使用帶來困難。

(5)linuxusb30擴展閱讀:

USB3.0的標准規范:

1、傳輸速率

這款新的超高速介面的實際傳輸速率大約是3.2Gbps(即320MB/S)。理論上的最高速率是5.0Gbps(即500MB/S)。

2、數據傳輸

USB3.0 引入全雙工數據傳輸。5根線路中2根用來發送數據,另2根用來接收數據,還有1根是地線。也就是說,USB 3.0可以同步全速地進行讀寫操作。以前的USB版本並不支持全雙工數據傳輸。

3、電源

USB 3.0標准要求USB3.0介面供電能力為1A,而USB 2.0為0.5A。

4、電源管理

USB 3.0 並沒有採用設備輪詢,而是採用中斷驅動協議。因此,在有中斷請求數據傳輸之前,待機設備並不耗電。簡而言之,USB 3.0支持待機、休眠和暫停等狀態。

5、物理外觀

上述的規范也會體現在USB 3.0的物理外觀上。但USB 3.0的線纜會更「厚」,這是因為USB 3.0的數據線比2.0的多了4根內部線。不過,這個插口是USB 3.0的缺陷。它包含了額外的連接設備。

6、支持系統

Windows 10、Window8.1、Window8、Windows Vista、Windows 7 SP1和Linux(以及基於Linux的安卓)都支持USB 3.0。蘋果最新發布的蘋果Mac book air和Mac book pro也支持。對於XP系統,USB 3.0可以使用,但只有USB2.0的速率。

『陸』 U盤介面3.0和2.0的區別

1、傳輸速度不同。

USB2.0的最大傳輸帶寬為480Mbps(即60MB/s)。

USB3.0的最大傳輸帶寬高達5.0Gbps(500MB/s)。

2、外觀不同。

USB2.0的介面顏色是黑色的。

3、支持的操作系統不同。

USB2.0支持Microsoft Windows 98 SE、Microsoft Windows Me、Microsoft* Windows* 2000(確保已安裝Service Pack 4)、Microsoft* Windows* XP、Microsoft windows Vista、Microsoft Windows 7、Microsoft Windows 8、Microsoft Windows Server 2003/2008/2008 R2/2012/2012 R2/2016、Microsoft Windows 10、Mac OS X、Linux內核的各版本各品牌系統。

USB3.0支持Windows 10、Window8.1、Window8、Windows Vista、Windows 7 SP1和Linux(以及基於Linux的安卓)。蘋果最新發布的蘋果Mac book air和Mac book pro也支持。對於XP系統,USB 3.0可以使用,但只有USB2.0的速率。

『柒』 linux系統中沒有USB驅動怎麼辦

要啟用 Linux USB 支持,首先進入"USB support"節並啟用"Support for USB"選項(對應模塊為usbcore.o)。盡管這個步驟相當直觀明了,但接下來的 Linux USB 設置步驟則會讓人感到糊塗。特別地,現在需要選擇用於系統的正確 USB 主控制器驅動程序。選項是"EHCI" (對應模塊為ehci-hcd.o)、"UHCI" (對應模塊為usb-uhci.o)、"UHCI (alternate driver)"和"OHCI" (對應模塊為usb-ohci.o)。這是許多人對 Linux 的 USB 開始感到困惑的地方。
要理解"EHCI"及其同類是什麼,首先要知道每塊支持插入 USB 設備的主板或 PCI 卡都需要有 USB 主控制器晶元組。這個特別的晶元組與插入系統的 USB 設備進行相互操作,並負責處理允許 USB 設備與系統其它部分通信所必需的所有低層次細節。
Linux USB 驅動程序有三種不同的 USB 主控制器選項是因為在主板和 PCI 卡上有三種不同類型的 USB 晶元。"EHCI"驅動程序設計成為實現新的高速 USB 2.0 協議的晶元提供支持。"OHCI"驅動程序用來為非 PC 系統上的(以及帶有 SiS 和 ALi 晶元組的 PC 主板上的)USB 晶元提供支持。"UHCI"驅動程序用來為大多數其它 PC 主板(包括 Intel 和 Via)上的 USB 實現提供支持。只需選擇與希望啟用的 USB 支持的類型對應的"?HCI"驅動程序即可。如有疑惑,為保險起見,可以啟用"EHCI"、"UHCI" (兩者中任選一種,它們之間沒有明顯的區別)和"OHCI"。( 趙明註:根據文檔,EHCI已經包含了UHCI和OHCI,但目前就我個人的測試,單獨加EHCI是不行的,通常我的做法是根據主板類型載入UHCI或OHCI後,再載入EHCI這樣才可以支持USB2.0設備)。
啟用了"USB support"和適當的"?HCI"USB 主控制器驅動程序後,使 USB 啟動並運行只需再進行幾個步驟。應該啟用"Preliminary USB device filesystem",然後確保啟用所有特定於將與 Linux 一起使用的實際 USB 外圍設備的驅動程序。例如,為了啟用對 USB 游戲控制器的支持,我啟用了"USB Human Interface Device (full HID) support"。我還啟用了主"Input core support" 節下的"Input core support"和"Joystick support"。
一旦用新的已啟用 USB 的內核重新引導後,若/proc/bus/usb下沒有相應USB設備信息,應輸入以下命令將 USB 設備文件系統手動掛裝到 /proc/bus/usb:
# mount -t usbdevfs none /proc/bus/usb
為了在系統引導時自動掛裝 USB 設備文件系統,請將下面一行添加到 /etc/fstab 中的 /proc 掛裝行之後:
none /proc/bus/usb usbdevfs defaults 0 0
模塊的配置方法.
在很多時候,我們的USB設備驅動並不包含在內核中。其實我們只要根據它所需要使用的模塊,逐一載入。就可以使它啟作用。
首先要確保在內核編譯時以模塊方式選擇了相應支持。這樣我們就應該可以在/lib/moles/2.4.XX目錄看到相應.o文件。在載入模塊時,我們只需要運行modprobe xxx.o就可以了(modprobe主要載入系統已經通過depmod登記過的模塊,insmod一般是針對具體.o文件進行載入)
對應USB設備下面一些模塊是關鍵的。
usbcore.o要支持usb所需要的最基礎模塊usb-uhci.o(已經提過)usb-ohci.o(已經提過)uhci.o另一個uhci驅動程序,我也不知道有什麼用,一般不要載入,會死機的ehci-hcd.o(已經提過 usb2.0)hid.oUSB人機界面設備,像滑鼠呀、鍵盤呀都需要usb-storage.oUSB存儲設備,U盤等用到
相關模塊
ide-disk.oIDE硬碟ide-scsi.o把IDE設備模擬SCSI介面scsi_mod.oSCSI支持
注意kernel config其中一項:
Probe all LUNs on each SCSI device
最好選上,要不某些同時支持多個口的讀卡器只能顯示一個。若模塊方式就要帶參數安裝或提前在/etc/moles.conf中加入以下項,來支持多個LUN。
add options scsi_mod max_scsi_luns=9
sd_mod.oSCSI硬碟sr_mod.oSCSI光碟sg.oSCSI通用支持(在某些探測U盤、SCSI探測中會用到)
常見USB設備及其配置
在Linux 2.4的內核中已經支持不下20種設備。它支持幾乎所有的通用設備如鍵盤、滑鼠、modem、列印機等,並不斷地添加廠商新的設備象數碼相機、MP3、網卡等。下面就是幾個最常見設備的介紹和使用方法:
USB滑鼠:
鍵盤和滑鼠屬於低速的輸入設備,對於已經為用戶認可的PS/2介面,USB鍵盤和USB滑鼠似乎並沒有太多更優越的地方。現在的大部分滑鼠採用了PS/2介面,不過USB介面的滑鼠也越來越多,兩者相比,各有優勢:一般來說,USB的滑鼠介面的帶寬大於PS/2滑鼠,也就是說在同樣的時間內,USB滑鼠掃描次數就要多於PS/2滑鼠,這樣在定位上USB滑鼠就更為精確;同時USB介面滑鼠的默認采樣率也比較高,達到125HZ,而PS/2介面的滑鼠僅有40HZ(Windows 9x/Me)或是60HZ(Windows NT/2000)。
對於USB設備你當然必須先插入相應的USB控制器模塊:usb-uhci.o或usb-ohci.o
modprobe usb-uhci
USB滑鼠為了使其正常工作,您必須先插入模塊usbmouse.o和mousedev.o
modprobe usbmouse
modprobe mousedev
若你把HID input layer支持和input core 支持也作為模塊方式安裝,那麼啟動hid模塊和input模塊也是必要的。
modprobe hid
modprobe input
USB鍵盤:
一般的,我們現在使用的鍵盤大多是PS/2的,USB鍵盤還比較少見,但是下來的發展,鍵盤將向USB介面靠攏。使用USB鍵盤基本上沒有太多的要求,只需在主板的BIOS設定對USB鍵盤的支持,就可以在各系統中完全無障礙的使用,而且更可以真正做到在即插即用和熱插拔使用,並能提供兩個USB連接埠:讓您可以輕易地直接將具有USB接頭的裝置接在您的鍵盤上,而非計算機的後面。
同樣你當然必須先插入相應的USB控制器模塊:usb-uhci.o或usb-ohci.o
modprobe usb-uhci
然後您還必須插入鍵盤模塊usbkbd.o,以及keybdev.o,這樣usb鍵盤才能夠正常工作。此時,運行的系統命令:
modprobe usbkbd
modprobe keybdev
同樣若你把HID input layer支持和input core 支持也作為模塊方式安裝,那麼啟動hid模塊和input模塊也是必要的。
U盤和USB讀卡器:
數碼存儲設備現在對我們來說已經是相當普遍的了。CF卡、SD卡、Memory Stick等存儲卡已經遍及我們的身邊,通常,他們的讀卡器都是USB介面的。另外,很多MP3、數碼相機也都是USB介面和計算機進行數據傳遞。更我們的U盤、USB硬碟,作為移動存儲設備,已經成為我們的必須裝備。
在Linux下這些設備通常都是以一種叫做usb-storage的方式進行驅動。要使用他們必須載入此模塊
modprobe usb-storage
當然,usbcore.o 和usb-uhci.o或usb-ohci也肯定是不可缺少的。另外,若你系統中SCSI支持也是模塊方式,那麼下面的模塊也要載入
modprobe scsi_mod
modprobe sd_mod
在載入完這些模塊後,我們插入U盤或存儲卡,就會發現系統中多了一個SCSI硬碟,通過正確地mount它,就可以使用了(SCSI硬碟一般為/dev/sd?,可參照文章後面的常見問題解答)。
mount /dev/sda1 /mnt
Linux支持的其他USB設備。
MODEM--(比較常見) 網路設備 攝像頭--(比較常見)例如ov511.o 聯機線--可以讓你的兩台電腦用USB線實現網路功能。usbnet.o 顯示器--(我沒見過) 游戲桿 電視盒--(比較常見) 手寫板--(比較常見) 掃描儀--(比較常見) 刻錄機--(比較常見) 列印機--(比較常見)
注意:
上面所說的每個驅動模塊,並不是都要手動載入,有很多系統會在啟動或你的應用需要時自動載入的,寫明這些模塊,是便於你在不能夠使用USB設備時,可以自行檢查。只要用lsmod確保以上模塊已經被系統載入,你的設備就應該可以正常工作了。當然注意有些模塊已經以內核方式在kernel啟動時存在了(這些模塊文件在/lib/moles/2.4.XX中是找不到的)。

輸入相關命令

『捌』 為什麼linux下讀寫移動硬碟速度比較慢

在Ubuntu系統下格式化下硬碟就好了。

『玖』 usb3.0是什麼

USB3.0
英特爾公司(Intel)和業界領先的公司一起攜手組建了USB 3.0推廣組,旨在開發速度超過當今10倍的超高效USB互聯技術。該技術是由英特爾,以及惠普(HP)、NEC、NXP半導體以及德州儀器(Texas Instruments)等公司共同開發的,應用領域包括個人計算機、消費及移動類產品的快速同步即時傳輸。隨著數字媒體的日益普及以及傳輸文件的不斷增大——甚至超過25GB,快速同步即時傳輸已經成為必要的性能需求。

USB 3.0 具有後向兼容標准,並兼具傳統USB技術的易用性和即插即用功能。該技術的目標是推出比目前連接水平快10倍以上的產品,採用與有線USB相同的架構。除對USB 3.0規格進行優化以實現更低的能耗和更高的協議效率之外,USB 3.0 的埠和線纜能夠實現向後兼容,以及支持未來的光纖傳輸。
「從邏輯上說USB 3.0將成為下一代最普及的個人電腦有線互聯方式」,英特爾技術戰略師Jeff Ravencraft說道,「數字時代需要高速的性能和可靠的互聯來實現日常生活中龐大數據量的傳輸。USB 3.0可以很好地應對這一挑戰,並繼續提供用戶已習慣並繼續期待的USB易用性體驗。」
英特爾公司成立USB 3.0推廣組之初就希望USB設計協會(USB-IF)可以作為USB 3.0規格的行業協會。完整的USB 3.0規格有望於2008年上半年推出,USB 3.0初步將採用離散硅的形式。
USB 3.0推廣組,包括惠普、英特爾、NEC、NXP半導體以及德州儀器,致力於保護已有USB設備驅動器基礎設施和投資、USB的外觀以及方便使用的特性,同時繼續發揚USB這種卓越技術的功能。
「我們對USB 2.0以及無線USB技術的支持彰顯了惠普致力於為客戶提供可靠的外圍設備互聯方式」,惠普公司負責列印成像與消費市場部門(Consumer Inkjet Solutions)的副總裁Phil Schultz說,「現在藉助USB 3.0,我們將為客戶創造列印機、數碼相機及其他外圍設備與個人電腦互聯的更佳體驗。」
「英特爾在兩代USB技術的開發和採用方面均走於行業前列,USB現在已經成為最受歡迎的計算和手持電子設備外圍介面」,英特爾高級副總裁兼數字企業事業部總經理帕特·基辛格(Patrick Gelsinger)表示,「由於市場發展支持客戶對龐大數據進行存儲和傳輸的需求,我們希望開發出第三代USB技術,可以利用現有的USB界面並對其進行優化來滿足這些需求。」
「自首次安裝有線USB以來,NEC一直都是USB技術的支持者」,NEC電子SoC系統部門總經理Katsuhiko Itagaki說道,「現在是時候進一步發展這個業已成功的互聯介面以滿足市場對龐大數據傳輸速度的更高需求,從而盡量縮短用戶等待的時間。」
「NXP很高興與其它頂級公司攜手推進世界領先的互聯技術來滿足下一代外圍設備的需求」,NXP半導體商業互聯娛樂(Business Line Connected Entertainment)戰略和業務發展部總監Pierre-Yves Couteau說,「作為USB半導體解決方案的領先提供商,NXP致力於推動超高速USB的標准化和應用。」
「隨著高速USB在個人計算、消費電子以及移動等各種細分市場內的普及,我們預計USB 3.0將迅速取代USB2.0埠成為高帶寬應用領域的事實標准」,德州儀器Worldwide ASIC副總裁Greg Hantak表示,「德州儀器非常興奮USB 3.0的卓越性能將進一步拓展USB的應用領域並為用戶帶來更佳的體驗。」
關於USB 設計學會 (Universal Serial Bus Implementers Forum)
非盈利組織USB設計論壇(USB-IF)成立的宗旨是為USB技術的發展和普及提供支持。通過其標識和認證項目,USB-IF為高質量、兼容性USB設備的開發提供協助,USB-IF還大力宣傳USB的優勢以及經其認證的產品的質量。
[編輯本段]USB 3.0史上最全面解讀

[編輯本段]Δ 什麼是USB 3.0?

USB 3.0是最新的USB規范,該規范由Intel等大公司發起。目前,USB 2.0已經得到了PC廠商普遍認可,介面更成為了硬體廠商介面必備,看看家裡常用的主板就清楚了。
隨著硬體設備的不斷發展進步,更高的傳輸速度和更大的帶寬越來越被人們所重視。每秒2/300M的傳輸速度將會越來越難以讓人們安於現狀了。2007年,Intel在IDF上把SuperSpeed
USB 3.0標識圖
USB作為了一項重要的話題拿出來展示。到了2008年11月17日,USB 3.0標准才算是正式完成並公開發布。
USB 3.0介面尺寸標准
同時新的USB執行組織(USB Implementers Forum,USB-IF)也正式開始接管和運作該規范,公布了詳細的技術文檔,以便業界的硬體廠商們能夠依此來研發USB 3.0相關的產品。
USB 3.0簡要規范如下:
·提供了更高的每秒4.8Gb傳輸速度
·對需要更大電力支持的設備提供了更好的支撐,最大化了匯流排的電力供應
·增加了新的電源管理職能
·全雙工數據通信,提供了更快的傳輸速度
·向下兼容USB 2.0設備
[編輯本段]Δ 比USB 2.0快么?

USB 2.0為各式各樣的設備以及應用提供了充足的帶寬,但是,隨著高清視頻、TB(1024GB)級存儲設備、高達千兆像素數碼相機、大容量的手機以及便攜媒體播放器的出現,更高的帶寬和傳輸速度就成為了必須。
雙向傳輸你說快不快?
每秒480Mb的傳輸速度可能都已經不算快了,更何況目前沒有哪個USB 2.0設備能夠達到這個理論上的最高限速。在實際應用中,能夠達到每秒320Mb的平均速度就已經很不錯了。
同樣,其實USB 3.0同樣達不到4.8Gb的理論值,但,哪怕只能達到理論值的5成,那也是接近於USB 2.0的10倍了。
[編輯本段]Δ USB 3.0是如何做到這么快的?

USB 3.0之所以有「超速」的表現,完全得益於技術的改進。相比目前的USB 2.0介面,USB 3.0增加了更多並行模式的物理匯流排。
Micro B介面
讀者朋友可以拿起你身邊的一根USB線,看看介面部分。在原有4線結構(電源,地線,2對數據)的基礎上,USB 3.0再增加了4條線路,用於接收和傳輸信號。因此不管是線纜內還是介面上,總共有8條線路。如下圖:
USB 3.0規范數據傳輸線纜內部結構
USB3.0線
USB 3.0線纜實物照片
正是額外增加的4條(2對)線路提供了「SuperSpeed USB」所需帶寬的支持,得以實現「超速」。顯然在USB 2.0上的2條(1對)線路,是不夠用的。
此外,在信號傳輸的方法上仍然採用主機控制的方式,不過改為了非同步傳輸。USB 3.0利用了雙向數據傳輸模式,而不再是USB 2.0時代的半雙工模式。簡單說,數據只需要著一個方向流動就可以了,簡化了等待引起的時間消耗。
其實USB 3.0並沒有採取什麼我們鮮有聽聞的高深技術,卻在理論上提升了10倍的帶寬。也因此更具親和力和友好性,一旦SuperSpeed USB產品問世,可以讓更多的人輕松接受並且做出更出色的定製化產品。
USB 3.0還有哪些更先進的地方?
A型介面
「SuperSpeed USB」改進遠不止在傳輸速率方面的提升。在USB 3.0中,設備和電腦主機之間如何更加融洽的配合,也被當作了一項重點研究的方向。在繼承USB 2.0核心架構的基礎上,如何利用雙匯流排模式的優勢,如何讓用戶能夠直接的體驗到USB 3.0比USB 2.0的先進,成為了重點:
·需要時能提供更多電力
USB 3.0能夠提供50%—80%更多的電力支持那些需要更多電能驅動的設備,而那些通過USB來充電的設備,則預示著能夠更快的完成充電。
新Powered-B介面由額外的2條線路組成,提供了高達1000毫安的電力支持。完全可以驅動無線USB適配器,而擺脫了傳統USB適配器靠線纜連接的必要。通常有線USB設備需要連接到集線器或者是電腦本身上,而高電能支持下,就不需要在有「線」存在了。
復合介面
·不需要時就自動減少耗電
轉換到USB 3.0,功耗也是要考慮的很重要的一個問題,因此有效的電源管理就很必要,可以保證設備的空閑的時候減少電力消耗。
大量的數據流傳輸需要更快的性能支持,同時傳輸的時候,空閑時設備可以轉入到低功耗狀態。甚至可以空下來去接收其他的指令,完成其他動作。
多長才是好?
其實,在USB 3.0中也並不是所有的東西都更新換代了,比如線纜的長度。當在某些應用中需要盡可能高的吞吐量的時候,往往線纜依舊會成為瓶頸。雖然在USB 3.0規范中,沒有明確指定USB線纜有多長,但是電纜材質和信號質量還是影響了傳輸的效果。因此在傳輸數百兆大數據流的時候,線纜長度最好不要超過3米。
線纜斷面
另外,一些支持「SuperSpeed USB」的硬體產品,例如集線器(hub)可能要比USB 2.0的貴很多,這就像是現在主動供電集線器和被動供電的一個道理。因為一個真正意義上的「SuperSpeed hub」應該具備2類介面,一個用來扮演真正「SuperSpeed hub」的角色,另外一個則要扮演普通高速hub的角色。
網路上現在有一些非官方的言論談到了USB 3.0可以使用光纖,其實這正是USB規范組織正在考慮的問題,也許會在下一個修正版本中推出,也許會讓一些有能力的第三方公司來嘗試一下。
[編輯本段]Δ 我現有的外設能夠正常工作嗎?

好消息是,USB 3.0從規劃之初就開始謹慎的希望和USB 2.0共存。
USB 3.0採用新的物理介面和新的電纜來保證和新設備有更高速的連接能力,但新介面保持了和4線USB 2.0一樣的規格,完全可以接入到現有的USB介面中使用。而只有設備本身硬體支持「SuperSpeed USB」,5個獨立線組才能實現USB 3.0的真正意義,完成接收和發送數據的作用。
新USB 3.0介面和USB 2.0硬體完全兼容
[編輯本段]Δ USB 3.0產品什麼時候面市?

USB 3.0相關的線纜,介面以及集線器等產品要在2009年下半年稍晚的時候推出,而支持USB 3.0的消費型設備也會緊隨其後。而批量的外設產品推出則要到2010年。
來自微軟的消息是,微軟會從2010年開始逐步的推進USB 3.0設備的研發工作。
之所以目前沒有大批量的廠商跟進,主要原因是開發相關USB 3.0的匯流排控制晶元以及設備產品需要時間,另外廠商也需要等待USB 3.0相關規范最後殺青,廠商才能放心的去進行設計。
從原型產品到評估版再到最後的開發版,拿到廠商手裡再去做研發已經耽誤了一定的時間,因此不會看到第一版的規范一出來就出現一夜之間普及的態勢。市場的接受和採納度還是需要逐步展開的。
[編輯本段]Δ USB 2.0又將何去何從?

至少未來5年我們都不會看到USB 2.0相關產品退出市場。
對帶寬要求較高的設備,如數碼相機、大容量移動硬碟等產品,將會因為需求而率先向「SuperSpeed USB」過渡。但是因為成本的原因,業界還要看產量和市場需求。因此也同時限制了USB 3.0在高端市場的普及。
2010年,主板將首先會向USB 3.0介面轉變,「SuperSpeed」規范的介面將在新PC上成為標配。同時,設備廠商也就不得以的被動的向USB 3.0轉化。
最後,USB 2.0將會和USB 1.1一樣逐步的被淘汰。不過,在現在甚至是可以預見的將來,USB 2.0相關設備依舊觸手可及。
[編輯本段]Δ 什麼操作系統能支持USB 3.0?

在2008年11月舉行的,「SuperSpeed」開發者大會上,微軟宣布Windows 7能夠提供對USB 3.0的支持,但不是目前的版本,而是稍後放出的Service Pack補丁或者一些特定的升級中。不僅僅是Windows 7,甚至Vista也有可能支持「SuperSpeed」,當然只要微軟願意。至少目前來看,微軟的很多合作夥伴還是希望Vista能夠支持USB 3.0的。
至於Windows XP目前還不得而知,XP畢竟已經是7年前的產物了,因此,支持與否恐怕就不那麼重要了。
Windows 7支持
開源系統方面, Linux明確的表示支持USB 3.0,前提是擴展主控制器界面(xHCI)規范正式發布。目前非公開版本號為0.95,還是一個待定的草案。
蘋果方面,按照「慣例」依舊在MacOS X是否支持「SuperSpeed USB」問題上保持緘默。不過,一旦USB 3.0兌現了如同USB 2.0一樣的「即插即用」,市場上大量的「SuperSpeed」設備就會如同雨後春筍一般,到時,蘋果怎又會不附庸這個潮流和趨勢呢?
至於對Firewire信號是否存在干擾問題,現在還不得而知,但是不管怎樣,蘋果需要去支持「SuperSpeed」,如果所有人都看好這個介面標準的話。
起初,在USB 3.0的支持方面,不管是操作系統還是設備,肯定不會一步到位。初期會簡單的在小型設備上試用,然後存在這樣那樣的問題,並且還不會全面發揮USB 3.0的優勢。不過,隨著時間的推移,這些都會逐步的完善起來。
[編輯本段]Δ USB 3.0能夠帶動什麼樣的應用?

簡單說,所有的高速USB 2.0設備拿到USB 3.0上來只能會有更好的表現,至少不會更加的糟糕。
這些設備包括:
·外置硬碟 - 在傳輸速度上至少有兩倍的提升,更不用擔心供電不足的問題了。
·高解析度的網路攝像頭、視頻監視器
·視頻顯示器,例如採用DisplayLink USB視頻技術的產品
·USB介面的數碼相機、數碼攝像機
·藍光光碟機等
另外,我們最常用的讀卡器設備,尤其是當設備中同時使用多種類型的快閃記憶體卡,或者是讀卡器連接到USB Hub上,而USB Hub上又有多個讀卡器的時候,那種傳輸速度簡直是難以忍受的折磨。USB 3.0則提供了更多的空間,來解決這樣的問題,提供5-10倍的帶寬不是問題。
還有一點是可以預見的,理論上每秒4.8Gb的傳輸速度,足以讓USB侵入到以前從不敢涉獵的范圍,例如磁碟陣列系統。
[編輯本段]Δ USB 3.0的競爭對手又如何呢?

· Firewire
提到競爭對手,就還得說說「Firewire」(我們熟知的IEEE 1394,當然這種說法不正確)。不管是Firewire 400還是800,都最後都沒有普及過USB 2.0。蘋果是發起IEEE 1394「Firewire」標準的廠商,有趣的是,蘋果在不斷的將Firewire從最初的iPod到後來的主流MacBook上一點一點的拿掉。
2007底,1394同業公會宣布了Firewire 3200,稱為S3200。是在現有的Firewire 800標准基礎上建立的,和Firewire 800採用了相同的介面和線纜。但是,S3200本身自亂了陣腳,升級設備造成了混亂,以至於到今天也沒有能夠得到更多的推進,即便是保有優勢的視頻影像市場。
Firewire介面
Firewire的優勢在於高效率,因為採用了點對點,全雙工模式傳輸數據。數據吞吐量完全要高於USB 2.0,並且實際傳輸速度非常接近其每秒800Mb的理論值。在數據持續傳輸測試中,Firewire 800能夠提供平均90MB/s的速度,而USB 2.0隻有40MB/s。
而至於S3200究竟會產生什麼樣的影響還需要觀察。
· eSATA
eSATA在2004年面市,作為一種消費型介面和USB 2.0以及Firewire方案以及來競爭外置存儲市場。算是比較成功的解決了瓶頸問題,並且發揮了硬碟本身的性能優勢。eSATA支持每秒3.2Gb的傳輸速率,這遠超達到了硬碟的傳輸極限。比USB 2.0要快,也比Firewire 800有優勢。
eSATA介面(右)
eSATA從本身看不具備缺點,然而2米的線纜長度制約了其更深遠的發展,並且初期其本身是不能通過匯流排直接向eSATA設備供電的。最近幾年,eSATA開始侵蝕USB以及Firewire的市場份額,特別是在數據存儲領域。坦誠的講,其應用范圍還有一定限制,並且在便攜市場里並不方便。
· ExpressCard 2.0
ExpressCard 2.0基本上和USB 3.0規格同期發布,主要是承諾提升ExpressCard現有標準的傳輸速度。和PCI Express以及USB 3.0規格緊密,ExpressCard 2.0提供了多方面的應用模式,用來解決目前大吞吐量的數據傳輸瓶頸。和ExpressCard保持向下兼容,將會和USB 3.0並存。
ExpressCard 2.0擴展卡
Δ 綜述:
瓶頸和競爭,催生了USB 3.0的誕生,也正好迎合了用戶的口味。更加吸引大眾的,無外乎10倍於USB 2.0的傳輸速度和向下兼容性。擔心系統支持我看沒有必要,好的東西自然會有人來支持,畢竟是互利的好事。
在USB 3.0下,依託8條線路,顯然現有設備將會有一次傳輸速度上的再飛躍,這是更加值得期待的。2009年下半年,保守估計年底的時候,正式的USB 3.0線纜和設備恐怕就會出現。當然也不要期盼在2010年出現龍卷風一樣的橫掃狀況,還是得慢慢來。想取代USB 2.0不是那麼容易,因為誰又會把自己數千元的數碼設備,甚至萬元的筆記本電腦直接丟進垃圾箱呢。
[編輯本段]usb 3.0標准簡介

所謂USB 3.0,就是新一代的USB介面,特點是傳輸速率非常快,理論上能達到4.8Gbps,比現在的480Mbps的High Speed USB(簡稱為USB 2.0)快10倍,外形和現在的USB介面基本一致,能兼容USB 2.0和USB 1.1設備。
名叫USB 3.0的新一代介面比現在的USB 2.0快十倍,全面超越IEEE 1394和eSATA的速度足以讓它傲視所有「非主流」介面的移動設備,它會成為日後王者中的王者嗎?其他介面會因此而消失嗎?
USB 3.0:為什麼會這么快?
在MP3、MP4、DC、DV、列印機、掃描儀、快閃記憶體、移動硬碟及主板等設備上,USB早已是最常見的標准傳輸介面。盡管主流USB 2.0標準的理論數據傳輸率達到了每秒480Mbps,但依然無法滿足用戶的需求,因為隨著數字媒體的日益普及,高清視頻、游戲程序、數碼照片的容量動輒幾GB,大容量快閃記憶體、MP4及「海量」移動硬碟等USB設備不斷增加,用戶隨時會遇到同時傳輸幾GB甚至幾十GB的大文件。如果依然沿用USB 2.0標准,它的速度真的太慢了。比如在向大容量的MP3里傳輸音樂時,往往需要花費幾分鍾時間,如果要向移動硬碟中傳輸更大容量的文件,有[1]時需要花費幾十分鍾,以25GB容量的高清視頻傳輸為例,USB 2.0需要10多分鍾,而只要設備支持的話,USB 3.0理論上只需70秒左右。 時間是如此的寶貴,很多用戶不喜歡在傳輸文件時等待很長的時間,等待總是讓人心煩的,快速同步即時傳輸已經成為必要的性能需求。為此,Intel聯合NEC、NXP半導體、惠普、微軟、德州儀器等巨頭推出了USB 3.0標准,USB 3.0採用一種新的物理層——其中用兩個信道把數據傳輸和確認過程分離,因而達到了4.8Gbps的數據傳輸速度。為了取代USB 2.0所採用的輪流檢測和廣播機制,USB 3.0將採用一種封包路由技術,並且僅允許終端設備有數據要發送時才進行傳輸。新的鏈接標准還將讓每一個組件支持多種數據流,並且每一個數據流都能夠維持獨立的優先順序,該功能可在視訊傳輸過程中用來終止造成抖動的干擾,數據流的傳輸機制也使固有的指令隊列成為可能,因而使USB 3.0介面的數據傳輸更為優化。
低成本:簡單易實現、兼容性依然強大
與USB 1.1升級到USB 2.0一樣,USB 3.0仍然採用USB 2.0相同的架構,向下兼容先前的即插即用USB版本,不管是USB 2.0還是USB 1.1設備,都能夠與USB 3.0介面的設備相兼容。從介面結構來看,USB 2.0線纜使用了4條線的封裝設計,所以USB 2.0介面使用了4個金屬觸點,它們分別為+5V取電、數據-、數據+、GND接地。然而USB 3.0並非廣播匯流排,它在包頭中採用發送列表區段來進行發包,上行介面提供分散式的USB 3.0互聯,下行介面支持USB 2.0設備,從而用簡單的方法實現高速傳輸和兼容性並舉的雙重好處。 因而從USB 3.0介面來看,它除了具備USB 2.0介面的4個金屬觸點外,在內部增添了5個較小的新觸點。同時,除了使用了銅作為傳輸介質之外,USB 3.0的介面和線纜還可以支持光纖傳輸功能,光纖輸出的傳輸速度大家是有目共睹的。據了解,使用光纖連接之後,USB 3.0的速度可以達到USB 2.0的20倍甚至30倍。無疑,USB 3.0標準的最終目的並不僅局限於4.8Gbps的數據傳輸率,而是希望未來進一步突破這個極限速度,隨著光纖導線的全面應用,USB 3.0將得到更高的傳輸速度,未來在主流產品上的擴展應用將進一步展現。比如實現USB高速組網或廣播電視節目信號在PC上的傳輸。
USB 3.0介面的針腳定義
供電充足:精簡「大設備」連接線
我們知道,很多USB設備在使用時,並不需要獨立使用供電電源,插入主板USB介面即可直接使用,這是因為USB介面具備了電流輸出功能,然而遺憾的是,由於USB 2.0介面技術上的限制,它最大隻能提供500mA電流輸出,這只能滿足那些低功耗USB移動設備使用(如MP3、快閃記憶體、滑鼠、鍵盤等),對於功耗高一些的USB設備,比如移動硬碟、USB刻錄機、USB電視盒等,500mA電流無法滿足設備在高負荷下內部電機的正常運轉,所以如果僅使用一個USB介面,在功耗大的時候使用時會出現各種故障,比如移動硬碟由於供電不足造成無法正常傳輸大容量文件,外置USB刻錄機無法進行正常刻錄。 為此,高功耗USB設備往往需要使用輔助電源才能正常工作,比如增加一個輔助的USB線來專門供電,或者獨立使用供電電源。這樣不僅增加了成本,更麻煩的是因為增加了供電線纜或電源適配器,USB設備的便捷性和易用性大打折扣。USB 3.0標準的出現可以解決因USB 2.0供電不足帶來的問題。據目前官方透露的資料來看,下一代USB 3.0介面將有望達到1A以上的供電電流,而且USB 3.0介面經過了優化設計(如採用銅導線),它的傳輸效率更快,還具備了自身能耗降低功能,即使是像USB電視卡、USB刻錄機、大容量移動硬碟這類高功耗USB設備,也可以直接連接到USB 3.0介面上使用,而不用擔心供電不足了,USB設備的便捷性和易用性也大大提高了。
USB 3.0線纜的接頭
巨頭推廣:加快USB 3.0普及步伐 USB是目前PC、數碼電子產品上,應用得最廣泛、普及程度最高的傳輸介面。USB標准經過了多年的發展,已經被廣大消費者認可,現在大家隨身拿出一款數碼產品,任何一台電腦,都可以輕易找到USB介面。加上USB 3.0擁有在傳輸速度、擴展能力上的眾多優勢,數字時代需要高速的性能和可靠的互聯來實現日常生活中龐大數據量的傳輸,USB 3.0可以很好地應對這一挑戰,它必然會成為電腦、電腦外設和數碼設備上主流傳輸介面。按照以往的經驗,USB 3.0由Intel、NEC、NXP半導體、惠普、微軟、德州儀器等巨頭共同推廣,不管是技術實力、推廣效果,還是第三方晶元商的支持力度,USB 3.0未來的普及已經不是問題。據了解,完整的USB 3.0規格已經開發完畢,USB 3.0的控制晶元初步將採用離散硅的形式,USB 3.0晶元有望於2008年上半年推出,也就是說,預計2008年上半年的時候,USB設備會陸續在市場出現,新一代主板晶元組也將開始集成USB 3.0介面,USB 3.0預計在2009年開始陸續普及,讓我們拭目以待。 技術小貼士:USB介面廣泛應用於各種IT產品上,但PC、筆記本、消費數碼等產品的發展趨勢卻是無線,比如藍牙技術能夠在10米的范圍內實現單點對多點的無線數據和聲音傳輸,其數據傳輸帶寬可達1Mbps,盡管它現在的傳輸速率相比USB 3.0差距巨大,但仍有發展的空間,由於功耗低、應用簡單等特點,很多手機、筆記本等設備廣泛採用了藍牙介面,有了高傳輸率的無線設備,相信誰也不希望隨身攜帶一根線纜,進行連接後才能使用。而Wi-Fi更是以遠距離無線傳輸的優勢,逐漸成為手機、MP4、筆記本甚至DV機、列印機等設備上的傳輸介面。雖然現在USB佔主導地位,但從長遠看來,只有無線USB技術才能使USB坐穩頭把交椅。

『拾』 如何在嵌入式linux開發板上使用USB鍵盤

首先usb鍵盤驅動的源代碼位於一下目錄:
drivers/usb/input/usbkbd.c
將usb鍵盤驅動編譯進內核:
#make menuconfig
Device Drivers--->USB support---->USB HIDBP Keyboard (simple Boot) support
(注意:有可能默認設置USB鍵盤驅動是不可見的,需修改當前目錄下的Kconfig文件,在此不做詳細介紹,Kconfig語法有待進一步熟悉:))
保存設置後,重新編譯內核:
#source setenv
#make uImage
uImage生成後位於目錄:arch/arm/boot/uImage;
(或者直接將usb鍵盤驅動編譯為驅動模塊,進行載入也可);

啟動系統後,確定usb鍵盤載入到了那個設備文件,一般為/dev/input/event0設備,可通過cat命令進行確認:
#cat /dev/input/event0
操作usb鍵盤,會有亂碼出現;
然後應用層用這個程序來獲取usb鍵盤的輸入:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/input.h>
struct input_event buff;
int fd;
int read_nu;
int main(int argc, char *argv[])
{
fd = open("/dev/input/event0", O_RDONLY);
if (fd < 0)
{
perror("can not open device usbkeyboard!");
exit(1);
}
int i = 0;
printf("--fd:%d--\n",fd);
while(1)
{
while(read(fd,&buff,sizeof(struct input_event))==0)
{
;
}
//if(buff.code > 40)
printf("type:%d code:%d value:%d\n",buff.type,buff.code,buff.value);

//#if 0
//i++;
//if(i > 12)
//{
//break;
//}
//#endif
}

close(fd);
return 1;
}
運行程序後,按下A鍵,可見如下輸出:
--fd:3--
type:1 code:30 value:1
type:0 code:0 value:0

閱讀全文

與linuxusb30相關的資料

熱點內容
程序員用得到數字區嗎 瀏覽:174
python求商 瀏覽:477
ipad能用c語言編譯器嗎 瀏覽:561
軟泥解壓球最新版 瀏覽:998
4萬程序員辭職創業 瀏覽:759
thinkingphp 瀏覽:597
安卓相冊移動文件夾 瀏覽:6
耳朵清潔解壓聲控99的人都睡得著 瀏覽:205
叉車出租網站源碼 瀏覽:874
共享單車的app是什麼 瀏覽:408
不帶gui的伺服器什麼意思 瀏覽:373
金剛經及PDF 瀏覽:102
php中冒號 瀏覽:358
php5432 瀏覽:352
命令在哪使用 瀏覽:172
php獲取網頁元素 瀏覽:708
為什麼需要硬體驅動編譯 瀏覽:885
pm編程怎樣看導柱孔對不對稱 瀏覽:138
農業大學選課找不到伺服器怎麼辦 瀏覽:659
路由配置網關命令 瀏覽:935