![](images/nxp.png)
NXP LPC2000 CPU Support Package
This package contains project templates and system files for the NXP LPC2000.
CrossWorks Version 4 Installation Instructions
This package can only be installed if you have the following CrossWorks license bolt-ons:
- ARM License
- To install this support package
-
- Click the Tools > Package Manager menu option to open the package manager window.
- Right click on the NXP LPC2000 CPU Support Package entry and select Install Selected Packages.
- Click Next to take you to the summary page.
- Click Next to install the package.
- Click Finish to close the package manager window.
- Click the Tools > Show Installed Packages.
- Click on the NXP LPC2000 CPU Support Package link to view the package and its contents.
- To manually install this support package
-
- If you have not done so already, follow the CrossWorks Tasking Library Package installation instructions.
- Download the file NXP_LPC2000.hzq using your web browser.
- Click the Tools > Manually Install Packages menu option.
- Select the file you have just downloaded to install the package.
- Click the Tools > Show Installed Packages.
- Click on the NXP LPC2000 CPU Support Package link to view the package and its contents.
- To install this support package using other versions
Release Notes
1.32
- Added EABI and small library variants of liblpc2000 library.
- New projects now default to using the EABI toolchain.
1.31
- Updated memory maps and header files for enhanced LPC2104, LPC2105 and LPC2106 devices.
- Corrected definition of CAN BTR register.
- Corrected definition of LPC23xx/LPC24xx UART IER register.
- Corrected definition of LPC23xx/LPC24xx USBDevIntSet, USBDevIntClr and USBCmdCode registers.
- Corrected definition of LPC23xx/LPC24xx MRDD register.
- Fixed VIC PL192 ctl_set_isr implementation.
1.30
- Improved error reporting from the internal FLASH LIBMEM driver.
- Fixed LPC2101/LPC2102 FLASH loader.
1.29
- Corrected definition of SSPCR register.
- Corrected definition of I2C ADR and TX registers.
- Corrected definition of I2S DAO and DAI registers.
- Corrected definition of USB USBClkSt and OTGClkSt registers.
- Corrected definition of DMACSoftLSReq register.
- Corrected FIO upper half-word register definitions.
- Updated USB register definitions to match latest documentation.
- Fixed LPC23xx loader running on LPC2361 or LPC2364 targets.
1.28
- Added support for LPC2361 and LPC2362.
- Memory access property specified for read only and write only USB registers.
- Bit fields defined for VIC registers.
1.27
- Added CISS register to LPC23xx and LPC24xx RTC register definitions.
- liblpc2000_lpc23xx_configure_pll now returns actual CCLK frequency achieved rather than requested frequency.
- liblpc2000_lpc23xx_configure_pll now works when fosc equals 14745600.
1.26
- Corrected definition of the OHCI HcCommandStatus register in header files and memory maps.
1.25
- Corrected definition of the CTIME0 register's "Day Of Week" field in header files and memory maps.
1.24
- Corrected size of INTWAKE register in header files and memory maps.
1.23
- Updated memory maps and header files for enhanced LPC2114, LPC2124, LPC2129, LPC2194, LPC2210, LPC2212, LPC2214, LPC2220, LPC2292 and LPC2294 devices.
- Added support for LPC2109, LPC2157, LPC2158 and LPC2420.
- RPC loaders can now preserve target state.
- "unknown target device" error message now returned from RPC loaders if the part ID returned by the LPC2000 is unknown.
1.22
- Now supports LPC2387 devices with part IDs of 0x1700FF35.
1.21
- irq_handler.s now handles interrupt occurring during interrupt disable instruction.
1.20
- Corrected definition of DMACConfiguration register.
1.19
- Corrected definition of I2C status register.
1.18
- LPC23xx/LPC24xx startup code now configures CCLK to 72Mhz.
- LPC23xx/LPC24xx loader now runs at 72Mhz.
- Added LPC23xx clock functions to liblpc2000.
- Added definition of PCONP_PCLCD bit for LPC247x targets.
1.17
- Missing multi-threaded liblpc2000 libraries now included in package once again.
1.16
- Fixed definition of EMCStaticExtendedWait.
- LPC247x memory maps and header files now define PINSEL11.
1.15
- Added timer PWMCON register definitions for LPC2101, LPC2102 and LPC2103.
1.14
- Added support for LPC2365, LPC2367, LPC2377, LPC2387 and LPC2388.
- Added support for LPC2458, LPC2460, LPC2470 and LPC2478.
- Fixed definition of LPC23xx SCS GPIOM bit in memory map and header files.
- Corrected base address of LP23xx/LPC24xx USB host controller.
1.13
- Fixed MCI Response register definitions in memory map and header files.
- Removed check for spurious interrupts for PL192 VIC.
1.12
- liblpc2000_get_ram_size() now returns a size for LPC2210, LPC2220 and LPC2290 devices.
- Corrected the specified size of battery RAM for LPC2364, LPC2366, LPC2368, LPC2378 and LPC2468 devices.
- Added CAN controller to LPC2290 definitions.
- Increased LPC2290 internal RAM size to 64K in order to support 01 parts.
1.11
- Added option to disable PLL configuration in startup code using the NO_PLL_ENABLE definition.
- CAN register definitions now have aliases with the prefix "CANn" in the header files..
- Fixed CAN SR register definitions in memory map and header files.
- Fixed DMACRawIntTCStatus and DMACRawIntErrorStatus register definitions in memory map and header files.
- Fixed TIMER CCR register definitions in memory map and header files.
- Fixed PWM CCR register definitions in memory map and header files.
- The function defaultISR in VIC.c no longer automatically re-enables inerrupts.
1.10
- Fixed the address of the IO2IntClr register definitions.
- Now supports LPC2364 devices with part IDs of 0x1600F902.
- Now supports LPC2366 devices with part IDs of 0x1600F923.
- Now supports LPC2378 devices with part IDs of 0x1700FD25.
- Now supports LPC2468 devices with part IDs of 0x1600FF35.
1.9
- Now supports LPC2368 devices with part IDs of 0x1600F925.
- Now supports LPC2378 devices with part IDs of 0x0703F925.
1.8
- Fixed IO1SET, IO1DIR and IO1CLR definitions in LPC23xx memory map and header files.
1.7
- Added support for LPC2468 devices.
- The liblpc2000_get_flash_size function now returns the size of FLASH available for use rather than the actual FLASH size.
- Fixed a bug causing the libmem_erase_all function to fail when using the LPC2000's internal FLASH memory LIBMEM driver.
- Added .liblpc2000 suffix to all liblpc2000 program sections.
- Added missing SSP DMACR register definitions for LPC23XX devices.
- Fixed the address of the U1ACR and U1FDR register definitions.
1.6
- Fixed the VECTORED_IRQ_INTERRUPTS version of the IRQ vector and checksum in the LPC23xx startup code so that it accesses VICAddress register correctly.
- Updated LPC23xx header files and memory map files.
- Added LPC2468 support.
1.5
- The LPC2300 FLASH loader now resets CCLKCFG. This fixes a problem requiring the JTAG interface to be slowed down when downloading onto a target that cannot be reset to defined state (e.g. resetting the target with an application in FLASH that has been compiled with STARTUP_FROM_RESET defined).
1.4
- Fixed LPC2364, LPC2366 and LPC2378 internal FLASH programming.
- liblpc2000_get_flash_size now returns the correct FLASH size.
1.3
- Renamed package from "Philips LPC2000" to "NXP LPC2000".
- Added RPC loader in order to improve FLASH programming performance when using FT2232 based JTAG interfaces and J-Link.
- Fixed register bit definitions in memory maps and header files for ADC, timer and power control registers.
1.2
- Support for LPC23xx devices.
- New project wizard now seperates LPC21xx, LPC22xx and LPC23xx devices.
- Updated header files and memory maps based on latest datasheets (Nov 2006).
- Header files now contain base and offset defines for use in assembly code.
1.1
- Corrected LPC22xx header files and memory maps to include GPIO ports 2 and 3.
- Modified loader memory map so that .libmem sections will be placed correctly.
- Fixed erase all for LPC2124, LPC2214, LPC2129, LPC2194, LPC2292 and LPC2294 devices.
1.0
- Initial Release.
Documentation
Known Problems
-
The LIBMEM driver for the LPC2000 internal FLASH won't be able to write to FLASH if the .bss section
is placed in external RAM. To workaround this, use the liblpc2000_register_libmem_driver_ex
function rather than liblpc2000_register_libmem_driver to register the driver and place the
write buffer in internal SRAM. For example:
static uint8_t write_buffer[4096] __attribute__ ((section(".fast"))); ... res = liblpc2000_register_libmem_driver_ex(&flash1_handle, liblpc2000_get_flash_size(), liblpc2000_get_flash_geometry(), write_buffer, sizeof(write_buffer));