Version 8 (modified by Pavel Pisa, on 09/22/16 at 22:45:54) (diff) |
---|
Tms570
BSP Information | |
BSP_name | TMS570 (TMS570LS3137 HDK) |
Manufacturer | Texas Instruments |
image | TMS570LS31x_HDK_Kit.jpg |
caption | TMS570LS31x HDK Kit |
Board_URL | http://www.ti.com/tool/tmds570ls31hdk |
Architecture | ARM Cortex-R (big-endian) |
CPU_model | Texas Instruments Cortex-R TMS570LS3137 microcontroller |
Monitor | None, simple HW setup or XCP loader |
Simulator | No. |
Aliases | tms570ls3137_hdk, tms570ls3137_hdk_intram, tms570ls3137_hdk_sdram |
RAM | 256 kB ECC SRAM internal + 8 MB SDRAM |
NVMEM | 3 MB ECC Flash |
Serial | 2 x UARTs (1 with LIN), 1 x I2C, 3 x CAN, 1 x 2ch FlexRay?, 3+2 x SPI |
NICs | 1 x 10/100 Ethernet |
Dimensions | 125 x 110 mm |
Other | 2 x N2HET timing coprocessor, 2 x ADC |
Overview
The TMS570LS3137 device is a high-performance automotive-grade microcontroller family for safety systems.
Features
- Texas Instruments TMS570LS3137 MCU:
- Dual CPUs in lockstep
- CPU and memory Built-In Self-Test (BIST) logic
- ECC on both the flash and the data SRAM
- Parity on peripheral memories
- Loopback capability on peripheral I/Os
BSP Status
The basic TMS570 support has been included in RTEMS mainline sources (commit) in August 2014. Support for initial hardware setup and basic system selftest has been included in RTEMS mainline in September 2016 (commit)
Development of the BSP started as Premysl Houdek's GSoC 2014 project at Industrial Informatics group of Czech Technical University in Prague
Development version of RTEMS with BSP sources is available from GitHub? in tms570-bsp branch
The LwIP driver sources with TMS570 EMAC driver and RTEMS port included can be obtained from our other project repository
The application for testing of RTEMS with the LwIP port is included in our RTEMS OM template repository
Tool-chain
arm-rtems4.12-gcc (GCC) 6.1.1 20160526 + Newlib 2.4.0.20160527 + Binutils 2.26.20160125
When GCC build outside of RTEMS Source Builder then next setup is equivalent to RSB for RTESM-4.12
../../../src/gcc-6.1/configure --target=arm-rtems4.12 --prefix=/usr \ --build=x86_64-pc-linux-gnu \ --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 \ --enable-libgomp \ --enable-newlib-iconv \ --enable-newlib-iconv-encodings="iso_8859_1,utf_8" \
Next patches has been used during development to add Cortex-R and big-endian ARM support
- Enable big-endian multilib variant for GCC (included in GCC mainline now)
- http://lists.rtems.org/pipermail/devel/2014-July/007244.html
- Newlib memchr ARM profile correction (included in Newlib mainline now)
- https://sourceware.org/ml/newlib/2014/msg00193.html
- RTEMS common Newlib sigaltstack patch applied
- http://git.rtems.org/rtems-tools/plain/tools/4.11/newlib/newlib-sys-signal-20130532.diff
The first target is soft-float RTEMS Cortex-R support. Next GCC options are used
-mbig-endian -march=armv7-r -mthumb
for future hard float alternative
-mbig-endian -mthumb -march=armv7-r -mfpu=vfpv3-d16 -mfloat-abi=hard
Execution
We have not used any generic bootloader nor initial complex CPU and peripherals initialization and self test is implemented and included in RTEMS BSP. We use simple Ti's HalCoGen? generated application to setup board and then download RTEMS image over OpenOCD to internal ECC SRAM or external SDRAM. Setup application code is available there
Debugging
OpenOCD support with GDB and DDD frontend setup can be found there
Test Reports
The hello world, ticker and most of the other tests are running from internal SRAM, Flash and external SDRAM. Loader or other HW configuration is required to run code from external SDRAM. Running from Flash with complete hardware initialization included in RTEMS application image requires to configure RTEMS BSP build with TMS570_USE_HWINIT_STARTUP option set to 1.
TMS570_USE_HWINIT_STARTUP=1