Küçük bir gömülü cihaz üzerinde geliştiriyoruz. Bu cihaz bize OpenEmbedded linux kullanan bir gumstix overo kurulu. Gelişmemizi neredeyse tamamen tamamladık ve çözemediğimiz en tuhaf böceklerle karşılaştık.
Işık kaynağı için USB2.0 Bağlantısı ve harici güç kaynağı olan bir USB Aygıtımız (Spektrofotometre) var . Tipik davranış, güç kaynağını ve ardından ana bilgisayara USB bağlantısını takmanızdır. USB bağlantısı cihaz tarafından algılandığında, cihaz açılır ve ışık kaynağını ve fanı etkinleştirir. Cihaz daha sonra ana sistem tarafından kullanılabilir.
Sorun, eğer Gumstix'i açmadan önce cihaz Gumstix'e takılırsa, USB cihazının sistem tarafından görünmediği (ve dolayısıyla açılmadığı). Normal bir durumda, bağlantı USB kablosuna takarak başlatıldığında, spektro kendisini açar ve sisteme uygun hale gelir (bu genellikle "lsusb" ile görülebilir). Bunların hiçbiri olmuyor. "Lsusb" ile algılanan bir cihaz yok ve görebileceğimiz herhangi bir dmesg hatası yok. Cihaz takılı değil gibi.
Cihaz gelmez ortaya çıkıp USB kablosunu prizden eğer iyi çalışır ve sistem yeniden başlatıldığında bir kez geri takın. USB veriyolunda açılır ve açılır ve sürücümüzle erişebiliriz.
Başka bir masaüstünde veya dizüstü bilgisayarda, spektrometreyi taktığımızda ana sistemin açık veya kapalı olması önemli değildir. Bu davranış "normal" olarak düşündüğüm şeydir - usb sisteminin önyükleme sırasında sonlandırılmış ve başlatılmış olması ve usb aygıtlarının çevrimiçi olması. Başka bir deyişle, sistem başlatıldıktan sonra usb aygıtını taktığımız sürece sistemimiz tamamen işlevseldir. Maalesef bu, nihai ürünümüzde mümkün değil - her şey bir anda oluyor.
Ek Bilgi: 1) Sistem kapatıldığında sisteme bağlı bir flash sürücü denedik. Sistemi başlatmak, beklendiği gibi flash sürücüyü çevrimiçi duruma getirir 2) Spektro veya usb cihazıyla ilgili herhangi bir mesaj yoktur (dmesg kullanarak). "lsusb" yalnızca USB hub'larını / denetleyicilerini listeler. Tam anlamıyla cihaz yokmuş ve takılı değil gibi. 3) Gumstix'ten yepyeni bir görüntü ve geçen seneden daha eski bir görüntü denedik. Her iki görüntünün de bu sorunu var. Bu sorun kullandığımız 3 gumstix cihazının hepsinde var.
Bir önerisi olan var mı? Söyleyebileceğim kadarıyla, bir usb aygıtı "çıkarma" ve "takma" tam bir emülasyonu olan usb sisteminin tam bir "yeniden başlatılması" yapmak gerçekten mümkün değil. Ne olduğunu hissediyorum, usb veriyolunda usb el sıkışmasını tetikleyecek bir başlangıç probu bulunmadığını hissediyorum, ancak bu bir şekilde spectro'ya özgüdür. Bu bir çekirdek sorunu veya en azından çekirdeğin usb alt sistemini başlatmasıyla ilgili bir sorun gibi görünüyor. Gerçekten emin değilim.
Gumstix posta listesini denedim, ancak bu konuyu daha önce görmüş hiç kimse yok gibi görünüyor. Bakmaya nereden başlayacağınızla ilgili herhangi bir tavsiye veya öneri harika olurdu.
Teşekkür ederim! Blaine
output etc.
$ uname -a
Linux overo 2.6.33 #1 Tue Apr 27 08:35:38 PDT 2010 armv7l GNU/Linux
When the system is up and running and spectro is plugged in (working as intended), this is lsusb:
Bus 001 Device 116: ID 2457:1022
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2457
idProduct 0x1022
bcdDevice 0.02
iManufacturer 1 USB4000 1.01.11
iProduct 2 Ocean Optics USB4000
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 400mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
dmesg output:
usb usb1: usb auto-resume
hub 1-0:1.0: hub_resume
usb usb2: usb auto-resume
ehci-omap ehci-omap.0: resume root hub
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
hub 2-0:1.0: hub_resume
hub 2-0:1.0: state 7 ports 3 chg 0000 evt 0000
hub 1-0:1.0: hub_suspend
usb usb1: bus auto-suspend
hub 2-0:1.0: hub_suspend
usb usb2: bus auto-suspend
ehci-omap ehci-omap.0: suspend root hub
usb usb2: usb resume
ehci-omap ehci-omap.0: resume root hub
hub 2-0:1.0: hub_resume
ehci-omap ehci-omap.0: GetStatus port 2 status 001803 POWER sig=j CSC CONNECT
hub 2-0:1.0: port 2: status 0501 change 0001
hub 2-0:1.0: state 7 ports 3 chg 0004 evt 0000
hub 2-0:1.0: port 2, status 0501, change 0000, 480 Mb/s
ehci-omap ehci-omap.0: port 2 high speed
ehci-omap ehci-omap.0: GetStatus port 2 status 001005 POWER sig=se0 PE CONNECT
usb 2-2: new high speed USB device using ehci-omap and address 2
ehci-omap ehci-omap.0: port 2 high speed
ehci-omap ehci-omap.0: GetStatus port 2 status 001005 POWER sig=se0 PE CONNECT
usb 2-2: default language 0x0409
usb 2-2: udev 2, busnum 2, minor = 129
usb 2-2: New USB device found, idVendor=2457, idProduct=1022
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-2: Product: Ocean Optics USB4000
usb 2-2: Manufacturer: USB4000 1.01.11
usb 2-2: uevent
usb 2-2: usb_probe_device
usb 2-2: configuration #1 chosen from 1 choice
usb 2-2: uevent
usb 2-2: adding 2-2:1.0 (config #1, interface 0)
usb 2-2:1.0: uevent
drivers/usb/core/inode.c: creating file '002'
dmesg has nothing to say, and lusb simply lists nothing else but the two default usb controllers / hubs if we plug the device in before the system is turned on.