startup_hc32l130f8ua.s 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. ;/******************************************************************************
  2. ; * Copyright (C) 2021, Xiaohua Semiconductor Co., Ltd. All rights reserved.
  3. ; *
  4. ; * This software component is licensed by XHSC under BSD 3-Clause license
  5. ; * (the "License"); You may not use this file except in compliance with the
  6. ; * License. You may obtain a copy of the License at:
  7. ; * opensource.org/licenses/BSD-3-Clause
  8. ; *
  9. ; ******************************************************************************/
  10. ;/*****************************************************************************/
  11. ;/* Startup for ARM */
  12. ;/* Version V1.0 */
  13. ;/* Date 2021-12-02 */
  14. ;/* Target-mcu {MCU_PN_H} */
  15. ;/*****************************************************************************/
  16. ; Stack Configuration
  17. ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  18. Stack_Size EQU 0x00000400
  19. AREA STACK, NOINIT, READWRITE, ALIGN=3
  20. Stack_Mem SPACE Stack_Size
  21. __initial_sp
  22. ; Heap Configuration
  23. ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  24. Heap_Size EQU 0x00000000
  25. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  26. __heap_base
  27. Heap_Mem SPACE Heap_Size
  28. __heap_limit
  29. PRESERVE8
  30. THUMB
  31. ; Vector Table Mapped to Address 0 at Reset
  32. AREA RESET, DATA, READONLY
  33. EXPORT __Vectors
  34. EXPORT __Vectors_End
  35. EXPORT __Vectors_Size
  36. __Vectors
  37. DCD __initial_sp ; Top of Stack
  38. DCD Reset_Handler ; Reset
  39. DCD NMI_Handler ; NMI
  40. DCD HardFault_Handler ; Hard Fault
  41. DCD 0 ; Reserved
  42. DCD 0 ; Reserved
  43. DCD 0 ; Reserved
  44. DCD 0 ; Reserved
  45. DCD 0 ; Reserved
  46. DCD 0 ; Reserved
  47. DCD 0 ; Reserved
  48. DCD SVC_Handler ; SVCall
  49. DCD 0 ; Reserved
  50. DCD 0 ; Reserved
  51. DCD PendSV_Handler ; PendSV
  52. DCD SysTick_Handler ; SysTick
  53. DCD PORTA_IRQHandler
  54. DCD PORTB_IRQHandler
  55. DCD PORTC_IRQHandler
  56. DCD PORTD_IRQHandler
  57. DCD DMAC_IRQHandler
  58. DCD TIM3_IRQHandler
  59. DCD UART0_IRQHandler
  60. DCD UART1_IRQHandler
  61. DCD LPUART0_IRQHandler
  62. DCD LPUART1_IRQHandler
  63. DCD SPI0_IRQHandler
  64. DCD SPI1_IRQHandler
  65. DCD I2C0_IRQHandler
  66. DCD I2C1_IRQHandler
  67. DCD TIM0_IRQHandler
  68. DCD TIM1_IRQHandler
  69. DCD TIM2_IRQHandler
  70. DCD LPTIM_IRQHandler
  71. DCD TIM4_IRQHandler
  72. DCD TIM5_IRQHandler
  73. DCD TIM6_IRQHandler
  74. DCD PCA_IRQHandler
  75. DCD WDT_IRQHandler
  76. DCD RTC_IRQHandler
  77. DCD ADC_IRQHandler
  78. DCD PCNT_IRQHandler
  79. DCD VC0_IRQHandler
  80. DCD VC1_IRQHandler
  81. DCD LVD_IRQHandler
  82. DCD LCD_IRQHandler
  83. DCD EF_RAM_IRQHandler
  84. DCD CLKTRIM_IRQHandler
  85. __Vectors_End
  86. __Vectors_Size EQU __Vectors_End - __Vectors
  87. AREA |.text|, CODE, READONLY
  88. ; Reset Handler
  89. Reset_Handler PROC
  90. EXPORT Reset_Handler [WEAK]
  91. IMPORT SystemInit
  92. IMPORT __main
  93. ;reset NVIC if in rom debug
  94. LDR R0, =0x20000000
  95. LDR R2, =0x0
  96. MOVS R1, #0 ; for warning,
  97. ADD R1, PC,#0 ; for A1609W,
  98. CMP R1, R0
  99. BLS RAMCODE
  100. ; ram code base address.
  101. ADD R2, R0,R2
  102. RAMCODE
  103. ; reset Vector table address.
  104. LDR R0, =0xE000ED08
  105. STR R2, [R0]
  106. LDR R0, =SystemInit
  107. BLX R0
  108. LDR R0, =__main
  109. BX R0
  110. ENDP
  111. ; Dummy Exception Handlers (infinite loops which can be modified)
  112. NMI_Handler PROC
  113. EXPORT NMI_Handler [WEAK]
  114. B .
  115. ENDP
  116. HardFault_Handler\
  117. PROC
  118. EXPORT HardFault_Handler [WEAK]
  119. B .
  120. ENDP
  121. SVC_Handler PROC
  122. EXPORT SVC_Handler [WEAK]
  123. B .
  124. ENDP
  125. PendSV_Handler PROC
  126. EXPORT PendSV_Handler [WEAK]
  127. B .
  128. ENDP
  129. SysTick_Handler PROC
  130. EXPORT SysTick_Handler [WEAK]
  131. B .
  132. ENDP
  133. Default_Handler PROC
  134. EXPORT PORTA_IRQHandler [WEAK]
  135. EXPORT PORTB_IRQHandler [WEAK]
  136. EXPORT PORTC_IRQHandler [WEAK]
  137. EXPORT PORTD_IRQHandler [WEAK]
  138. EXPORT DMAC_IRQHandler [WEAK]
  139. EXPORT TIM3_IRQHandler [WEAK]
  140. EXPORT UART0_IRQHandler [WEAK]
  141. EXPORT UART1_IRQHandler [WEAK]
  142. EXPORT LPUART0_IRQHandler [WEAK]
  143. EXPORT LPUART1_IRQHandler [WEAK]
  144. EXPORT SPI0_IRQHandler [WEAK]
  145. EXPORT SPI1_IRQHandler [WEAK]
  146. EXPORT I2C0_IRQHandler [WEAK]
  147. EXPORT I2C1_IRQHandler [WEAK]
  148. EXPORT TIM0_IRQHandler [WEAK]
  149. EXPORT TIM1_IRQHandler [WEAK]
  150. EXPORT TIM2_IRQHandler [WEAK]
  151. EXPORT LPTIM_IRQHandler [WEAK]
  152. EXPORT TIM4_IRQHandler [WEAK]
  153. EXPORT TIM5_IRQHandler [WEAK]
  154. EXPORT TIM6_IRQHandler [WEAK]
  155. EXPORT PCA_IRQHandler [WEAK]
  156. EXPORT WDT_IRQHandler [WEAK]
  157. EXPORT RTC_IRQHandler [WEAK]
  158. EXPORT ADC_IRQHandler [WEAK]
  159. EXPORT PCNT_IRQHandler [WEAK]
  160. EXPORT VC0_IRQHandler [WEAK]
  161. EXPORT VC1_IRQHandler [WEAK]
  162. EXPORT LVD_IRQHandler [WEAK]
  163. EXPORT LCD_IRQHandler [WEAK]
  164. EXPORT EF_RAM_IRQHandler [WEAK]
  165. EXPORT CLKTRIM_IRQHandler [WEAK]
  166. PORTA_IRQHandler
  167. PORTB_IRQHandler
  168. PORTC_IRQHandler
  169. PORTD_IRQHandler
  170. DMAC_IRQHandler
  171. TIM3_IRQHandler
  172. UART0_IRQHandler
  173. UART1_IRQHandler
  174. LPUART0_IRQHandler
  175. LPUART1_IRQHandler
  176. SPI0_IRQHandler
  177. SPI1_IRQHandler
  178. I2C0_IRQHandler
  179. I2C1_IRQHandler
  180. TIM0_IRQHandler
  181. TIM1_IRQHandler
  182. TIM2_IRQHandler
  183. LPTIM_IRQHandler
  184. TIM4_IRQHandler
  185. TIM5_IRQHandler
  186. TIM6_IRQHandler
  187. PCA_IRQHandler
  188. WDT_IRQHandler
  189. RTC_IRQHandler
  190. ADC_IRQHandler
  191. PCNT_IRQHandler
  192. VC0_IRQHandler
  193. VC1_IRQHandler
  194. LVD_IRQHandler
  195. LCD_IRQHandler
  196. EF_RAM_IRQHandler
  197. CLKTRIM_IRQHandler
  198. B .
  199. ENDP
  200. ALIGN
  201. ; User Initial Stack & Heap
  202. IF :DEF:__MICROLIB
  203. EXPORT __initial_sp
  204. EXPORT __heap_base
  205. EXPORT __heap_limit
  206. ELSE
  207. IMPORT __use_two_region_memory
  208. EXPORT __user_initial_stackheap
  209. __user_initial_stackheap
  210. LDR R0, = Heap_Mem
  211. LDR R1, =(Stack_Mem + Stack_Size)
  212. LDR R2, = (Heap_Mem + Heap_Size)
  213. LDR R3, = Stack_Mem
  214. BX LR
  215. ALIGN
  216. ENDIF
  217. END