I have a problem on establishing USB connection between a x86 host running QNX Neutrino6.3.2 and a micro-controller device (8051 based Silabs F340 board) running a specific firmware to communicate with the host. I implemented a device specific QNX driver for the USB connectivity using usb-io, and I use this driver as an interface between the host application and the Silabs board firmware in order to exchange data. I used below host platforms for testing:
QNX Neutrino on VMWare5.5 running on Windows XP (installed on a PC with CoreDuo2 processors)
QNX Neutrino on Lippert Cool Front Runner PC104 board (QNX is not installed on the compact flash of the board yet, it runs on a Seagate harddisk connected to the board via IDE slot)
In both platforms:
- firstly the QNX driver (on Momentics) is cross-compiled to the target QNX platform (host PC/or Lippert board) over Ethernet via QConn
- then, the USB cable is inserted to the USB port of the QNX platform
- and finally the host application is started on the QNX platform for data exchange
In the first platform(PC), the Silabs device is successfully detected upon insertion, and the host application successfully exchanges data with the device.
However, in the second platform(Lippert board), although the device is detected and the host application is started (hence probe,open functions of the driver are executed), the data exchange fails(timeouts) with a USBD_STATUS_DEV_NOANSWER error upon urb submission. When I debugged the firmware, I noticed that although its execution is interrupted with interrupts from the QNX platform, it doesn’t receive any data.
Has anyone got any idea on why such an application might fail on this second platform(Lippert board) although it perfectly runs on the first one? Where do you think I should concentrate to find the bug here?