LPCXpresso_IDE_User_Guide
LPCXpresso_IDE_User_Guide
15 February, 2016
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
1. Introduction to LPCXpresso
LPCXpresso is a low-cost microcontroller (MCU) development platform ecosystem from
NXP, which provides an end-to-end solution enabling engineers to develop embedded
applications from initial evaluation to final production.
• The LPCXpresso IDE, a software development environment for creating applications for
NXP’s ARM-based “LPC” range of MCUs.
The LPCXpresso IDE is based on the Eclipse IDE and features many ease-of-use and
MCU specific enhancements. The LPCXpresso IDE also includes the industry standard
ARM GNU toolchain, providing professional quality development tools at low cost. The fully
featured debugger supports both SWD and JTAG debugging, and features direct download
to on-chip flash.
For the latest details on new features and functionality, visit http://www.lpcware.com/
content/forum/lpcxpresso-latest-release
• CVS source control built in; Subversion, TFS, Git, and others available for download
• Command-line tools included for integration into build, test, and manufacturing
systems
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• Device-specific support for NXP’s ARM-based MCUs (including Cortex-M, ARM7 and
ARM9 based parts)
• Automatic generation of linker scripts for correct placement of code and data into flash
and RAM
• Provision for creating linked projects for each core in multicore MCUs
• Debugging of multicore projects within a single IDE instance, with the ability to link
various debug views to specific cores
• Library support
• Cortex Microcontroller Software Interface Standard (CMSIS) libraries and source code
• Trace functionality
• Instruction trace via Embedded Trace Buffer (ETB) on certain Cortex-M3/M4 based
MCUs or via Micro Trace Buffer (MTB) on Cortex-M0+ based MCUs
• SWO Trace on Cortex-M3/M4 based MCUs when debugging via LPC-Link2, providing
functionality including:
• Profile tracing
• Interrupt tracing
• Datawatch tracing
• Power Measurement
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• On enabled boards, sample power usage at adjustable rates of up to 200 ksps; average
power usage display option
• Configures NXP State Configurable Timer (SCT) as well as supporting software state
machines
• LPC-Link2 (with “CMSIS-DAP” firmware) - either the standalone debug probe or the
version built into LPCXpresso V2 and V3 boards
For more information on debug probe support in the LPCXpresso IDE, visit http://
www.lpcware.com/content/faq/lpcxpresso/supported-debug-probes-mcus
Support for GDB server-based debug connections is also provided. This feature enables
support for third-party debug probes, such as Segger J-Link. When debugging with GDB
server connections, some functionality may be reduced.
• For more information on using Segger J-Link with LPCXpresso, visit http://
www.segger.com/nxp-lpcxpresso.html
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
http://www.lpcware.com/LPCXpressoBoards
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
http://lpcware.com/lpcxpresso/support
2.2 Workspaces
When you first launch LPCXpresso IDE, you will be asked to select a Workspace, as shown
in Figure 2.1.
A Workspace is simply a directory that is used to store the projects you are currently working
on. Each Workspace can contain multiple projects, and you can have multiple Workspaces
on your computer. The LPCXpresso IDE can only access a single Workspace at a time,
although it is possible to run multiple instances in parallel — with each instance accessing
a different Workspace.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
If you tick the Use this as the default and do not ask again option, then the LPCXpresso
IDE will always start up with the chosen Workspace opened; otherwise, you will always be
prompted to choose a Workspace.
It is possible to change the Workspace that the LPCXpresso IDE is using, via the File ->
Switch Workspace option.
Typically, the LPCXpresso IDE operates using the single Develop Perspective, under
which both code development and debug sessions operate as shown in Figure 2.3. This
single perspective simplifies the Eclipse environment, but at the cost of slightly reducing
the amount of information displayed on screen.
Alternatively the LPCXpresso IDE can operate in a “dual Perspective” mode such that the
C/C++ Perspective is used for developing and navigating around your code and the Debug
Perspective is used when debugging your application.
You can manually switch between Perspectives using the Perspective icons in the top right
of the LPCXpresso IDE window, as shown in Figure 2.2.
All Views in a Perspective can also be rearranged to match your specific requirements by
dragging and dropping. If a View is accidentally closed, it can be restored by selecting it
from the Window -> Show View dialog. The default layout for a perspective can be restored
at any time via Window -> Reset Perspective.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• The Project Explorer gives you a view of all the projects in your current Workspace.
• When debugging, the Peripherals view allows you to display the registers within
Peripherals.
• When debugging, the Registers view allows you to display the registers within the
CPU of your MCU.
• Not visible here is the Symbol Viewer; this view displays symbolic information from
a referenced .axf file.
2. Editor
• On the upper right is the editor, which allows modification and saving of source code.
When debugging, this is where you can see the code you are executing and can
step from line to line. By pressing the 'i->' icon at the top of the Debug view, you
can switch to stepping by assembly instruction. Clicking in the left margin will set and
delete breakpoints.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• On the lower right are the Console and Problems Views. The Console View displays
status information on compiling and debugging, as well as semihosted program
output.
• The Problems View (available by changing tabs) shows all compiler errors and will
allow easy navigation to the error location in the Editor View.
• Sitting in parallel with the Console View are the various Views that make up the Trace
functionality of LPCXpresso IDE. For more information on Trace functionality, please
see the LPCXpresso IDE SWO Trace Guide and/or the LPCXpresso IDE Instruction
Trace Guide.
• The SWO trace Views allow you to gather and display runtime information using the
SWV technology that is part of Cortex-M3/M4 based parts.
• On some MCUs, you can also view instruction trace data downloaded from the
MCU’s Embedded Trace Buffer (ETB) or Micro Trace Buffer (MTB). The example
here shows instruction trace information downloaded from an LPC812’s MTB.
• Sitting in parallel with the Console View is the Power Measurement View, a dedicated
trace View capable of displaying real-time target power usage. For more information
please see the LPCXpresso IDE Power Measurement Guide.
• On the lower left of the window, the Quickstart Panel View has fast links to commonly
used features. This is the best place to go to find options such as Build, Debug, and
Import.
• Sitting in parallel to the Quickstart Panel, the Variable View allows you to see the
values of local variables.
• Sitting in parallel to the Quickstart Panel, the Breakpoint View allows you to see and
modify currently set breakpoints.
• Sitting in parallel to the Quickstart Panel, the Outline View allows you to quickly find
components of the source file with input focus within the editor.
• Sitting in parallel to the Quickstart Panel, the Expressions View allows you to add
global variables and other expressions so that you can see and modify their values.
5. Debug View
• The Debug View appears when you are debugging your application. This shows
you the stack trace. In the “stopped” state, you can click on any particular function
and inspect its local variables in the Variables tab (which is located parallel to the
Quickstart Panel View).
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
LPCOpen is thoroughly tested and maintained. The latest LPCOpen software now available
provides:
CMSIS / Peripheral Driver Library / code bundle software packages are still available,
both within your LPCXpresso IDE install directory in \lpcxpresso\Examples\NXP and also
downloadable from the NXP LPCware website. But generally these should only be used
for existing development work. When starting a new evaluation or product development,
we would recommend the use of LPCOpen.
More information on LPCOpen together with package downloads can be found at:
http://www.lpcware.com/lpcopen
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
On the Quickstart Panel, click on the “Start here” sub-panel, and click on Import project(s).
As shown in Figure 3.2, from the first page of the wizard you can:
• Browse to locate Examples stored in zip archive files on your local system. These could
be archives that you have previously downloaded (for example LPCOpen packages from
the NXP LPCware website or the supplied, but deprecated, sample code bundles located
within the Examples subdirectory of your LPCXpresso IDE installation).
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• Browse to locate projects stored in directory form on your local system (for example, you
can use this to import projects from a different Workspace into the current Workspace).
To demonstrate how to use the Import Project(s) functionality, we will now import the
LPCOpen examples for the LPCXpresso4337 development board.
Once the package has downloaded, return to the Import Project(s) dialog and click on the
Browse button next to Project archive (zip); then locate the LPCOpen LPCXpresso4337
package archive previously downloaded. Select the archive, click Open and then click
Next. You will then be presented with a list of projects within the archive, as shown in
Figure 3.3.
Select the projects you want to import and then click Finish. The examples will be imported
into your Workspace.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Note that generally it is a good idea to leave all projects selected when doing an import
from a zip archive file of examples. This is certainly true the first time you import an example
set, when you will not necessarily be aware of any dependencies between projects. In most
cases, an archive of projects will contain one or more library projects, which are used by the
actual application projects within the examples. If you do not import these library projects,
then the application projects will fail to build.
For more information on switching between build configurations, see the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/change-build-config
First of all you need to ensure that your LPCXpresso development board is connected
to your computer. Note that some LPCXpresso development boards have two USB
connectors fitted. Make sure that you have connected the lower connector marked DFU-
Link.
To start debugging periph_blinky on your target, simply highlight the project in the
Project Explorer, and then in the Quickstart Panel click on Start Here and select Debug
'periph_blinky', as in Figure 3.4. Click on OK to continue with the download and debugging
of the “Debug” build of your project. The project binary will then be built if required, and
then automatically downloaded to the target and programmed into flash memory. A default
breakpoint will be set on the first instruction in main(), the application will be started (by
simulating a processor reset), and code will be executed until the default breakpoint is hit.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Note New from LPCXpresso IDE version 8.1 is support for unique LPC-Link2 probe
identification. When using the latest LPC-Link2 CMSIS-DAP firmware, each debug probe
will report its ID, in this example PSAZBQHQ. Using this scheme a particular probe can be
recognized as associated with a particular project.
You now need to select the probe through which you wish to debug. In Figure 3.6 the LPC-
Link2 has been selected, which is the correct option to debug an LPCXpresso4337 board.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
For any future debug sessions, the stored probe selection will be automatically used, unless
the probe cannot be found. In Figure 3.7 the previously selected LPC-Link2 is no longer
connected.
This might have been because you had forgotten to connect the probe, in which case
connect it to your computer and select Search again.
The tools will then go and search for appropriate emulators. In Figure 3.8 LPC-Link2 has
been detected again.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Notes:
• You will need to select a probe for each project that you debug within a Workspace (as
well as for each configuration within a project).
• Storing the selected emulator (probe) in the debug launch configuration helps to improve
debug startup time.
Program execution can now be controlled using the common debug control buttons, as
listed in Table 3.1, which are displayed on the global toolbar. The call stack is shown in
the Debug View, as in Figure 3.9.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Setting a breakpoint
To set a breakpoint, simply double-click on the margin area of the line on which you wish
to set the breakpoint (before the line number).
If you hit a breakpoint or pause execution and want to start execution of the application
from the beginning again, you can do this using the Restart button.
Stopping debugging
If you are debugging using the Debug Perspective, then to switch back to the C/C++
Perspective when you stop your debug session, just click on the C/C++ tab in the upper
right area of the LPCXpresso IDE (as shown in Figure 2.2).
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
You can now select the type of project that you wish to create.
C Project
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
• Creates a simple C project, with the main() routine consisting of an infinite while(1) loop
that increments a counter.
• For LPCOpen projects, code will also be included to initialize the board and enable a LED.
C++ Project
• Creates a simple C++ project, with the main() routine consisting of an infinite while(1)
loop that increments a counter.
• For LPCOpen projects, code will also be included to initialize the board and enable a LED.
• Creates a simple static library project, containing a source directory and, optionally, a
directory to contain include files. The project will also contain a “liblinks.xml” file, which
can be used by the smart update wizard on the context-sensitive menu to create links
from application projects to this library project. For more details, please see the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/creating-linking-library-projects
• Creates a simple (C++) static library project, like that produced by the C Static Library
Project wizard, but with the tools set up to build C++ rather than C code.
Semihosting C Project
• Creates a simple “Hello World” project, with the main() routine containing a printf() call,
which will cause the text to be displayed within the Console View of the LPCXpresso
IDE. This is implemented using “semihosting” functionality. For more details, please see
the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/using-printf
Then you will need to select the actual MCU that you will be targeting for this project.
It is important that the MCU you select matches the MCU that you will be running your
application on. This ensures that appropriate compiler and linker options will be used for
the build, as well as correctly setting up the memory description, the flash driver (when
possible), and the debug connection.
Finally you will be presented with one or more “Options” pages that provide the ability to
set a number of project-specific options. The choices presented will depend upon which
MCU you are targeting and the specific wizard you selected, and may also change between
versions of the LPCXpresso IDE. Note that if you have any doubts over any of the options,
then we would normally recommend leaving them set to their default values.
The following sections detail some of the options that you may see when running through
a wizard.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
This page allows you to run the “Import wizard” to download the LPCOpen bundle for your
target MCU/board from the NXP LPCware website and import it into your Workspace, if
you have not already done so.
You will then need to select the LPCOpen Chip library for your MCU using the Workspace
browser (and for some MCUs an appropriate value will also be available from the dropdown
next to the Browse button). Note that the wizard will not allow you to continue until you
have selected a library project that exists within the Workspace.
Finally, you can optionally select the LPCOpen Board library for the board that your MCU
is fitted to, using the Workspace browser (and again, in some cases an appropriate value
may also be available from the dropdown next to the Browse button). Although selection
of a board library is optional, it is recommended that you do this in most cases.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Generally, if you wish to use CMSIS-CORE library projects, you should use
CMSIS_CORE_<partfamily> (these projects use components from ARM’s CMSIS v3.20
specification). The LPCXpresso IDE does in some cases provide libraries based on early
versions of the CMSIS specification with names such as CMSISv1p30_<partfamily>, but
these are not recommended for use in new projects.
The CMSIS library option within the LPCXpresso IDE allows you to select which (if any)
CMSIS-CORE library you want to link to from the project you are creating. Note that you
will need to import the appropriate CMSIS-CORE library project into the workspace before
the wizard will allow you to continue.
For more information on CMSIS and its support in the LPCXpresso IDE, please see the
FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/cmsis-support
Note - The CMSIS DSP library can be used with both LPCOpen and non-LPCOpen
projects.
Note - The use of LPCOpen rather than these peripheral driver projects is recommended
in most cases for new projects.
http://www.lpcware.com/content/faq/lpcxpresso/code-read-protect-crp
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
http://www.lpcware.com/content/faq/lpcxpresso/rom-divide
http://www.lpcware.com/content/faq/lpcxpresso/lpc12-watchdog
• If your application does not pass floating point numbers to printf() family functions,
you can select a non-floating-point variant of printf. This will help to reduce the code
size of your application.
• For MCUs where the wizard does not provide this option, you can cause the same
effect by adding the symbol CR_INTEGER_PRINTF to the project properties.
• By default printf() and puts() make use of malloc() to provide a temporary buffer on
the heap in order to generate the string to be displayed. Enable this option to switch
to using “character-by-character” versions of these functions (which do not require
additional heap space). This can be useful, for example, if you are retargeting printf()
to write out over a UART – since in this case it is pointless creating a temporary buffer
to store the whole string, only to print it out over the UART one character at a time.
• For MCUs where the wizard does not provide this option, you can cause the same
effect by adding the symbol CR_PRINTF_CHAR to the project properties.
Note that if you only require the display of fixed strings, then using puts() rather than
printf() will noticeably reduce the code size of your application.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
You should then be able to build and debug your project, as described in Section 3.3 and
Section 3.4.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
In addition, the LPCXpresso IDE supports the editing of the target memory layout used
for a project. This allows for the details of external flash to be defined or for the layout of
internal RAM to be reconfigured. In addition, it allows a flash driver to be allocated for use
with parts with no internal flash, but where an external flash part is connected.
For MCUs such as the LPC1800 and LPC4300 series, a typical use case could be to create
an application to run from the MCU’s internal flash that makes use of collateral in external
SPI flash.
This lists the memory details for the selected MCU, and will, by default, display the memory
regions that have been defined by the LPCXpresso IDE itself.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Known blocks of memory, with their type, base location, and size are displayed. Entries
can be created, deleted, etc by using the provided buttons — see Figure 5.2.
Button Details
Add Flash Add a new memory block of the appropriate type.
Add RAM Add a new memory block of the appropriate type.
Split Split the selected memory block into two equal halves.
Join Join the selected memory block with the following block (if the two are contiguous).
Delete Delete the selected memory block.
Import Import a memory configuration that has been exported from another project,
overwriting the existing configuration.
Merge Import a partial memory configuration from a file, merging it with the existing memory
configuration. This allows you, for example, to add an external flash bank definition
to an existing project.
Export Export a memory configuration for use in another project.
Up / Down Reorder memory blocks. This is important: if there is no flash block, then code will be
placed in the first RAM block, and data will be placed in the block following the one
used for the code (regardless of whether the code block was RAM or Flash).
Browse(Flash driver) Select the appropriate driver for programming the flash memory specified in the
memory configuration. This is only required when the flash memory is external to the
MCU. Flash drivers for external flash must have a “.cfx” file extension and must be
located in the \bin\flash subdirectory of the LPCXpresso IDE installation. For more
details see User loadable flash drivers .
The name, location, and size of this new region can be edited in place. Note that when
entering the size of the region, you can enter full values in decimal or in hex (by prefixing
with 0x), or by specifying the size in kilobytes or megabytes. For example:
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Note that memory regions must be located on four-byte boundaries, and be a multiple of
four bytes in size.
The screenshot in Figure 5.3 shows the dialog after the “Add Flash” button has been clicked.
After updating the memory configuration, click OK to return to the MCU settings dialog,
which will be updated to reflect the new configuration — see Figure 5.4.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Here you can see that the region has been named SPIFI_1MB, and the default flash driver
has been deleted and the Generic SPIFI driver selected for the newly created SPIFI_1MB
region.
Note that once the memory details have been modified, the selected MCU as displayed on
the LPCXpressoIDE “Status Bar” (at the bottom of the IDE window) will be displayed with
an asterisk (*) next to it. This provides an indication that the MCU memory configuration
settings for the selected project have been modified.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
Many flash drivers supplied with the LPCXpresso IDE are for SPIFI flash devices. SPIFI
memory is located in the MCU’s memory map at 0x14000000.
Earlier versions of the LPCXpresso IDE provided a number of dedicated SPIFI flash
drivers (targeted at one or more specific SPIFI devices). This meant that it was the user’s
responsibility to select the correct SPIFI flash driver to match the device fitted to their target
hardware.
LPCXpresso IDE v7.9.0 introduced an improved flash driver mechanism for SPIFI flash.
Now a project targeting SPIFI flash only has to specify a single Generic flash driver:
“LPC18_43_SPIFI_GENERIC.cfx”. When a flash programming operation is performed, this
driver will first interrogate the SPIFI device and determine its type, size, and configuration,
which are then reported back to the host debug driver. Using this information the correct
optimized programming routines for the SPIFI device detected can be used.
For a more complete list of supplied SPIFI flash drivers for the NXP LPC1800 and LPC4300
series of MCUs, please see the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/lpc18-lpc43-spifi-flash-drivers
A small number of example flash drivers are also provided for parallel flash (connected to
the MCU via the EMC). Such devices are located in the MCU’s memory map at 0x1c000000.
Source code for external flash drivers is also provided in the /Examples/FlashDrivers
subdirectory of the LPCXpresso IDE installation. These projects can be used as the basis
for writing your own flash drivers for other devices.
Note that the /bin/Flash subdirectory may also contain some drivers for the built-in flash
on some MCUs. It should be clear from the filenames which these are. Do not try to use
these drivers for external flash on other MCUs!
From LPCXpresso IDE 8.0, there is extended support for the creation and programming
of projects that span multiple flash devices. Previously only a single (default) flash driver
could be specified for a project; now it is possible to specify a flash driver for each region
of flash memory.
In Figure 5.5 we can see that a memory description can be created that not only describes
the addresses and sizes of the memories but also specifies the flash drivers needed to
program each flash region.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
These per-region flash drivers override any default flash driver that may have been
specified.
Note that some additional care may be required when creating projects of this type. In this
example, we have chosen to boot from the flash memory at 0x1A000000 (BankA) and have
offset the second flash bank from its base address of 0x1B000000 by 8KB (where 8KB is
the smallest block that can be programmed in the first 64KB of the flash device). This is to
avoid a small risk that code or data located at the start of this flash may be misinterpreted
by the MCU’s bootloader.
For further information on creating projects to make use of multiple banks of flash memory,
please see the FAQ at
https://www.lpcware.com/content/faq/lpcxpresso/coderodata-different-flash-blocks
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
<install_dir>\lpcxpresso\Wizards\MemConfigs
Also, for backwards compatibility reasons, a number of full memory configurations, suitable
for use with the Import option, can be found in the directory:
<install_dir>\lpcxpresso\Wizards\MemConfigs\NXP
However, we would generally recommend the use of the “merge” files instead.
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.
6. Multicore Projects
6.1 LPC43xx Multicore Projects
The LPC43xx family of MCUs contain a Cortex-M4 “master” core and one or more Cortex-
M0 “slave” cores. After a power-on or Reset, the master core boots and is then responsible
for booting the slave core(s). However, this relationship only applies to the booting process;
after boot, your application may treat any of the cores as the master or a slave.
The LPCXpresso IDE allows for the easy creation of “linked” projects that support the
targeting of LPC43xx Multicore MCUs. For more information on creating and using such
multicore projects, please see the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/lpc43xx-multicore-apps
The LPCXpresso IDE allows for the easy creation of “linked” projects that support the
targeting of LPC541xx Multicore MCUs. For more information on creating and using such
multicore projects, please see the FAQ at
http://www.lpcware.com/content/faq/lpcxpresso/lpc541xx-multicore-apps
LPCXpresso IDE User Guide - All information provided in this document is subject to legal disclaimers © 2013-2016 NXP Semiconductors. All rights reserved.