Installing eLua on the LPC2888 CPU from NXP

The LPC2888 CPU from NXP packs some interesting features: huge internal 1Mbyte flash memory, on-chip USB 2.0 high speed interface, and the most complex (by far) clocking network that I've ever seen on an ATM7TDMI chip. Also, it implements the USB DFU (Device Firmware Update) profile over its USB interface, so it's quite easy to program it in-circuit. I'm using the Olimex LPC-H2888 development board built around this chip, which packs 32MBytes of external SDRAM and also 2MBytes of external flash, which is more than enough for my needs. However, it does have its fair share of downsides. For starters, its support package (from NXP) is very poot when compared to other targets on which eLua runs. You don't even get drivers for all your peripherals, just a a few (quite incomplete) examples. Its datasheet could be much more explit at times, especially when referring to the clocking section (which is quite complicated). On my board, the DFU download mode (firmware upgrade via USB) stopped working out of the blue, without any apparent reasons, and I was unable to use DFU on the chip since then, I had to resort to using OpenOCD (and come up with a configuration file, since it was impossible to find one for LPC2888). The CPU itself has a very interesting limitation: because of a silicon error, it's impossible to run Thumb code from the on-chip flash, you can only run regular ARM code (?!). Also, the board that I got from Olimex completely ignores the fact that this chip can run in DFU mode (it doesn't include any kind of jumper and/or switch to enable this mode), so I had to build a support board for it. Which is something I had to do also because the board doesn't export a RS232 interface, I had to build one around a MAX232 chip. All in all, my experience with this chip (and with the Olimex board) wasn't that pleasant, but this doesn't change the fact that the LPC-H2888 is one of the most powerful (resource-wise) boards on which eLua runs.

Prerequisites

Before you'll be able to use eLua on the LPC2888 CPU, make sure that:

Burning eLua to the LPC2888 using the DFU tool from NXP

The DFU flashing application doesn't work directly on the .bin files you get after building eLua, you need to run them though NXP's "hostcrypt" program (which is part of the LPC2888 DFU package). After you have your eLua .bin file, do this from a Windows command prompt (make sure that hostcryptv2.exe is in the path):

C:> hostcryptv2 elua_lua_lpc2888.bin elua.ebn -K0 -F0

As a result, you'll have a new file (elua.ebn). Now boot your chip in DFU firmware upgrade mode (see above) and use the DFU utility (MassDFUApplication.exe) to load elua.ebn into your chip (the instructions on using MassDFUApplication are in a PDF file that's included in the LPC2888 DFU package). Reset the board and enjoy.

Burning eLua to the LPC2888 using OpenOCD

If you're as lucky as me and your board refuses to use DFU anymore, follow my OpenOCD tutorial to burn your image using OpenOCD.