RoadTest: NXP LPC4330-Xplorer Board
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: STM32 Discovery series, TI Cortex-M4 Launchpad
What were the biggest problems encountered?: The development tools needs to be more mature to support multi-core microcontroller parts (especially LPCXpresso).
First of all, I would like to thank NXP and Element14 for giving me the opportunity to test out this product.
The package I received contained the LPC4330 board together with a couple of USB cables (1 x USB micro B to USB A receptacle and 1x USB A plug to USB micro B).
Together with the board, I have found another bag containing the ULINK ME debugger adapter and its USB A plug to USB micro B cable.
The received package
Keil ULINK-ME debugger
NGX LPC4330 board and its accessories
NGX LPC4330-Xplorer leaflet-front
NGX LPC4330-Xplorer leaflet-back
I found the links on the Element14 RoadTest webpage very useful since I was able to download the important materials I needed for this board.
However, during my searches I have found some additional materials that helped me understand more about the LPC4330 and its supporting tools.
I will list all the references in a separate section below.
NGX Technologies offers code examples for LPCXpresso, Keil and IAR tools. However, the provided debugger works only with Keil tools. If anybody in the audience knows about a possibility to use this debugger with LPCXpresso or IAR tools, please give more details in the comment section. Thank you!
I have registered on the Keil website in order to be able to download the tools. Keil tools have 32KB limit for the compiled code.
The provided debugger, ULINK-ME should work ok with these tools. In order to be able to create firmware images beyond this limit, a temporary licence should be offered to the selected RoadTest participants. There was a promise of temporary licences offered by Keil to the selected group. I will contact Element14 to get a temporary licence.
The version of the Keil tools is: 126.96.36.199
LPC4330 board and ULINK-ME debugger
Next, I have continued with the LPCXpresso from Code Red Technologies. You have to create an account on their website in order to be able to download the tools.
I have downloaded the LPCXpresso 4.3.0 (Build 1023) tools and proceeded with their installation which went fine.
LPCXpresso is an Eclispe-based IDE which can be used with the NXP’s LPC series of ARM microcontrollers. After registration with Code Red Technologies, LPCXpresso has a limit of 128KB for code downloading.
However, I couldn’t find a possibility to use the provided ULINK debugger with this IDE. Since I already had an LPC-Link debugger available, I decided to give it a try with the LPC4330 board.
One of the issues I have found, at least with my kit, was that the debugger cable that came with the ULINK debugger had some notches into the both connectors.
These notches were fine with the ULINK debugger connector since this one had a missing pin that was in the same position with the notch.
On the LPC4330 board side, all the debugger pins were present. My choice was either to remove one of the pins on the board or remove the notch from the debugger cable.
Since I had an available LPC-Link (to be used with LPCXpresso tools) and on this board, all the debugger pins were present, I have decided to remove the notches on the provided debugger cable, rather than taking out the notched pins from the LPC4330 board and the LPC-Link.
LPC4330 board and LPC-Link
I have used the provided LPC4330 examples to evaluate the tools and see how they’re coping with the debug of this new breed of dual-core microcontrollers.
Since I was limited to 32KB of code I started with just a simple example (Blinky).
Then, I really wanted to see the debugging capabilities for dual-core (maybe multi-core) devices.
The “LPC4330_Xplorer_DualCore” project actually contains 2 sub-folders, each having a Keil project for the cores.
The debugging works for both cores in parallel by doing the following:
I tried to use the “Blinky” example with this IDE. It worked as expected.
Then, I wanted to run the Dual-M0 and Dual-M4 projects hoping to do a side-by-side debug session (“Dual4_M0” and “Dual4_M4_SPIFI” projects). After reading some supporting materials here, I found out LPCXpresso is unable to do parallel debug for M4 and M0.
You can only have one debug session at a moment!
I think this is quite a limitation from a development tool. Debugging is cumbersome in projects where M4-M0 interaction is being used extensively.
I haven’t tested this set of tools since I didn’t have the required debugging tools (I-Jet or Segger J-Link).
Here are the issues I have found so far:
My personal belief is that the combination between the M4 and the M0 is a wonderful idea.
I would use the M0 core to perform all the peripheral related tasks (drivers, data presentation) to create a very simple and intuitive data source/sink for the M4. The M4 will be then free to process the incoming/outgoing data without being involved with the actual transport of the data to peripherals.
One interesting idea would be for NXP to provide some sort of a driver framework project that would use the M0 to take care of peripherals. By using a communication mechanism between the M4/M0 cores and memory buffers for data exchange, the user can focus on the M4 processing.
Having such a project for M0 would really help the developers implementing their own ideas on the M4, thus saving maybe 50% of their development time.
In fact, the M0 and its driver framework can be considered by the users as a black-box that does all the hard work setting-up and talking to the peripherals and then presents the buffers used for data exchange between the cores. The users can focus next on developing their main projects on the M4.
Of course, the users would also modify the M0 driver project to include support for other peripherals or external chips.
In conclusion, a driver framework/M0 core pair would be thought by the users as a highly configurable complex peripheral that does all the work to present the data buffers from various peripherals.
If somebody from NXP wants to talk some more about these ideas, please feel free to contact me.
I think the LPC4330 is a very important chip and deserves a lot more attention. That’s why I think this review should continue and I will come back with additions on mine.