Skip to content

zp214xpa README FILE

The ZP213X/4XPA board from the0.net with LPC2148 installed. Includes support for the UG-2864AMBAG01 OLED from The0.net.

Contents

o MCU Connections o Serial Console o Using OpenOCD and GDB with an FT2232 JTAG emulator o Configurations

MCU Connections:

The ZP213X/4XPA board is no more than an LPC2148, crystals, USB device and several connectors.

Module Socket:

PIN NAME PIN NAME 1 VBAT 56 VCC 2 3V3 55 Vusb 3 VREF 54 3V3 4 P0.0 53 RESET 5 P0.1 52 P1.31 6 P0.2 51 P1.30 7 P0.3 50 P1.29 8 P0.4 49 P1.28 9 P0.5 48 P1.27 10 P0.6 47 P1.26 11 P0.7 46 P1.25 12 P0.8 45 P1.24 13 P0.9 44 P1.23 14 P0.10 43 P1.22 15 P0.11 42 P1.21 16 P0.12 41 P1.20 17 P0.13 40 P1.19 18 P0.14 39 P1.18 19 P0.15 38 P1.17 20 P0.16 37 P1.16 21 P0.17 36 P0.31 22 P0.18 35 P0.30 23 P0.19 34 P0.29 24 P0.20 33 P0.28 25 P0.21 32 P0.27 26 P0.22 31 P0.26 27 P0.23 30 P0.25 28 GND 29 GND

JTAG Debug:

PIN NAME PIN NAME 1 VCC1 2 3V3 3 P1.31 NTRST 4 GND 5 P1.28 TDI 6 GND 7 P1.30 TMS 8 GND 9 P1.29 TCK 10 GND 11 P1.26 RTCK 12 GND 13 P1.27 TDO 14 GND 15 RESET NRTS 16 GND 17 N/C NC0 18 GND 19 N/C NC1 20 GND

Z28160 Net Module:

PIN NAME PIN NAME 1 P0.7 /CS 10 3V3 VCC 2 P0.4 SCK 9 P1.24 RST 3 P0.6 SI 8 N/C CLKOUT 4 P0.5 SO 7 INT P1.25 5 GND 6 N/C WOL

SPI LCD:

PIN NAME 1 3V3 3V3 2 VCC 5V 3 P0.18 RESET(DO) 4 P0.19 DI 5 P0.20 CS 6 P0.17 SCK 7 P0.23 A0(RESET) 8 N/C LED- 9 N/C LED+(BL) 10 GND GND

USB Interface:

Vusb, P0.26, P0.27

Serial Console:

Both UART0 and UART1 are always enabled. UART0 is configured to be the serial console in these configurations.

P0.0/TXD0/PWM1 Module Socket, Pin 4 P0.1/RxD0/PWM3/EINT0 Module Socket, Pin 5

P0.8/TXD1/PWM4/AD1.1 Module Socket, Pin 12 P0.9/RxD1/PWM6/EINT3 Module Socket, Pin 13

LCD Interface

PIN NAME PIN CONFIGURATION 3 RESET P0.18/CAP1.3/MISO1/MAT1.3P0.18 RESET

  • General purpose output 4 DI P0.19/MAT1.2/MOSI1/CAP1.2P0.19 DI - Alternate function 2 5 CS P0.20/MAT1.3/SSEL1/EINT3 - General purpose output 6 SCK P0.17/CAP1.2/SCK1/MAT1.2 - Alternate function 2 7 A0 P0.23/VBUS - General purpose output

ENC29J60 Interface

PIN NAME PIN CONFIGURATION 1 /CS P0.7/SSEL0/PWM2/EINT2 - General purpose output 2 SCK P0.4/SCK0/CAP0.1/AD0.6 - Alternate function 1 3 SI P0.6/MOSI0/CAP0.2/AD1.0 - Alternate function 1 4 SO P0.5/MISO0/MAT0.1/AD0.7 - Alternate function 1 7 INT P1.25/EXTIN0 - Alternal function 1 9 RST P1.24/TRACECLK - General purpose output

Using OpenOCD and GDB with an FT2232 JTAG emulator

Downloading OpenOCD

You can get information about OpenOCD here: http://openocd.berlios.de/web/
and you can download it from here. http://sourceforge.net/projects/openocd/files/.
To get the latest OpenOCD with more mature lpc214x, you have to download
from the GIT archive.

  git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd

At present, there is only the older, frozen 0.4.0 version.  These, of course,
may have changed since I wrote this.

Building OpenOCD under Cygwin:

You can build OpenOCD for Windows using the Cygwin tools.  Below are a
few notes that worked as of November 7, 2010.  Things may have changed
by the time you read this, but perhaps the following will be helpful to
you:

