Witam, próbuję uruchomić USB na Armie LPC2148. Mam zestaw ZL9ARM i środowisko Exclipse z gcc-arm-elf. Dopiero zaczynam z C i z Arm. Zestaw troszkę zmieniłem aby dostosować go do roziązańz wzorcowego dla LPCUSB modułu Quickstart Board (zmiana na liniach P026 i P031). Z możliwych urządzeń ( hid, audio, mass storage i custom) wybrałem custom. Po załadowaniu custom.hex dostaję taki wynik z programu testlibusb-win.exe:
DLL version: 0.1.10.1
> Driver version: 0.1.10.1
>
> bus/device idVendor/idProduct
> bus-0/\\.\libusb0-0000--0xffff-0x0004 FFFF/0004
> - Manufacturer : LPCUSB
> - Product : MemoryAccess
> - Serial Number: DEADC0DE
> wTotalLength: 32
> bNumInterfaces: 1
> bConfigurationValue: 1
> iConfiguration: 0
> bmAttributes: 80h
> MaxPower: 50
> bInterfaceNumber: 0
> bAlternateSetting: 0
> bNumEndpoints: 2
> bInterfaceClass: 255
> bInterfaceSubClass: 0
> bInterfaceProtocol: 0
> iInterface: 0
> bEndpointAddress: 82h
> bmAttributes: 02h
> wMaxPacketSize: 64
> bInterval: 0
> bRefresh: 0
> bSynchAddress: 0
> bEndpointAddress: 05h
> bmAttributes: 02h
> wMaxPacketSize: 64
> bInterval: 0
> bRefresh: 0
Z programu usb_debug_io.exe dostaję odpowiedź:
found 3 busses
> using blksize=8
> ep_in 0x5 ep_out 0x82
> _read: No error
No i właśnie po "No error" powinien podać wynik działania funkcji usb_bulk_read() w tym ilość odebranych bajtów. I nic (: Na pececie nie widać żeby było coś więcej niż inicjalizacja interfejsu.
Po zdefiniowaniu w main_custom.c stałej DEBUG uaktywnia się funkcja DBG wypluwająca komunikaty po RS232. Oto co dostaję: ( swoją drogą Hyperterminal nie chce tego odbierać - odbieram na terminal v1.9 by Br@y++ - świetny)
Initialising USB stack
> Registered handler for device status
> Registered handler for EP 0x0
> Registered handler for EP 0x80
> Registered handler for EP 0x82
> Registered handler for EP 0x5
> Starting USB communication
> USBHwConnect(TRUE)
>
> !
> !S6D100
> !S5S6D100S6D200S6D300S6D303S6D200S6D600Desc 600 not found!
> _HandleRequest1 failed
> STALL on [ 80 06 00 06 00 00 0a 00] stat=5
> S6D300S6D302S6D300S6D302
Część zaczynająca się do wykrzyknika pojawia się po podpięciu kabla usb. Czy ktoś mógłby mi powiedzieć na czym to się wysypuje. Sypie się w module usbcontrol.c
if ((Setup.wLength == 0) || (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { // ask installed handler to process request if (!_HandleRequest(&Setup, &iLen, &pbData)) { DBG("_HandleRequest1 failed\n"); StallControlPipe(bEPStat); return;
Dodam, że pozostałe urządzenia czyli hid czy audio też się nie uruchamiają. Pytanie czy coś z tym kodem nie tak czy może jeszcze trzeba coś przerobić na płytce.
Będę wdzięczny za pomoc.