Package Title LPC2000 CPU Support Package
Package Version 1.30
CPU NXP LPC2000
Required Additional Packages None

This package contains project templates and system files for the LPC2000.

Package Installation Instructions

CrossWorks Version 2.x Installation Instructions

To install this support package using CrossStudio:

  1. Click the Tools > Package Manager menu option to open the package manager window.
  2. Right click on the LPC2000 CPU Support Package entry and select Install Selected Packages.
  3. Click Next to take you to the summary page.
  4. Click Next to install the package.
  5. Click Finish to close the package manager window.

Alternatively, to manually install this support package:

  1. Download the file NXP_LPC2000.hzq using your web browser.
  2. Click the Tools > Manually Install Packages menu option.
  3. Select the file you have just downloaded to install the package.

CrossWorks Version 1.x Installation Instructions

To install this support package:

  1. Download the file NXP_LPC2000.hzq using your web browser.
  2. Click the Tools > Install Package menu option.
  3. Select the file you have just downloaded to install the package.

Supported Targets

LPC21xx

LPC2101, LPC2102, LPC2103, LPC2104, LPC2105, LPC2106, LPC2109, LPC2114, LPC2119, LPC2124, LPC2129, LPC2131, LPC2132, LPC2134, LPC2136, LPC2138, LPC2141, LPC2142, LPC2144, LPC2146, LPC2148, LPC2157, LPC2158, LPC2194.

LPC22xx

LPC2210, LPC2212, LPC2214, LPC2220, LPC2290, LPC2292, LPC2294.

LPC23xx

LPC2361, LPC2362, LPC2364, LPC2365, LPC2366, LPC2367, LPC2368, LPC2377, LPC2378, LPC2387, LPC2388.

LPC24xx

LPC2420, LPC2458, LPC2460, LPC2468, LPC2470, LPC2478.

Package Version History

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.

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));