1. Install Cygwin (http://www.cygwin.com/).  My recommendation is to install
   everything.  There are many tools you will need and it is best just to
   waste a little disk space and have everything you need.  Everything will
   require a couple of gigbytes of disk space.

2. Create a directory /home/OpenOCD.

3. Get the FT2232 driver from http://www.ftdichip.com/Drivers/D2XX.htm and
   extract it into /home/OpenOCD/ftd2xx

   $ pwd
   /home/OpenOCD
   $ ls
   CDM20802 WHQL Certified.zip
   $ mkdir ftd2xx
   $ cd ftd2xx
   $ unzip ..CDM20802\ WHQL\ Certified.zip
   Archive:  CDM20802 WHQL Certified.zip
   ...

3. Get the latest OpenOCD source

   $ pwd
   /home/OpenOCD
   $ git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd

   You will then have the source code in /home/OpenOCD/openocd

4. Build OpenOCD for the FT22322 interface

   $ pwd
   /home/OpenOCD/openocd
   $ ./bootstrap

   Jim is a tiny version of the Tcl scripting language.  It is needed
   by more recent versions of OpenOCD.  Build libjim.a using the following
   instructions:

   $ git submodule init
   $ git submodule update
   $ cd jimtcl
   $ ./configure --with-jim-ext=nvp
   $ make
   $ make install

   Configure OpenOCD:

   $ ./configure --enable-maintainer-mode --disable-werror --disable-shared \
                --enable-ft2232_ftd2xx --with-ftd2xx-win32-zipdir=/home/OpenOCD/ftd2xx \
                LDFLAGS="-L/home/OpenOCD/openocd/jimtcl"

    Then build OpenOCD and its HTML documentation:

    $ make
    $ make html

    The result of the first make will be the "openocd.exe" will be
    created in the folder /home/openocd/src.  The following command
    will install OpenOCD to a standard location (/usr/local/bin)
    using using this command:

    $ make install

Helper Scripts.

I have been using the Olimex ARM-USB-OCD JTAG debugger with the
ZP213X/4XPA.  OpenOCD requires a configuration file.  I keep the
one I used last here:

  boards/zpa214xpa/tools/olimex.cfg

However, the "correct" configuration script to use with OpenOCD may
change as the features of OpenOCD evolve.  So you should at least
compare that olimex.cfg file with configuration files in
/usr/local/share/openocd/scripts/target (or /home/OpenOCD/openocd/tcl/target).

There is also a script on the tools/ directory that I use to start
the OpenOCD daemon on my system called oocd.sh.  That script will
probably require some modifications to work in another environment:

- Possibly the value of OPENOCD_PATH and TARGET_PATH
- It assumes that the correct script to use is the one at
  boards/arm/lpc214x/zp214xpa/tools/olimex.cfg

Starting OpenOCD

Then you should be able to start the OpenOCD daemon like:

  boards/arm/lpc214x/zp214xpa/tools/oocd.sh $PWD

If you add that path to your PATH environment variable, the command
simplifies to just:

  oocd.sh $PWD

Where it is assumed that you are executing oocd.sh from the top-level
directory where NuttX is installed.  $PWD will be the path to the
top-level NuttX directory.

Connecting GDB

Once the OpenOCD daemon has been started, you can connect to it via
GDB using the following GDB command:

  arm-nuttx-elf-gdb
  (gdb) target remote localhost:3333

NOTE:  The name of your GDB program may differ.  For example, with the
CodeSourcery toolchain, the ARM GDB would be called arm-none-eabi-gdb.

After starting GDB, you can load the NuttX ELF file:

  (gdb) symbol-file nuttx
  (gdb) load nuttx

NOTES:
1. Loading the symbol-file is only useful if you have built NuttX to
   include debug symbols (by setting CONFIG_DEBUG_SYMBOLS=y in the
   .config file).

OpenOCD will support several special 'monitor' commands.  These
GDB commands will send comments to the OpenOCD monitor.  Here
are a couple that you will need to use:

 (gdb) monitor reset
 (gdb) monitor halt

NOTES:
1. The MCU must be halted using 'mon halt' prior to loading code.
2. Reset will restart the processor after loading code.
3. The 'monitor' command can be abbreviated as just 'mon'.

Configurations:

Each NXP LPC214x configuration is maintained in a sub-directory and can be selected as follow:

tools/configure.sh zp214xpa:<subdir>

Where <subdir> is one of the following:

nsh: ----

Configures the NuttShell (nsh) located at examples/nsh.  The
Configuration enables only the serial NSH interfaces.

NOTES:

1. This configuration uses the mconf-based configuration tool.  To
   change this configuration using that tool, you should:

   a. Build and install the kconfig-mconf tool.  See nuttx/README.txt
      see additional README.txt files in the NuttX tools repository.

   b. Execute 'make menuconfig' in nuttx/ in order to start the
      reconfiguration process.

2. Default platform/toolchain:

   CONFIG_HOST_LINUX=y              : Linux (Cygwin under Windows okay too).
   CONFIG_ARM_TOOLCHAIN_GNU_EABI=y  : Buildroot (arm-nuttx-elf-gcc)
   CONFIG_RAW_BINARY=y              : Output formats: ELF and raw binary

nxlines: --------

This is the apps/examples/nxlines test using the UG_2864AMBAG01 board
from The0.net that plugs into the "SPI LCD" connector on the ZP3X4XPA
board.

NOTES:

1. This configuration uses the mconf-based configuration tool.  To
   change this configuration using that tool, you should:

   a. Build and install the kconfig-mconf tool.  See nuttx/README.txt
      see additional README.txt files in the NuttX tools repository.

   b. Execute 'make menuconfig' in nuttx/ in order to start the
      reconfiguration process.

2. Default platform/toolchain:

   CONFIG_HOST_LINUX=y              : Linux (Cygwin under Windows okay too).
   CONFIG_ARM_TOOLCHAIN_GNU_EABI=y  : Buildroot (arm-nuttx-elf-gcc)
   CONFIG_RAW_BINARY=y              : Output formats: ELF and raw binary

STATUS:
2012-12-30:  Configuration verified.

2017-11-25:  Grrr... This configuration no longer works.  Some serious bit
  rot has set in.  Now only random garbage appears on the OLED.  Certainly
  a lot has changed since 2012, but I cannot see any change to either this
  configuration, to the LCD driver, or to the LPC2148 support that would
  affect the operation of the LCD.  The nsh configuration is still functional.