Skip to content

Commit 2d2c015

Browse files
xeonxuNoe Xu
authored andcommitted
Add customized startup file for stm32f10x when using gcc.
1 parent d841fef commit 2d2c015

File tree

5 files changed

+207
-41
lines changed

5 files changed

+207
-41
lines changed

bsp/stm32f10x-HAL/.config

Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ CONFIG_RT_USING_MEMHEAP=y
4040
CONFIG_RT_USING_SMALL_MEM=y
4141
# CONFIG_RT_USING_SLAB is not set
4242
# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
43+
# CONFIG_RT_USING_MEMTRACE is not set
4344
CONFIG_RT_USING_HEAP=y
4445

4546
#
@@ -49,7 +50,7 @@ CONFIG_RT_USING_DEVICE=y
4950
# CONFIG_RT_USING_INTERRUPT_INFO is not set
5051
CONFIG_RT_USING_CONSOLE=y
5152
CONFIG_RT_CONSOLEBUF_SIZE=128
52-
CONFIG_RT_CONSOLE_DEVICE_NAME="uart2"
53+
CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
5354
# CONFIG_RT_USING_MODULE is not set
5455

5556
#
@@ -67,7 +68,9 @@ CONFIG_RT_USING_USER_MAIN=y
6768
# Command shell
6869
#
6970
CONFIG_RT_USING_FINSH=y
71+
CONFIG_FINSH_THREAD_NAME="tshell"
7072
CONFIG_FINSH_USING_HISTORY=y
73+
CONFIG_FINSH_HISTORY_LINES=5
7174
CONFIG_FINSH_USING_SYMTAB=y
7275
CONFIG_FINSH_USING_DESCRIPTION=y
7376
CONFIG_FINSH_THREAD_PRIORITY=20
@@ -90,6 +93,7 @@ CONFIG_RT_USING_DEVICE_IPC=y
9093
CONFIG_RT_USING_SERIAL=y
9194
# CONFIG_RT_USING_CAN is not set
9295
# CONFIG_RT_USING_HWTIMER is not set
96+
# CONFIG_RT_USING_CPUTIME is not set
9397
# CONFIG_RT_USING_I2C is not set
9498
CONFIG_RT_USING_PIN=y
9599
# CONFIG_RT_USING_MTD_NOR is not set
@@ -98,6 +102,7 @@ CONFIG_RT_USING_PIN=y
98102
# CONFIG_RT_USING_SDIO is not set
99103
# CONFIG_RT_USING_SPI is not set
100104
# CONFIG_RT_USING_WDT is not set
105+
# CONFIG_RT_USING_WIFI is not set
101106

102107
#
103108
# Using USB
@@ -108,7 +113,7 @@ CONFIG_RT_USING_PIN=y
108113
#
109114
# POSIX layer and C standard library
110115
#
111-
# CONFIG_RT_USING_LIBC is not set
116+
CONFIG_RT_USING_LIBC=y
112117
# CONFIG_RT_USING_PTHREADS is not set
113118

114119
#
@@ -135,6 +140,12 @@ CONFIG_RT_USING_PIN=y
135140
#
136141
# CONFIG_RT_USING_VBUS is not set
137142

143+
#
144+
# Utilities
145+
#
146+
# CONFIG_RT_USING_LOGTRACE is not set
147+
# CONFIG_RT_USING_RYM is not set
148+
138149
#
139150
# RT-Thread online packages
140151
#
@@ -144,67 +155,90 @@ CONFIG_RT_USING_PIN=y
144155
#
145156
# CONFIG_PKG_USING_PARTITION is not set
146157
# CONFIG_PKG_USING_SQLITE is not set
158+
# CONFIG_PKG_USING_RTI is not set
147159

148160
#
149161
# IoT - internet of things
150162
#
151-
# CONFIG_PKG_USING_CJSON is not set
152163
# CONFIG_PKG_USING_PAHOMQTT is not set
153164
# CONFIG_PKG_USING_WEBCLIENT is not set
154165
# CONFIG_PKG_USING_MONGOOSE is not set
155166
# CONFIG_PKG_USING_WEBTERMINAL is not set
167+
# CONFIG_PKG_USING_CJSON is not set
168+
# CONFIG_PKG_USING_LJSON is not set
169+
# CONFIG_PKG_USING_EZXML is not set
170+
# CONFIG_PKG_USING_NANOPB is not set
171+
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
172+
173+
#
174+
# Wi-Fi
175+
#
176+
177+
#
178+
# Marvell WiFi
179+
#
180+
# CONFIG_PKG_USING_WLANMARVELL is not set
181+
182+
#
183+
# Wiced WiFi
184+
#
185+
# CONFIG_PKG_USING_WLAN_WICED is not set
186+
# CONFIG_PKG_USING_COAP is not set
187+
# CONFIG_PKG_USING_NOPOLL is not set
156188

