Browse Source

Merge pull request #1226 from xeonxu/startup

新增了适用于gcc的启动文件
ZYH 7 years ago
parent
commit
d4dcbe0cb1
17 changed files with 122 additions and 15 deletions
  1. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f100xb.s
  2. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f100xe.s
  3. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101x6.s
  4. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xb.s
  5. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xe.s
  6. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xg.s
  7. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f102x6.s
  8. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f102xb.s
  9. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103x6.s
  10. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s
  11. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s
  12. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xg.s
  13. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f105xc.s
  14. 1 1
      bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f107xc.s
  15. 3 0
      bsp/stm32f10x-HAL/drivers/SConscript
  16. 104 0
      bsp/stm32f10x-HAL/drivers/gcc_startup.s
  17. 1 1
      bsp/stm32f10x/rtconfig.py

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f100xb.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f100xe.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101x6.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xb.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xe.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f101xg.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f102x6.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f102xb.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103x6.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xb.s

@@ -111,7 +111,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s

@@ -113,7 +113,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xg.s

@@ -112,7 +112,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f105xc.s

@@ -109,7 +109,7 @@ LoopFillZerobss:
 /* Call the clock system intitialization function.*/
     bl  SystemInit
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 1 - 1
bsp/stm32f10x-HAL/Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f107xc.s

@@ -112,7 +112,7 @@ LoopFillZerobss:
 /* Call static constructors */
     bl __libc_init_array
 /* Call the application's entry point.*/
-  bl entry
+  bl main
   bx lr
 .size Reset_Handler, .-Reset_Handler
 

+ 3 - 0
bsp/stm32f10x-HAL/drivers/SConscript

@@ -20,6 +20,9 @@ if GetDepend(['RT_USING_USB_DEVICE']):
     src += ['drv_usb.c']
 if GetDepend(['RT_USING_SDCARD']):
     src += ['drv_sdcard.c']
+
+if rtconfig.CROSS_TOOL == 'gcc':
+    src += ['gcc_startup.s']
     
 CPPPATH = [cwd]
 

+ 104 - 0
bsp/stm32f10x-HAL/drivers/gcc_startup.s

@@ -0,0 +1,104 @@
+/**
+  *************** (C) COPYRIGHT 2017 STMicroelectronics ************************
+  * @file      gcc_startup.s
+  * @author    MCD Application Team
+  * @version   V4.2.0
+  * @date      31-March-2017
+  * @brief     Based on STM32F103xE's startup file.
+  *            This module performs:
+  *                - Set the initial SP
+  *                - Set the initial PC == Reset_Handler,
+  *                - Set the vector table entries with the exceptions ISR address
+  *                - Configure the clock system
+  *                - Configure external SRAM mounted on STM3210E-EVAL board
+  *                  to be used as data memory (optional, to be enabled by user)
+  *                - Branches to entry in the C library (which eventually
+  *                  calls main(), but entry() in RT-Thread).
+  *            After Reset the Cortex-M3 processor is in Thread mode,
+  *            priority is Privileged, and the Stack is set to Main.
+  ******************************************************************************
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+  .syntax unified
+  .cpu cortex-m3
+  .fpu softvfp
+  .thumb
+
+/**
+ * @brief  This is the code that gets called when the processor first
+ *          starts execution following a reset event. Only the absolutely
+ *          necessary set is performed, after which the application
+ *          supplied main() routine is called.
+ * @param  None
+ * @retval : None
+*/
+
+  .global Reset_Handler
+
+  .section .text.Reset_Handler
+  .type Reset_Handler, %function
+Reset_Handler:
+
+/* Copy the data segment initializers from flash to SRAM */
+  movs r1, #0
+  b LoopCopyDataInit
+
+CopyDataInit:
+  ldr r3, =_sidata
+  ldr r3, [r3, r1]
+  str r3, [r0, r1]
+  adds r1, r1, #4
+
+LoopCopyDataInit:
+  ldr r0, =_sdata
+  ldr r3, =_edata
+  adds r2, r0, r1
+  cmp r2, r3
+  bcc CopyDataInit
+  ldr r2, =_sbss
+  b LoopFillZerobss
+/* Zero fill the bss segment. */
+FillZerobss:
+  movs r3, #0
+  str r3, [r2], #4
+
+LoopFillZerobss:
+  ldr r3, = _ebss
+  cmp r2, r3
+  bcc FillZerobss
+
+/* Call the clock system intitialization function.*/
+  bl  SystemInit
+/* Call static constructors */
+  bl __libc_init_array
+/* Call the application's entry point.*/
+  bl entry
+  bx lr
+.size Reset_Handler, .-Reset_Handler
+

+ 1 - 1
bsp/stm32f10x/rtconfig.py

@@ -3,7 +3,7 @@ import os
 # toolchains options
 ARCH='arm'
 CPU='cortex-m3'
-CROSS_TOOL='keil'
+CROSS_TOOL='gcc'
 
 if os.getenv('RTT_CC'):
 	CROSS_TOOL = os.getenv('RTT_CC')