blob: 2a0bd4c8e443b4fd0ecd9eb8d17135f606c84261 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
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
|