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