mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
arm/tms570: document BSP setup with included hardware initialization.
This commit is contained in:
@@ -2,11 +2,14 @@ Development Board: TMS570LS31x Hercules Development Kit from TI
|
|||||||
|
|
||||||
http://www.ti.com/tool/tmds570ls31hdk
|
http://www.ti.com/tool/tmds570ls31hdk
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
Drivers:
|
Drivers:
|
||||||
|
|
||||||
o Console
|
o Console
|
||||||
o Clock
|
o Clock
|
||||||
o Ethernet - work in progress
|
o Ethernet - external lwIP fork repository
|
||||||
|
|
||||||
BSP variants:
|
BSP variants:
|
||||||
tms570ls3137_hdk_intram - place code and data into internal SRAM
|
tms570ls3137_hdk_intram - place code and data into internal SRAM
|
||||||
@@ -14,14 +17,20 @@ BSP variants:
|
|||||||
tms570ls3137_hdk_with_loader - reserve 256kB at Flash start for loader
|
tms570ls3137_hdk_with_loader - reserve 256kB at Flash start for loader
|
||||||
and place RTEMS application from address
|
and place RTEMS application from address
|
||||||
0x00040000
|
0x00040000
|
||||||
tms570ls3137_hdk - variant prepared for stand-alone RTEMS application
|
tms570ls3137_hdk - variant for stand-alone RTEMS application stored
|
||||||
stored and running directly from flash. Not working yet.
|
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
|
Tool-chain used for development
|
||||||
GCC 4.9.0 + Newlib 2.1.0 + Binutils 2.24 configuration:
|
-------------------------------
|
||||||
|
|
||||||
|
arm-rtems4.12-gcc (GCC) 6.1.1 20160526 + Newlib 2.4.0.20160527 + Binutils 2.26.20160125
|
||||||
|
|
||||||
CFLAGS="-O2 -pipe" LDFLAGS=-s \
|
CFLAGS="-O2 -pipe" LDFLAGS=-s \
|
||||||
../../../src/gcc-4.9/configure --target=arm-rtems4.11 --prefix=/usr \
|
../../../src/gcc-6.1/configure --target=arm-rtems4.12 --prefix=/usr \
|
||||||
--enable-languages=c,c++ \
|
--enable-languages=c,c++ \
|
||||||
--disable-libstdcxx-pch \
|
--disable-libstdcxx-pch \
|
||||||
--with-gnu-ld \
|
--with-gnu-ld \
|
||||||
@@ -38,33 +47,102 @@ Tool-chain
|
|||||||
--enable-version-specific-runtime-libs \
|
--enable-version-specific-runtime-libs \
|
||||||
--enable-newlib-iconv \
|
--enable-newlib-iconv \
|
||||||
--disable-lto \
|
--disable-lto \
|
||||||
|
--disable-lto \
|
||||||
|
--enable-libgomp \
|
||||||
|
--enable-newlib-iconv \
|
||||||
|
--enable-newlib-iconv-encodings="iso_8859_1,utf_8" \
|
||||||
|
|
||||||
Patches required for Cortex-R and big-endian ARM support are already
|
All patches required for Cortex-R and big-endian ARM support are already
|
||||||
accepted by the mainline.
|
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
|
Execution
|
||||||
|
---------
|
||||||
|
|
||||||
Currently, a bootloader is not used. For test and debug purposes, TI's
|
Application build by above process can be directly programmed
|
||||||
HalCoGen generated application is used to set up the board and then
|
into Flash and run.
|
||||||
the RTEMS application image is loaded using OpenOCD to internal
|
|
||||||
EEC SRAM or external DRAM. The following features are
|
|
||||||
not implemented in the BSP:
|
|
||||||
|
|
||||||
+ Initial complex CPU and peripheral initialization
|
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
|
+ Cores Self-test
|
||||||
|
|
||||||
Setup application code is available there:
|
Setup application code is available there:
|
||||||
https://github.com/hornmich/tms570ls3137-hdk-sdram
|
https://github.com/hornmich/tms570ls3137-hdk-sdram
|
||||||
|
|
||||||
Howto setup TMDS570LS31HDK?
|
TMDS570LS31HDK setup to use SDRAM to load and debug RTEMS applications
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
o Unpack board.
|
o Program SDRAM_SCI_configuration-program or another boot loader
|
||||||
o Verify that demo application runs.
|
(for example ETHERNET XCP is developed)
|
||||||
o Upload bootloader specified above
|
|
||||||
o write BSP application either to sdram or intram and jump to RTEMS start code
|
o write BSP application either to sdram or intram and jump to RTEMS start code
|
||||||
|
|
||||||
Additional information about the board can be found at
|
ETHERNET
|
||||||
http://www.rtems.org/wiki/index.php/Tms570
|
--------
|
||||||
|
|
||||||
|
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
|
Additional information about the CPU can be found at
|
||||||
http://www.ti.com/product/tms570ls3137
|
http://www.ti.com/product/tms570ls3137
|
||||||
|
|||||||
Reference in New Issue
Block a user