157189
#
158190
# security packages
159191
#
160192
# CONFIG_PKG_USING_MBEDTLS is not set
193+
# CONFIG_PKG_USING_libsodium is not set
194+
# CONFIG_PKG_USING_TINYCRYPT is not set
161195

162196
#
163197
# language packages
164198
#
165199
# CONFIG_PKG_USING_JERRYSCRIPT is not set
200+
# CONFIG_PKG_USING_MICROPYTHON is not set
166201

167202
#
168203
# multimedia packages
169204
#
205+
# CONFIG_PKG_USING_OPENMV is not set
170206

171207
#
172208
# tools packages
173209
#
174210
# CONFIG_PKG_USING_CMBACKTRACE is not set
175211
# CONFIG_PKG_USING_EASYLOGGER is not set
212+
# CONFIG_PKG_USING_SYSTEMVIEW is not set
213+
# CONFIG_PKG_USING_IPERF is not set
176214

177215
#
178216
# miscellaneous packages
179217
#
218+
# CONFIG_PKG_USING_FASTLZ is not set
219+
# CONFIG_PKG_USING_MINILZO is not set
220+
221+
#
222+
# example package: hello
223+
#
180224
# CONFIG_PKG_USING_HELLO is not set
181-
# CONFIG_STM32F100C8 is not set
182-
# CONFIG_STM32F100CB is not set
183-
# CONFIG_STM32F100R8 is not set
184-
# CONFIG_STM32F100RB is not set
185225
# CONFIG_STM32F100RC is not set
186226
# CONFIG_STM32F100RD is not set
187227
# CONFIG_STM32F100RE is not set
188-
# CONFIG_STM32F100V8 is not set
189-
# CONFIG_STM32F100VB is not set
190228
# CONFIG_STM32F100VC is not set
191229
# CONFIG_STM32F100VD is not set
192230
# CONFIG_STM32F100VE is not set
193231
# CONFIG_STM32F100ZC is not set
194232
# CONFIG_STM32F100ZD is not set
195233
# CONFIG_STM32F100ZE is not set
196-
# CONFIG_STM32F101C8 is not set
197234
# CONFIG_STM32F101CB is not set
198-
# CONFIG_STM32F101R8 is not set
199235
# CONFIG_STM32F101RB is not set
200236
# CONFIG_STM32F101RC is not set
201237
# CONFIG_STM32F101RD is not set
202238
# CONFIG_STM32F101RE is not set
203239
# CONFIG_STM32F101RF is not set
204240
# CONFIG_STM32F101RG is not set
205-
# CONFIG_STM32F101T8 is not set
206241
# CONFIG_STM32F101TB is not set
207-
# CONFIG_STM32F101V8 is not set
208242
# CONFIG_STM32F101VB is not set
209243
# CONFIG_STM32F101VC is not set
210244
# CONFIG_STM32F101VD is not set
@@ -216,15 +250,13 @@ CONFIG_RT_USING_PIN=y
216250
# CONFIG_STM32F101ZE is not set
217251
# CONFIG_STM32F101ZF is not set
218252
# CONFIG_STM32F101ZG is not set
219-
# CONFIG_STM32F102C8 is not set
220253
# CONFIG_STM32F102CB is not set
221-
# CONFIG_STM32F102R8 is not set
222254
# CONFIG_STM32F102RB is not set
223255
# CONFIG_STM32F103C8 is not set
224256
# CONFIG_STM32F103CB is not set
225257
# CONFIG_STM32F103R8 is not set
226-
CONFIG_STM32F103RB=y
227-
# CONFIG_STM32F103RC is not set
258+
# CONFIG_STM32F103RB is not set
259+
CONFIG_STM32F103RC=y
228260
# CONFIG_STM32F103RD is not set
229261
# CONFIG_STM32F103RE is not set
230262
# CONFIG_STM32F103RF is not set
@@ -255,7 +287,7 @@ CONFIG_STM32F103RB=y
255287
# CONFIG_STM32F107VC is not set
256288
# CONFIG_RT_USING_HSI is not set
257289
CONFIG_RT_HSE_VALUE=8000000
258-
CONFIG_STM32F10X_PIN_NUMBERS=64
259-
# CONFIG_RT_USING_UART1 is not set
260-
CONFIG_RT_USING_UART2=y
290+
CONFIG_RT_USING_UART1=y
291+
# CONFIG_RT_USING_UART2 is not set
261292
# CONFIG_RT_USING_UART3 is not set
293+
# CONFIG_RT_USING_SDCARD is not set

