mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-17 10:18:38 +00:00
ba621fe3a9
Enable a DMed i2c driver for the ea-lpc3250devkitv2 board. Include some sample commands/output for testing. Signed-off-by: Trevor Woerner <twoerner@gmail.com>
186 lines
6.1 KiB
ReStructuredText
186 lines
6.1 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0+
|
|
|
|
ToC:
|
|
- Introduction
|
|
- Booting
|
|
- Debugging
|
|
- i2c
|
|
|
|
|
|
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
|
|
|
|
|
|
i2c
|
|
===
|
|
Some of the LEDs on the board are connected via an I/O Expander (PCA9532) that
|
|
is attached to the i2c1 bus. Here is a sample session of toggling some of
|
|
these LEDs via i2c in U-Boot:
|
|
|
|
show the existing i2c busses:
|
|
EA-LPC3250v2=> i2c bus
|
|
Bus 0: i2c@300
|
|
Bus 1: i2c@400a0000
|
|
Bus 2: i2c@400a8000
|
|
|
|
set i2c1 as the current bus:
|
|
EA-LPC3250v2=> i2c dev 1
|
|
Setting bus to 1
|
|
|
|
see what potential devices are found with rudimentary probing on i2c1:
|
|
EA-LPC3250v2=> i2c probe
|
|
Valid chip addresses: 1A 1D 48 50 57 60 66 6E
|
|
|
|
According to the schematics the i2c slave address of the PCA9532 is 0x60.
|
|
|
|
dump all of the 10 registers from the I/O Expander; NOTE that the 0x10 in the
|
|
command specifies the self-incrementing mode of the PCA9532; also NOTE that
|
|
the values repeat themseves to fill out a full 16 bytes:
|
|
EA-LPC3250v2=> i2c md 0x60 0x10 10
|
|
0010: 00 ff 00 80 00 80 00 00 00 00 4f ff 00 80 00 80 ..........O.....
|
|
|
|
turn on LEDs 23, 25, 27, and 29 (green):
|
|
EA-LPC3250v2=> i2c mw 0x60 9 0x55
|
|
|
|
turn on LEDs 22, 24, 26, and 28 (red):
|
|
EA-LPC3250v2=> i2c mw 0x60 8 0x55
|
|
|
|
dim the green LEDs (23, 25, 27, 29):
|
|
EA-LPC3250v2=> i2c mw 0x60 3 0x20
|
|
EA-LPC3250v2=> i2c mw 0x60 9 0xaa
|
|
|
|
turn off all LEDs (23-29):
|
|
EA-LPC3250v2=> i2c mw 0x60 8 0
|
|
EA-LPC3250v2=> i2c mw 0x60 9 0
|
|
|
|
read value of switches (input):
|
|
EA-LPC3250v2=> i2c md 0x60 0 1
|
|
0000: 4f O
|
|
[none are pressed]
|
|
|
|
press and hold SW2 while running the following:
|
|
EA-LPC3250v2=> i2c md 0x60 0 1
|
|
0000: 4e N
|
|
[SW2 is pressed]
|