startup_hc32l13x.s 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. ;/******************************************************************************
  2. ;* Copyright (C) 2019, Xiaohua Semiconductor Co.,Ltd All rights reserved.
  3. ;*
  4. ;* This software is owned and published by:
  5. ;* Xiaohua Semiconductor Co.,Ltd ("XHSC").
  6. ;*
  7. ;* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
  8. ;* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
  9. ;*
  10. ;* This software contains source code for use with XHSC
  11. ;* components. This software is licensed by XHSC to be adapted only
  12. ;* for use in systems utilizing XHSC components. XHSC shall not be
  13. ;* responsible for misuse or illegal use of this software for devices not
  14. ;* supported herein. XHSC is providing this software "AS IS" and will
  15. ;* not be responsible for issues arising from incorrect user implementation
  16. ;* of the software.
  17. ;*
  18. ;* Disclaimer:
  19. ;* XHSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
  20. ;* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
  21. ;* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
  22. ;* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
  23. ;* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
  24. ;* WARRANTY OF NONINFRINGEMENT.
  25. ;* XHSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
  26. ;* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
  27. ;* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
  28. ;* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
  29. ;* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
  30. ;* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
  31. ;* SAVINGS OR PROFITS,
  32. ;* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33. ;* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
  34. ;* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
  35. ;* FROM, THE SOFTWARE.
  36. ;*
  37. ;* This software may be replicated in part or whole for the licensed use,
  38. ;* with the restriction that this Disclaimer and Copyright notice must be
  39. ;* included with each copy of this software, whether used in part or whole,
  40. ;* at all times.
  41. ;*/
  42. ;/*****************************************************************************/
  43. ;/*****************************************************************************/
  44. ;/* Startup for ARM */
  45. ;/* Version V1.0 */
  46. ;/* Date 2019-03-01 */
  47. ;/* Target-mcu {MCU_PN_H} */
  48. ;/*****************************************************************************/
  49. ; Stack Configuration
  50. ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  51. Stack_Size EQU 0x00000200
  52. AREA STACK, NOINIT, READWRITE, ALIGN=3
  53. Stack_Mem SPACE Stack_Size
  54. __initial_sp
  55. ; Heap Configuration
  56. ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  57. Heap_Size EQU 0x00000200
  58. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  59. __heap_base
  60. Heap_Mem SPACE Heap_Size
  61. __heap_limit
  62. PRESERVE8
  63. THUMB
  64. ; Vector Table Mapped to Address 0 at Reset
  65. AREA RESET, DATA, READONLY
  66. EXPORT __Vectors
  67. EXPORT __Vectors_End
  68. EXPORT __Vectors_Size
  69. __Vectors
  70. DCD __initial_sp ; Top of Stack
  71. DCD Reset_Handler ; Reset
  72. DCD NMI_Handler ; NMI
  73. DCD HardFault_Handler ; Hard Fault
  74. DCD 0 ; Reserved
  75. DCD 0 ; Reserved
  76. DCD 0 ; Reserved
  77. DCD 0 ; Reserved
  78. DCD 0 ; Reserved
  79. DCD 0 ; Reserved
  80. DCD 0 ; Reserved
  81. DCD SVC_Handler ; SVCall
  82. DCD 0 ; Reserved
  83. DCD 0 ; Reserved
  84. DCD PendSV_Handler ; PendSV
  85. DCD SysTick_Handler ; SysTick
  86. DCD PORTA_IRQHandler
  87. DCD PORTB_IRQHandler
  88. DCD PORTC_IRQHandler
  89. DCD PORTD_IRQHandler
  90. DCD DMAC_IRQHandler
  91. DCD TIM3_IRQHandler
  92. DCD UART0_IRQHandler
  93. DCD UART1_IRQHandler
  94. DCD LPUART0_IRQHandler
  95. DCD LPUART1_IRQHandler
  96. DCD SPI0_IRQHandler
  97. DCD SPI1_IRQHandler
  98. DCD I2C0_IRQHandler
  99. DCD I2C1_IRQHandler
  100. DCD TIM0_IRQHandler
  101. DCD TIM1_IRQHandler
  102. DCD TIM2_IRQHandler
  103. DCD LPTIM_IRQHandler
  104. DCD TIM4_IRQHandler
  105. DCD TIM5_IRQHandler
  106. DCD TIM6_IRQHandler
  107. DCD PCA_IRQHandler
  108. DCD WDT_IRQHandler
  109. DCD RTC_IRQHandler
  110. DCD ADC_IRQHandler
  111. DCD PCNT_IRQHandler
  112. DCD VC0_IRQHandler
  113. DCD VC1_IRQHandler
  114. DCD LVD_IRQHandler
  115. DCD LCD_IRQHandler
  116. DCD FLASH_RAM_IRQHandler
  117. DCD CLKTRIM_IRQHandler
  118. __Vectors_End
  119. __Vectors_Size EQU __Vectors_End - __Vectors
  120. AREA |.text|, CODE, READONLY
  121. ; Reset Handler
  122. Reset_Handler PROC
  123. EXPORT Reset_Handler [WEAK]
  124. IMPORT SystemInit
  125. IMPORT __main
  126. ;reset NVIC if in rom debug
  127. LDR R0, =0x20000000
  128. LDR R2, =0x0
  129. MOVS R1, #0 ; for warning,
  130. ADD R1, PC,#0 ; for A1609W,
  131. CMP R1, R0
  132. BLS RAMCODE
  133. ; ram code base address.
  134. ADD R2, R0,R2
  135. RAMCODE
  136. ; reset Vector table address.
  137. LDR R0, =0xE000ED08
  138. STR R2, [R0]
  139. LDR R0, =SystemInit
  140. BLX R0
  141. LDR R0, =__main
  142. BX R0
  143. ENDP
  144. ; Dummy Exception Handlers (infinite loops which can be modified)
  145. NMI_Handler PROC
  146. EXPORT NMI_Handler [WEAK]
  147. B .
  148. ENDP
  149. HardFault_Handler\
  150. PROC
  151. EXPORT HardFault_Handler [WEAK]
  152. B .
  153. ENDP
  154. SVC_Handler PROC
  155. EXPORT SVC_Handler [WEAK]
  156. B .
  157. ENDP
  158. PendSV_Handler PROC
  159. EXPORT PendSV_Handler [WEAK]
  160. B .
  161. ENDP
  162. SysTick_Handler PROC
  163. EXPORT SysTick_Handler [WEAK]
  164. B .
  165. ENDP
  166. Default_Handler PROC
  167. EXPORT PORTA_IRQHandler [WEAK]
  168. EXPORT PORTB_IRQHandler [WEAK]
  169. EXPORT PORTC_IRQHandler [WEAK]
  170. EXPORT PORTD_IRQHandler [WEAK]
  171. EXPORT DMAC_IRQHandler [WEAK]
  172. EXPORT TIM3_IRQHandler [WEAK]
  173. EXPORT UART0_IRQHandler [WEAK]
  174. EXPORT UART1_IRQHandler [WEAK]
  175. EXPORT LPUART0_IRQHandler [WEAK]
  176. EXPORT LPUART1_IRQHandler [WEAK]
  177. EXPORT SPI0_IRQHandler [WEAK]
  178. EXPORT SPI1_IRQHandler [WEAK]
  179. EXPORT I2C0_IRQHandler [WEAK]
  180. EXPORT I2C1_IRQHandler [WEAK]
  181. EXPORT TIM0_IRQHandler [WEAK]
  182. EXPORT TIM1_IRQHandler [WEAK]
  183. EXPORT TIM2_IRQHandler [WEAK]
  184. EXPORT LPTIM_IRQHandler [WEAK]
  185. EXPORT TIM4_IRQHandler [WEAK]
  186. EXPORT TIM5_IRQHandler [WEAK]
  187. EXPORT TIM6_IRQHandler [WEAK]
  188. EXPORT PCA_IRQHandler [WEAK]
  189. EXPORT WDT_IRQHandler [WEAK]
  190. EXPORT RTC_IRQHandler [WEAK]
  191. EXPORT ADC_IRQHandler [WEAK]
  192. EXPORT PCNT_IRQHandler [WEAK]
  193. EXPORT VC0_IRQHandler [WEAK]
  194. EXPORT VC1_IRQHandler [WEAK]
  195. EXPORT LVD_IRQHandler [WEAK]
  196. EXPORT LCD_IRQHandler [WEAK]
  197. EXPORT FLASH_RAM_IRQHandler [WEAK]
  198. EXPORT CLKTRIM_IRQHandler [WEAK]
  199. PORTA_IRQHandler
  200. PORTB_IRQHandler
  201. PORTC_IRQHandler
  202. PORTD_IRQHandler
  203. DMAC_IRQHandler
  204. TIM3_IRQHandler
  205. UART0_IRQHandler
  206. UART1_IRQHandler
  207. LPUART0_IRQHandler
  208. LPUART1_IRQHandler
  209. SPI0_IRQHandler
  210. SPI1_IRQHandler
  211. I2C0_IRQHandler
  212. I2C1_IRQHandler
  213. TIM0_IRQHandler
  214. TIM1_IRQHandler
  215. TIM2_IRQHandler
  216. LPTIM_IRQHandler
  217. TIM4_IRQHandler
  218. TIM5_IRQHandler
  219. TIM6_IRQHandler
  220. PCA_IRQHandler
  221. WDT_IRQHandler
  222. RTC_IRQHandler
  223. ADC_IRQHandler
  224. PCNT_IRQHandler
  225. VC0_IRQHandler
  226. VC1_IRQHandler
  227. LVD_IRQHandler
  228. LCD_IRQHandler
  229. FLASH_RAM_IRQHandler
  230. CLKTRIM_IRQHandler
  231. B .
  232. ENDP
  233. ALIGN
  234. ; User Initial Stack & Heap
  235. IF :DEF:__MICROLIB
  236. EXPORT __initial_sp
  237. EXPORT __heap_base
  238. EXPORT __heap_limit
  239. ELSE
  240. IMPORT __use_two_region_memory
  241. EXPORT __user_initial_stackheap
  242. __user_initial_stackheap
  243. LDR R0, = Heap_Mem
  244. LDR R1, =(Stack_Mem + Stack_Size)
  245. LDR R2, = (Heap_Mem + Heap_Size)
  246. LDR R3, = Stack_Mem
  247. BX LR
  248. ALIGN
  249. ENDIF
  250. END