EmbeddedRelated.com
Forums

Problem with Olimex LPC-H2888 board

Started by Bogdan Marinescu April 24, 2008
Hello all,

I've been using the LPC-H2888 board for quite a while now, programming it
using the USB DFU method. Recently I got a new computer, and I tried to
reinstall the DFU drivers from Philips, but in vain. I'm using Windows XP,
and when I connect the board (setup for "USB download") the system either
reports that "USB device was not recognized", or it finds an "unknown
device" that is succesfully installed (!), I can see it in the device
manager, but I can't do anything with it (I tried updating its drivers to
the MDFU drivers, it didn't work). But the board DOES work, the firmware
that was programmed in the flash before this works just fine. Anybody
experienced a similar problem?

Thanks,
Bogdan Marinescu

An Engineer's Guide to the LPC2100 Series

--- In l..., "Bogdan Marinescu"
wrote:
>
> Hello all,
>
> I've been using the LPC-H2888 board for quite a while now,
programming it
> using the USB DFU method. Recently I got a new computer, and I tried to
> reinstall the DFU drivers from Philips, but in vain. I'm using
Windows XP,
> and when I connect the board (setup for "USB download") the system
either
> reports that "USB device was not recognized", or it finds an "unknown
> device" that is succesfully installed (!), I can see it in the device
> manager, but I can't do anything with it (I tried updating its
drivers to
> the MDFU drivers, it didn't work). But the board DOES work, the firmware
> that was programmed in the flash before this works just fine. Anybody
> experienced a similar problem?
>
> Thanks,
> Bogdan Marinescu
>
>

a) Hardware setup
To start from the boot ROM, pull P2.3/Mode2 pin (CON2-5 of the Olimex
LPC-H2888 board) to high. Then, plug in the USB cable to the PC.

b) USB connection diagnosis
UVCView.exe from MS shows the USB connection topology in its tree
view, and
reads out the descriptors of specified device. When the descriptors
are read out without error, the device is working fine, at least for
Get_Descriptor request.

Formally, UVCView.exe is included in WDK
"How to Get the WDK and the WLK" from MS WHDC
http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx

Unfortunately, WDK is a huge ISO image, and you have to sign up to MS
to download it. Many reliable sites have copies of USBView.exe, but no
UVCView.exe. USBView.exe doesn't work well for the DFU device.

-------- Output of UVCView.exe for LPC2888 ROM boot -------------

---===>Device Information<===---
English product name: "PNX0102"

ConnectionStatus:
Current Config Value: 0x00 -> Device Bus Speed: High
Device Address: 0x03
Open Pipes: 0
*!*ERROR: No open pipes!
This device has NOT been loaded by the USB driver

===>Device Descriptor<==bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0xFE
*!*ERROR: unknown bDeviceClass 254
bDeviceSubClass: 0x01
*!*ERROR: bDeviceSubClass of 1 is invalid
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x0471 = Philips
idProduct: 0xDF55
bcdDevice: 0x0001
iManufacturer: 0x01
English (United States) "Philips Semiconductors"
iProduct: 0x03
English (United States) "PNX0102"
iSerialNumber: 0x00
bNumConfigurations: 0x01

===>Configuration Descriptor<==bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x0019 -> Validated
bNumInterfaces: 0x01
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0xC0 -> Bus Powered
MaxPower: 0x32 = 100 mA

===>Interface Descriptor<==bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0xFE -> This is an Application
Specific USB Device Interface Class
-> This is a Device Firmware Application Specific USB Device
Interface Class
bInterfaceSubClass: 0x01
bInterfaceProtocol: 0x00
CAUTION: This may be an invalid bInterfaceProtocol
iInterface: 0x00

===>Descriptor Hex Dump<==bLength: 0x07
bDescriptorType: 0x21
07 21 05 FF FF 00 08

-------- end of UVCView output -----------

c) Device driver conflict
The INF file of the NXP DFU driver (MassDfu.inf) specifies the DFU
class as the hardware ID. It may conflict with other DFU device driver.

Open MassDfu.inf and modify it as follows.
Find these lines.
[DFU]
%USB\VID_0471&PID_0000.DeviceDesc2%.Dev, USB\Class_FE&SubClass_01

And append "&Prot_00" at the end of the second line.
[DFU]
%USB\VID_0471&PID_0000.DeviceDesc2%.Dev,
USB\Class_FE&SubClass_01&Prot_00
The correct DFU class should have this triad.
(class, subclass, protocol) = (0xFE, 0x01, 0x01)
However, NXP assigns (0xFE, 0x01, 0x00), mistakenly or intentionally.
This "unique" class is enough to identify the device.

Update the driver in the Device Manager, specifying this INF file.

Tsuneo
Thank you very much for your help. I already tried a), but not b) and c).
I'm afraid of a hardware error, because of the "USB device not recognized"
message, but I'll keep on trying. I already tried on 3 different computers,
with 3 different cables, and checked that the on-board USB connector is OK
(and it is).Still, I hope it's a driver issue.

