LPC18xx / LPC43xx Support
We recommend that anyone targeting LPC18xx or LPC43xx parts ensures that they are using at least Code Red IDE v4.3.0 or preferably Code Red IDE v5.x.x.
For details of how to update or upgrade to the latest version of the IDE, please visit our Downloads and Versions page.
Also note that some of the information provided in this FAQ may not apply to releases before v5.0.14.
LPC18xx / LPC43xx Variants
Variants of the LPC18xx and LPC43xx families are available with and without internal flash. For more details, please see NXP's website and documentation:
Internal Flash Support
Support for LPC18xx/43xx parts with internal flash (such as LPC1857/LPC4357) was added in Code Red IDE v4.3.0. For more details please see the FAQ "LPC18xx/43xx Internal Flash Support".
External flash support
The LPC18x0/43x0 parts do not have integrated flash within the MCU. However they can be connected to external flash, which Code Red IDE projects can be configured to make use of. For more details please see the FAQ "LPC18xx/43xx External Flash Support".
Supported debug probes
You can use either a Red Probe+ (or original Red Probe) or the LPC-Link probe from an LPCXpresso board to debug your LPC18xx/LPC43xx.
Note that Code Red IDE v5 (and earlier) do not support the use of LPC-Link2 with the LPC18/43 families. For more details, please see the FAQ LPC-Link2 Support.
JTAG vs SWD debug connections
Unlike most other Cortex-M based MCU's (including LPC18xx), when you start a debug connection to an LPC43xx, you will by default connect using JTAG. This is because of the dual core nature of the LPC43xx parts (SWD only supports connections to a one core system).
The first time that you start a debug session to the LPC43xx using a JTAG connection, you will receive a pop up dialog offering you a choice of which of the two cores on the LPC43xx to connect to. Normally you should ensure that you select "Device 1" which has the TAP Id = 0x4ba00477 - which is the Cortex-M4. This selection is then stored in the *.jtag file that will be placed in the Debug/Release directory. Note that you can cause the pop up dialog to reappear again by deleting the *.jtag file.
Note that it is possible to reconfigure an LPC43xx project so that an SWD connection is used instead. To do this you need to change the "Debugger Configuration" setting in the Launch Configuration from "NXP LPC43xx (JTAG)" to "NXP LPC43xx (SWD)". For more details, please see the FAQ Launch Configuration Menu.
When programming and running code from the external flash, it is particularly important to make sure that you have the boot pins P2_9, P2_8, P1_2, and P1_1 are correctly connected so that the MCU starts execution from the correct memory address. For more details, please see the NXP documentation.
If the boot pins are incorrectly set, then this will typically result in the initial default breakpoint set by the debugger on main() not been reached. You can confirm if this is the case by clicking on suspend icon to pause execution (when you fail to hit the initial breakpoint) and then looking at the address of the PC. If you built for SPIFI, then the address of the PC should be 0x14xx xxxx, whereas if you built for EMC (SST), then the address of the PC should be 0x1Cxx xxxx.
BOOT pins example (Hitex LPC1850/4350 board)
For example, for the Hitex LPC1850/4350 board, you need to have the BOOT jumpers configued as follows :
For SPIFI flash
- BOOT1 connected across pins 1 and 2
- BOOT2, BOOT3, BOOT4 connected across pins 2 and 3
For EMC SST flash
- BOOT1, BOOT2 connected across pins 1 and 2
- BOOT3, BOOT4 connected across pins 2 and 3
For more details see section 7.1 "Boot options" of the Hitex Quickstart Guide LPC1850/LPC4350 Board (version 1.20).
Note : A power on reset is definitely required after changing the BOOT pin settings.
Existing code and projects
Code taken from examples, or generated by the project wizard in versions of the Code Red IDE prior to v4.30 should not be used with the latest silicon/boards. Use the examples provided with latest version of the Code Red IDE. This includes startup code generated by the project wizard. Replace any existing startup code with that created by the current version of the Code Red IDE.
LPC43xx Multicore development
For Code Red IDE v5.2.2 and later, please see the FAQ "Creating LPC43xx Cortex-M4 / M0 Multicore Applications".
For earlier versions, please see the FAQ "Creating an LPC43xx Cortex-M4 / M0 Dual Core Application".
Silicon and board revisions
The initial LPC18xx and LPC43xx parts with no internal flash (LPC1850/LPC4350) went through a rather long gestation period, with several pre-production silicon revisions, which some customers have acquired mounted on various revisions of the Hitex LPC1850/4350 eval board. Going forward we recommend using (and will only provide support in the Code Red IDE for) production silicon and rev A4 of the Hitex eval board.
The easy ways to tell if your Hitex eval board is rev A4 are to…
- Look at the text on the underside of the board. If it says "LPC1850EVA-A4, then you have an A4 board. (Earlier revisions may say, for example, "LPC1850EVA-A2.) Or…
- Look at the JTAG connector, which is just below the long LCD connector. A small 10 pin connector means a rev A4 board. A large "traditional ARM" 20pin connector means an earlier variant.
You also want to check your silicon revision and ensure that you have production silicon - which is marked "AY". For example, the full markings on the LPC4350 chip that we currently have here are:
NXP LPC4350FET256 P6G566.04 ESD11460AY
Now that production silicon is available, vendors other than Hitex are now also making LPC18/43 boards available, some mounting parts with internal flash, others relying on external flash. For example:
We have done some development work here in Code Red with the NGX LPC4330-Xplorer board (works with the SPIFI flash driver supplied with the Code Red IDE). Note that these boards are now generally shipping with LPC4337 (or LPC1837) silicon with built -in flash. We have also used these boards without problem.