导航:首页 > 操作系统 > 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设备在总线上的信息
root@ubuntu:/sys/kernel/debug# cd /sys/bus/usb/devices
root@ubuntu:/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设备的详细信息
root@ubuntu:/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 路径下
root@ubuntu:mount -t debugfs none /sys/kernel/debug
2、执行上述步骤之后,在 /sys/kernel/debug 就会生成如下的文件
root@ubuntu:/sys/bus/usb/devices# cd /sys/kernel/debug/
root@ubuntu:/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设备的信息如下:
root@ubuntu:/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相关的资料

热点内容
一对夫妻的电影叫什么 浏览:946
应用加密了如何解密 浏览:577
编程代码比赛平台 浏览:726
穿越在很多电影的小说 浏览:524
angularjs数据加密 浏览:523
k66单片机 浏览:735
鸿蒙文件夹如何自动归类 浏览:666
慧医通医生端安卓手机怎么下载 浏览:699
电影放到安卓手机哪个文件夹 浏览:192
VT命令 浏览:590
ftp链接到linux服务器地址 浏览:479
美国大尺度青春电影 浏览:21
李采谭演医生的电影名称 浏览:409
移动办公app第一次登录服务器地址 浏览:239
日本功夫电影 浏览:57
文件包文件夹 浏览:592
主角每次死亡都会变成另一个人 浏览:807
浪潮服务器如何调整凭证的尺寸 浏览:908
监控源码怎么打开 浏览:597
88影视打不开了 浏览:515