Development Board: TMS570LS31x Hercules Development Kit from TI

http://www.ti.com/tool/tmds570ls31hdk

Overview
--------

Drivers:

  o Console
  o Clock
  o Ethernet - external lwIP fork repository

BSP variants:
  tms570ls3137_hdk_intram - place code and data into internal SRAM
  tms570ls3137_hdk_sdram - place code into external SDRAM and data to SRAM
  tms570ls3137_hdk_with_loader - reserve 256kB at Flash start for loader
                                 and place RTEMS application from address
                                 0x00040000
  tms570ls3137_hdk - variant for stand-alone RTEMS application stored
                     and running directly from flash. This variant
                     requires initialization of hardware to be integrated
                     into RTEMS. RTEMS has to be configured with
                       TMS570_USE_HWINIT_STARTUP=1
                     and initialization code has to be included in the sources.

Tool-chain used for development
-------------------------------

  arm-rtems4.12-gcc (GCC) 6.1.1 20160526 + Newlib 2.4.0.20160527 + Binutils 2.26.20160125

  CFLAGS="-O2 -pipe" LDFLAGS=-s \
  ../../../src/gcc-6.1/configure --target=arm-rtems4.12 --prefix=/usr \
               --enable-languages=c,c++ \
               --disable-libstdcxx-pch \
               --with-gnu-ld \
               --with-gnu-as \
               --enable-threads \
               --enable-target-optspace \
               --with-system-zlib \
               --verbose \
               --disable-nls --without-included-gettext \
               --disable-win32-registry \
               --with-newlib \
               --enable-plugin \
               --enable-newlib-io-c99-formats \
               --enable-version-specific-runtime-libs \
               --enable-newlib-iconv \
               --disable-lto \
               --disable-lto \
               --enable-libgomp \
               --enable-newlib-iconv \
               --enable-newlib-iconv-encodings="iso_8859_1,utf_8" \

All patches required for Cortex-R and big-endian ARM support are already
integrated in GCC the mainline.

RTEMS build configuration used for testing of self contained
applications to run directly from Flash

  ../../../src/rtems/configure  --target=arm-rtems4.12 --prefix=/opt/rtems4.12 \
    --enable-rtems-inlines --disable-multiprocessing --enable-cxx \
    --enable-rdbg --enable-maintainer-mode --enable-tests=samples \
    --disable-networking --enable-posix --enable-itron --disable-ada \
    --disable-expada --disable-multilib --disable-docs \
    --enable-rtemsbsp="tms570ls3137_hdk" \
    --enable-rtems-debug \
    TMS570_USE_HWINIT_STARTUP=1

Execution
---------

Application build by above process can be directly programmed
into Flash and run.

For test and debug purposes, TI's HalCoGen generated application
is used to set up the board and then the RTEMS application
image is loaded using OpenOCD to internal EEC SRAM or external SDRAM.
This prevents wear of Flash which has limited guaranteed
erase cycles count.

The following features are implemented in the BSP only partially:

 + Initial CPU and peripheral initialization
 + Cores Self-test

Setup application code is available there:
          https://github.com/hornmich/tms570ls3137-hdk-sdram

TMDS570LS31HDK setup to use SDRAM to load and debug RTEMS applications
-----------------------------------------------------------------------

  o Program SDRAM_SCI_configuration-program or another boot loader
    (for example ETHERNET XCP is developed)
  o write BSP application either to sdram or intram and jump to RTEMS start code

ETHERNET
--------

For ETHERNET, the lwIP port for TMS570LS3137 has been developed
at Industrial Informatics Group of Czech Technical University
in Prague and development versions are available on SourceForge.

The RTEMS and TMS570 support is included in uLAN project lwIP
repository for now

  https://sourceforge.net/p/ulan/lwip-omk/

But other place should be found when RTEMS lwIP
integration with read, write, close etc. functions
is implemented in future.

Adapt BSP for another TMS570 based hardware
-------------------------------------------

When TMS570_USE_HWINIT_STARTUP=1 then quite complete
initialization and selft-test code is included in TMS570
BSP build. The support included in hwinit subdirectory
provides version of bsp_start_hook_0 and bsp_start_hook_1
which proceeds many self-tests functions, clocks, PLLs
peripherals and other subsystems configuration.

Complete pin multiplexer initialization according
to the list of individual pins functions is included.
Pins function definition can be found and altered
in a file

 rtems/c/src/lib/libbsp/arm/tms570/hwinit/init_pinmux.c

Complete "database" of all possible pin functions for
TMS570LS3137 chip is provided in a file

  rtems/c/src/lib/libbsp/arm/tms570/include/tms570ls3137zwt-pins.h

If another package or chip is considered then tools found
in next repository can be used or extended to generate header
files and pins "database"

  https://github.com/AoLaD/rtems-tms570-utils

Links to additional information
-------------------------------

Additional information about the BSP and board can be found at
  https://devel.rtems.org/wiki/TBR/BSP/Tms570

Additional information about the CPU can be found at
  http://www.ti.com/product/tms570ls3137
