arm: lpc32xx: add EA LPC3250 DevKitv2 board support
Add basic support for running U-Boot on the Embedded Artists LPC3250 Developer's Kit v2 board by launching U-Boot from the board's s1l loader (which comes pre-installed on the board). Signed-off-by: Trevor Woerner <twoerner@gmail.com>
This commit is contained in:
@@ -1117,6 +1117,8 @@ dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) += ca-presidio-engboard.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) += imx8mm-cl-iot-gate.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_EA_LPC3250DEVKITV2) += lpc3250-ea3250.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
# Add any required device tree compiler flags here
|
||||
|
||||
15
arch/arm/dts/lpc3250-ea3250-u-boot.dtsi
Normal file
15
arch/arm/dts/lpc3250-ea3250-u-boot.dtsi
Normal file
@@ -0,0 +1,15 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021 Trevor Woerner <twoerner@gmail.com>
|
||||
*/
|
||||
|
||||
/{
|
||||
model = "Embedded Artists LPC3250 DevKit v2 board based on the NXP LPC3250 SoC";
|
||||
chosen {
|
||||
stdout-path = &uart5;
|
||||
};
|
||||
};
|
||||
|
||||
&uart5 {
|
||||
compatible = "nxp,lpc3220-uart", "ns16550a";
|
||||
};
|
||||
@@ -12,9 +12,13 @@ config TARGET_DEVKIT3250
|
||||
config TARGET_WORK_92105
|
||||
bool "Work Microwave Work_92105"
|
||||
|
||||
config TARGET_EA_LPC3250DEVKITV2
|
||||
bool "Embedded Artists LPC3250 Developer's Kit v2"
|
||||
|
||||
endchoice
|
||||
|
||||
source "board/timll/devkit3250/Kconfig"
|
||||
source "board/work-microwave/work_92105/Kconfig"
|
||||
source "board/ea/ea-lpc3250devkitv2/Kconfig"
|
||||
|
||||
endif
|
||||
|
||||
15
board/ea/ea-lpc3250devkitv2/Kconfig
Normal file
15
board/ea/ea-lpc3250devkitv2/Kconfig
Normal file
@@ -0,0 +1,15 @@
|
||||
if TARGET_EA_LPC3250DEVKITV2
|
||||
|
||||
config SYS_BOARD
|
||||
default "ea-lpc3250devkitv2"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "ea"
|
||||
|
||||
config SYS_SOC
|
||||
default "lpc32xx"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "ea-lpc3250devkitv2"
|
||||
|
||||
endif
|
||||
9
board/ea/ea-lpc3250devkitv2/MAINTAINERS
Normal file
9
board/ea/ea-lpc3250devkitv2/MAINTAINERS
Normal file
@@ -0,0 +1,9 @@
|
||||
EMBEDDED ARTISTS LPC3250 DEVKIT v2
|
||||
M: Trevor Woerner <twoerner@gmail.com>
|
||||
S: Maintained
|
||||
F: board/ea/ea-lpc3250devkitv2
|
||||
F: include/configs/ea-lpc3250devkitv2.h
|
||||
F: configs/ea-lpc3250devkitv2_defconfig
|
||||
F: arch/arm/dts/lpc32xx.dtsi
|
||||
F: arch/arm/dts/lpc3250-ea3250.dts
|
||||
F: arch/arm/dts/lpc3250-ea3250-u-boot.dtsi
|
||||
4
board/ea/ea-lpc3250devkitv2/Makefile
Normal file
4
board/ea/ea-lpc3250devkitv2/Makefile
Normal file
@@ -0,0 +1,4 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2021 Trevor Woerner <twoerner@gmail.com>
|
||||
|
||||
obj-y += ea-lpc3250devkitv2.o
|
||||
132
board/ea/ea-lpc3250devkitv2/README.rst
Normal file
132
board/ea/ea-lpc3250devkitv2/README.rst
Normal file
@@ -0,0 +1,132 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
ToC:
|
||||
- Introduction
|
||||
- Booting
|
||||
- Debugging
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
The Embedded Artists LPC3250 Developer's Kit v2 features the LPC3250 SoC
|
||||
which is based on the ARM926EJ-S CPU. The kit features a base board and
|
||||
a removable OEM board which features the SoC. Details, schematics, and
|
||||
documentation are available from the Embedded Artists product website:
|
||||
|
||||
https://www.embeddedartists.com/products/lpc3250-developers-kit-v2/
|
||||
|
||||
The base board includes::
|
||||
- 200 pos, 0.6mm pitch SODIMM connector for OEM Board
|
||||
- LCD expansion connector with control signals for touch screen interface
|
||||
- Expansion connector with all OEM Board signals
|
||||
- Ethernet connector (RJ45)
|
||||
- CAN interface & connector (provision for second CAN interface, but not mounted)
|
||||
- MMC/SD interface & connector
|
||||
- USB1: OTG or Host interface & connector
|
||||
- USB2: Device or Host interface & connector
|
||||
- Provision for NXP JN5148 RF module (former Jennic) interface (RF module not included)
|
||||
- Full modem RS232 (cannot be fully used on 32-bit databus OEM boards)
|
||||
- RS422/485 interface & connector
|
||||
- Provision for IrDA transceiver interface (transceiver not mounted)
|
||||
- I2S audio codec (mic in, line in, line out, headphone out)
|
||||
- SWD/JTAG connector
|
||||
- Trace connector and pads for ETM connector
|
||||
- Serial Expansion Connector, 14-pos connector with UART/I2C/SPI/GPIO pins
|
||||
- Power supply, either via USB or external 5V DC
|
||||
- Optional coin cell battery for RTC and LED on ALARM output (coin cell not included)
|
||||
- OEM Board current measuring
|
||||
- Parallel NOR flash on external memory bus
|
||||
- 16-bit register and LEDs on external memory bus
|
||||
- 5-key joystick
|
||||
- LM75 temperature sensor (I2C connected)
|
||||
- 5 push-button keys (four via I2C and one on ISP-ENABLE)
|
||||
- 9 LEDs (8 via I2C and one on ISP-ENABLE)
|
||||
- Trimming potentiometer to analog input
|
||||
- USB-to-serial bridge on UART #0 (FT232R) and ISP functionality
|
||||
- Reset push-button and LED
|
||||
- Speaker output on analog output from OEM Board, or from I2S audio codec
|
||||
- 160x150 mm in size
|
||||
|
||||
The OEM board::
|
||||
- ARMv5 ARM926EJ-S @ 266 MHz with hard-float VFPv2
|
||||
- 256 KByte IRAM, 64 MByte SDRAM
|
||||
- 128 MByte NAND flash
|
||||
- 4 MByte NOR Flash
|
||||
- Graphics Output: Parallel RGB
|
||||
- Hardware 2D/3D Graphic: No
|
||||
- Hardware Video: SW only
|
||||
- Graphics input: No
|
||||
- Audio: I2S
|
||||
- Ethernet: 10/100 Mbps
|
||||
- USB: 1x FS USB 2.0 OTG
|
||||
- Wi-Fi: No
|
||||
- FlexIO: No
|
||||
- Serial: 2x I2C, 2x SPI, 7x UART
|
||||
- ADC/PWM: 3 ch (10-bit) / 2 ch
|
||||
- SD: MCI
|
||||
- PCIe: No
|
||||
- Serial ATA: No
|
||||
- Size: 68 x 48 mm
|
||||
- Connector: 200 pos SODIMM
|
||||
|
||||
|
||||
Booting
|
||||
=======
|
||||
The processor will start its code execution from an internal ROM,
|
||||
containing the boot code. This boot loader can load code from one of four
|
||||
external sources to internal RAM (IRAM) at address 0x0::
|
||||
- UART5
|
||||
- SSP0 (in SPI mode)
|
||||
- EMC Static CS0 memory
|
||||
- NAND FLASH
|
||||
|
||||
The ROM boot loader loads code as a single contiguous block at a maximum
|
||||
size of 56 kByte. Programs larger than this size must be loaded in more
|
||||
steps, for example, by a secondary boot loader.
|
||||
|
||||
Kickstart Loader
|
||||
----------------
|
||||
By default the Embedded Artists LPC3250 OEM Board is programmed with the
|
||||
kickstart loader in block 0 of the NAND flash. The responsibility of this
|
||||
loader is to load an application stored in block 1 and onwards of the NAND
|
||||
flash. The kickstart loader will load the application into internal RAM
|
||||
(IRAM) at address 0x0.
|
||||
|
||||
Stage 1 Loader (s1l)
|
||||
--------------------
|
||||
By default the Embedded Artists LPC3250 OEM Board is programmed with the
|
||||
stage 1 loader (s1l) in block 1 of the NAND flash. This application will be
|
||||
loaded by the kickstart loader when the LPC3250 OEM Board powers up. The
|
||||
S1L loader will initialize the board, such as clocks and external memory
|
||||
and then start a console where you can give input commands to the loader.
|
||||
S1L offers the following booting options::
|
||||
- MMC/SD card
|
||||
- UART5
|
||||
- NAND Flash
|
||||
|
||||
U-Boot with kickstart+s1l
|
||||
-------------------------
|
||||
Out of the box, the easiest way to get U-Boot running on the EA LPC3250
|
||||
DevKit v2 board is to build the ea-lpc3250devkitv2_defconfig, copy the
|
||||
resulting u-boot.bin to a vfat-formatted MMC/SD card, insert the MMC/SD card
|
||||
into the MMC/SD card slot on the board, reset the board (SW1), and::
|
||||
|
||||
Embedded Artist 3250 Board (S1L 2.0)
|
||||
Build date: Oct 31 2016 13:00:37
|
||||
|
||||
EA3250>load blk u-boot.bin raw 0x83000000
|
||||
File loaded successfully
|
||||
|
||||
EA3250>exec 0x83000000
|
||||
|
||||
|
||||
Debugging
|
||||
=========
|
||||
JTAG debugging of the Embedded Artists LPC3250 Developer's Kit v2 board is
|
||||
easy thanks to the included/populated 20-pin JTAG port on the main board (J8).
|
||||
openocd 0.11 has been used with this board along with the ARM-USB-OCD-H JTAG
|
||||
dongle from Olimex successfully as follows:
|
||||
|
||||
# openocd \
|
||||
-f interface/ftdi/olimex-arm-usb-ocd-h.cfg \
|
||||
-f board/phytec_lpc3250.cfg
|
||||
37
board/ea/ea-lpc3250devkitv2/ea-lpc3250devkitv2.c
Normal file
37
board/ea/ea-lpc3250devkitv2/ea-lpc3250devkitv2.c
Normal file
@@ -0,0 +1,37 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Board init file for Embedded Artists LPC3250 DevKit v2
|
||||
* Copyright (C) 2021 Trevor Woerner <twoerner@gmail.com>
|
||||
*/
|
||||
|
||||
#include <init.h>
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/global_data.h>
|
||||
|
||||
#include <asm/arch/clk.h>
|
||||
#include <asm/arch/wdt.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
int
|
||||
board_early_init_f(void)
|
||||
{
|
||||
lpc32xx_uart_init(CONFIG_CONS_INDEX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
board_init(void)
|
||||
{
|
||||
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x2000;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
dram_init(void)
|
||||
{
|
||||
gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_64M);
|
||||
return 0;
|
||||
}
|
||||
23
configs/ea-lpc3250devkitv2_defconfig
Normal file
23
configs/ea-lpc3250devkitv2_defconfig
Normal file
@@ -0,0 +1,23 @@
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_ICACHE_OFF=y
|
||||
CONFIG_SYS_DCACHE_OFF=y
|
||||
CONFIG_ARCH_CPU_INIT=y
|
||||
CONFIG_ARCH_LPC32XX=y
|
||||
CONFIG_SYS_TEXT_BASE=0x83000000
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
CONFIG_TARGET_EA_LPC3250DEVKITV2=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="lpc3250-ea3250"
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
# CONFIG_AUTOBOOT is not set
|
||||
# CONFIG_USE_BOOTCOMMAND is not set
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_SYS_PROMPT="EA-LPC3250v2=> "
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
# CONFIG_NET is not set
|
||||
CONFIG_LPC32XX_GPIO=y
|
||||
CONFIG_SPECIFY_CONSOLE_INDEX=y
|
||||
CONFIG_CONS_INDEX=5
|
||||
CONFIG_SYS_NS16550=y
|
||||
CONFIG_PANIC_HANG=y
|
||||
37
include/configs/ea-lpc3250devkitv2.h
Normal file
37
include/configs/ea-lpc3250devkitv2.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Embedded Artists LPC3250 DevKit v2
|
||||
* Copyright (C) 2021 Trevor Woerner <twoerner@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_EA_LPC3250DEVKITV2_H__
|
||||
#define __CONFIG_EA_LPC3250DEVKITV2_H__
|
||||
|
||||
#include <linux/sizes.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
/*
|
||||
* SoC and board defines
|
||||
*/
|
||||
#define CONFIG_MACH_TYPE MACH_TYPE_LPC3XXX
|
||||
#define CONFIG_SKIP_LOWLEVEL_INIT
|
||||
#define CONFIG_BOARD_SIZE_LIMIT 0x000fffff /* maximum allowable size for full U-Boot binary */
|
||||
|
||||
/*
|
||||
* RAM
|
||||
*/
|
||||
#define CONFIG_SYS_MALLOC_LEN SZ_4M
|
||||
#define CONFIG_SYS_SDRAM_BASE EMC_DYCS0_BASE
|
||||
|
||||
/*
|
||||
* cmd
|
||||
*/
|
||||
#define CONFIG_SYS_LOAD_ADDR 0x80100000
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_4K - GENERATED_GBL_DATA_SIZE)
|
||||
|
||||
/*
|
||||
* SoC-specific config
|
||||
*/
|
||||
#include <asm/arch/config.h>
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user