Version 14 (modified by JoelSherrill, on 11/13/11 at 06:48:51) (diff)

Add more variations


{{Infobox BSP |BSP_name = LPC24xx |Manufacturer = NXP |image = Lpcxx.png |caption = LPC2478 board |Board_URL = |Architecture = ARMv4 |CPU_model = ARM7TDMI-S |Monitor = U-Boot |Simulator = N/A |Aliases = Various |RAM = 32 MB SDRAM + 96 KB internal |NVMEM = 128 MB NAND Flash, 4 MB NOR Flash + 512 KB internal |Serial = 3 x I2C, 1 x I2S, 4 x UARTs, 3 x SPI/SSP |NICs = 10/100 Ethernet |Other = USB 2.0 full-speed OTG/Device/ OHCI plus PHY and DMA }}


The LPC24xx series is built on a 2-AHB bus architecture. Like the LPC23xx series, the LPC24xx features Ethernet, USB FS, and CAN. The LPC24xx further adds a USB Host/OTG, an external bus, and higher I/O count, making this the most powerful series of ARM7-based MCUs in the marketplace. The newest LPC247x microcontrollers further integrate an LCD controller supporting high resolution STN and TFT panels with up to 24-bit true color. These microcontrollers support Super-Twisted Nematic (STN) and Thin-Film Transistor (TFT) graphic display panels up to 1024 x 768 pixels, from monochrome up to 24-bit true-color, and with hardware cursor support. This capability is ideal for point-of-sale, industrial, and medical/diagnostic applications. Further, the LCD controller supports Windows CE data formats.

This BSP has a number of BSP variants:

  • lpc24xx_ncs_ram
  • lpc24xx_ncs_rom_ext
  • lpc24xx_ncs_rom_int
  • lpc2362
  • lpc23xx_tli800
  • lpc24xx_ea

Key Features

  • 72-MHz, 32-bit ARM7TDMI-S with dual AHB buses
  • 512 KB of ISP/IAP Flash and 98 KB of SRAM
  • 10/100 Ethernet MAC with DMA and MII/RMII interface
  • Two CAN 2.0B controllers with acceptance filtering
  • General-purpose DMA controller
  • 10-bit A/D converter and 10-bit D/A converter
  • 160 general-purpose Fast I/O pins
  • XGA LCD controller with dedicated DMA for TFT and
  • STN panels (LPC247x only)
  • USB 2.0 full-speed OTG/Device/Host plus PHY and DMA
  • Multiple serial interfaces: three I2C, one I2S, four UARTs, three SPI/SSP
  • External memory interface for SDRAM, SRAM, and Flash
  • Two PWM units and Boundary scan
  • Four 32-bit timers, a low-power realtime clock, and a Watchdog timer
  • 4-MHz internal RC (IRC) oscillator trimmed to 1% accuracy
  • 160 general-purpose Fast I/O pins
  • Single 3.3-V power supply


Board Setup

RTEMS Lab Board

The LPC24xx base board in the RTEMS lab had to be slightly modified to enable remote control of power. As shipped, the board is powered either through an external 9-15V DC jack or through the USB port. When power is supplied through the USB port, the external jack has no effect. The 5V DC power present on the MINI-USB-B connector pin 1 powers the USB Serial Bridge chip U8 then flows through zener diode D6 to power the rest of the board. Unsoldering one end of the zener diode prevents the USB voltage from powering the board but still allows it to power the USB Serial Bridge chip, allowing us to remotely control the power to the board.

Use the boot monitor's "printenv" command to display the firmware settings:

LPC2468_OEM_Board #  printenv
bootargs=root=/dev/ram initrd=0xa1800000,4000k console=ttyS0,38400N8
tftp_boot=tftpboot a0008000 linux.bin;tftpboot a1800000 romfs.bin;go a0008000
nand_boot=nand read a0008000 0 200000;nand read a1800000 200000 400000;go a0008000
mmc_boot=mmc;fatload mmc 0 a0008000 linux.bin;fatload mmc 0 a1800000 romfs.bin;go a0008000
update_uboot=tftpboot a1000000 u-boot.bin;protect off 0 2ffff;erase 0 2ffff;cp.b a1000000 0 $(filesize)
update_nor=tftpboot a1000000 linux.bin;protect off 80000000 803fffff;erase 80000000 803fffff;cp.b a1000000 80000000 $(filesize);tftpboot a1000000 romfs.bin;cp.b a1000000 80200000
update_nand=nand erase;tftpboot a1000000 linux.bin;nand write a1000000 0 200000;tftpboot a1000000 romfs.bin;nand write a1000000 200000 400000
bootcmd=echo Booting RTEMS ...;run rtems
rtems=tftp a1000000 /lpc24xx_ea.img;bootm

Environment size: 989/4092 bytes

Downloading and Executing

Use the boot monitor's boot command to download and execute the RTEMS image:

LPC2468_OEM_Board # boot
Booting RTEMS ...
emac: link status = 100Mbps, full duplex
emac: MAC address =  0:1a:f1: 0: 7:a2
TFTP from server; our IP address is
Filename '/lpc24xx_ea.img'.
Load address: 0xa1000000
Loading: ##################################
Bytes transferred = 169211 (294fb hex)
## Booting image at a1000000 ...
   Image Name:   RTEMS
   Image Type:   ARM RTEMS Kernel Image (gzip compressed)
   Data Size:    169147 Bytes = 165.2 kB
   Load Address: a0000000
   Entry Point:  a0000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Transferring control to RTEMS (at address a0000000) ...?


How do you debug code on this board? What gdb setup? BDM, stub, etc?

Test Reports

{{Test Report |Version = CVS head |Date = March 24, 2011 |User = User:Richard Campbell? |Report = Successfully ran ticker and File I/O. }}

{{Test Report |Version = CVS head |Date = 2009-12-28 |User = User:Unknown? |Report = Complete test suite pass with VFP soft-float model. }}