bsp/stm32f10x-HAL/drivers/SConscript

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ if GetDepend(['RT_USING_USB_DEVICE']):
2020
src += ['drv_usb.c']
2121
if GetDepend(['RT_USING_SDCARD']):
2222
src += ['drv_sdcard.c']
23+
24+
if rtconfig.CROSS_TOOL == 'gcc':
25+
src += ['gcc_startup.s']
2326

2427
CPPPATH = [cwd]
2528

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/**
2+
*************** (C) COPYRIGHT 2017 STMicroelectronics ************************
3+
* @file gcc_startup.s
4+
* @author MCD Application Team
5+
* @version V4.2.0
6+
* @date 31-March-2017
7+
* @brief Based on STM32F103xE's startup file.
8+
* This module performs:
9+
* - Set the initial SP
10+
* - Set the initial PC == Reset_Handler,
11+
* - Set the vector table entries with the exceptions ISR address
12+
* - Configure the clock system
13+
* - Configure external SRAM mounted on STM3210E-EVAL board
14+
* to be used as data memory (optional, to be enabled by user)
15+
* - Branches to entry in the C library (which eventually
16+
* calls main(), but entry() in RT-Thread).
17+
* After Reset the Cortex-M3 processor is in Thread mode,
18+
* priority is Privileged, and the Stack is set to Main.
19+
******************************************************************************
20+
*
21+
* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
22+
*
23+
* Redistribution and use in source and binary forms, with or without modification,
24+
* are permitted provided that the following conditions are met:
25+
* 1. Redistributions of source code must retain the above copyright notice,
26+
* this list of conditions and the following disclaimer.
27+
* 2. Redistributions in binary form must reproduce the above copyright notice,
28+
* this list of conditions and the following disclaimer in the documentation
29+
* and/or other materials provided with the distribution.
30+
* 3. Neither the name of STMicroelectronics nor the names of its contributors
31+
* may be used to endorse or promote products derived from this software
32+
* without specific prior written permission.
33+
*
34+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
35+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
37+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
38+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
40+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
41+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
42+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
43+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44+
*
45+
******************************************************************************
46+
*/
47+
48+
.syntax unified
49+
.cpu cortex-m3
50+
.fpu softvfp
51+
.thumb
52+
53+
/**
54+
* @brief This is the code that gets called when the processor first
55+
* starts execution following a reset event. Only the absolutely
56+
* necessary set is performed, after which the application
57+
* supplied main() routine is called.
58+
* @param None
59+
* @retval : None
60+
*/
61+
62+
.global Reset_Handler
63+
64+
.section .text.Reset_Handler
65+
.type Reset_Handler, %function
66+
Reset_Handler:
67+
68+
/* Copy the data segment initializers from flash to SRAM */
69+
movs r1, #0
70+
b LoopCopyDataInit
71+
72+
CopyDataInit:
73+
ldr r3, =_sidata
74+
ldr r3, [r3, r1]
75+
str r3, [r0, r1]
76+
adds r1, r1, #4
77+
78+
LoopCopyDataInit:
79+
ldr r0, =_sdata
80+
ldr r3, =_edata
81+
adds r2, r0, r1
82+
cmp r2, r3
83+
bcc CopyDataInit
84+
ldr r2, =_sbss
85+
b LoopFillZerobss
86+
/* Zero fill the bss segment. */
87+
FillZerobss:
88+
movs r3, #0
89+
str r3, [r2], #4
90+
91+
LoopFillZerobss:
92+
ldr r3, = _ebss
93+
cmp r2, r3
94+
bcc FillZerobss
95+
96+
/* Call the clock system intitialization function.*/
97+
bl SystemInit
98+
/* Call static constructors */
99+
bl __libc_init_array
100+
/* Call the application's entry point.*/
101+
bl entry
102+
bx lr
103+
.size Reset_Handler, .-Reset_Handler
104+

0 commit comments

Comments
 (0)