On Fri, Apr 25, 2008 at 6:01 PM, t_chinzei wrote:

> --- In l... , "Bogdan
> Marinescu"
>
> wrote:
> >
> > Hello all,
> >
> > I've been using the LPC-H2888 board for quite a while now,
> programming it
> > using the USB DFU method. Recently I got a new computer, and I tried to
> > reinstall the DFU drivers from Philips, but in vain. I'm using
> Windows XP,
> > and when I connect the board (setup for "USB download") the system
> either
> > reports that "USB device was not recognized", or it finds an "unknown
> > device" that is succesfully installed (!), I can see it in the device
> > manager, but I can't do anything with it (I tried updating its
> drivers to
> > the MDFU drivers, it didn't work). But the board DOES work, the firmware
> > that was programmed in the flash before this works just fine. Anybody
> > experienced a similar problem?
> >
> > Thanks,
> > Bogdan Marinescu
> >
> >
> >
> > a) Hardware setup
> To start from the boot ROM, pull P2.3/Mode2 pin (CON2-5 of the Olimex
> LPC-H2888 board) to high. Then, plug in the USB cable to the PC.
>
> b) USB connection diagnosis
> UVCView.exe from MS shows the USB connection topology in its tree
> view, and
> reads out the descriptors of specified device. When the descriptors
> are read out without error, the device is working fine, at least for
> Get_Descriptor request.
>
> Formally, UVCView.exe is included in WDK
> "How to Get the WDK and the WLK" from MS WHDC
> http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
>
> Unfortunately, WDK is a huge ISO image, and you have to sign up to MS
> to download it. Many reliable sites have copies of USBView.exe, but no
> UVCView.exe. USBView.exe doesn't work well for the DFU device.
>
> -------- Output of UVCView.exe for LPC2888 ROM boot -------------
>
> ---===>Device Information<===---
> English product name: "PNX0102"
>
> ConnectionStatus:
> Current Config Value: 0x00 -> Device Bus Speed: High
> Device Address: 0x03
> Open Pipes: 0
> *!*ERROR: No open pipes!
> This device has NOT been loaded by the USB driver
>
> ===>Device Descriptor<==> bLength: 0x12
> bDescriptorType: 0x01
> bcdUSB: 0x0200
> bDeviceClass: 0xFE
> *!*ERROR: unknown bDeviceClass 254
> bDeviceSubClass: 0x01
> *!*ERROR: bDeviceSubClass of 1 is invalid
> bDeviceProtocol: 0x00
> bMaxPacketSize0: 0x40 = (64) Bytes
> idVendor: 0x0471 = Philips
> idProduct: 0xDF55
> bcdDevice: 0x0001
> iManufacturer: 0x01
> English (United States) "Philips Semiconductors"
> iProduct: 0x03
> English (United States) "PNX0102"
> iSerialNumber: 0x00
> bNumConfigurations: 0x01
>
> ===>Configuration Descriptor<==> bLength: 0x09
> bDescriptorType: 0x02
> wTotalLength: 0x0019 -> Validated
> bNumInterfaces: 0x01
> bConfigurationValue: 0x01
> iConfiguration: 0x00
> bmAttributes: 0xC0 -> Bus Powered
> MaxPower: 0x32 = 100 mA
>
> ===>Interface Descriptor<==> bLength: 0x09
> bDescriptorType: 0x04
> bInterfaceNumber: 0x00
> bAlternateSetting: 0x00
> bNumEndpoints: 0x00
> bInterfaceClass: 0xFE -> This is an Application
> Specific USB Device Interface Class
> -> This is a Device Firmware Application Specific USB Device
> Interface Class
> bInterfaceSubClass: 0x01
> bInterfaceProtocol: 0x00
> CAUTION: This may be an invalid bInterfaceProtocol
> iInterface: 0x00
>
> ===>Descriptor Hex Dump<==> bLength: 0x07
> bDescriptorType: 0x21
> 07 21 05 FF FF 00 08
>
> -------- end of UVCView output -----------
>
> c) Device driver conflict
> The INF file of the NXP DFU driver (MassDfu.inf) specifies the DFU
> class as the hardware ID. It may conflict with other DFU device driver.
>
> Open MassDfu.inf and modify it as follows.
> Find these lines.
> [DFU]
> %USB\VID_0471&PID_0000.DeviceDesc2%.Dev, USB\Class_FE&SubClass_01
>
> And append "&Prot_00" at the end of the second line.
> [DFU]
> %USB\VID_0471&PID_0000.DeviceDesc2%.Dev,
> USB\Class_FE&SubClass_01&Prot_00
>
> The correct DFU class should have this triad.
> (class, subclass, protocol) = (0xFE, 0x01, 0x01)
> However, NXP assigns (0xFE, 0x01, 0x00), mistakenly or intentionally.
> This "unique" class is enough to identify the device.
>
> Update the driver in the Device Manager, specifying this INF file.
>
> Tsuneo
>
>
>