You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
8.2 KiB

4 years ago
  1. ;*******************************************************************************
  2. ; *author : Eastsoft MCU Software Team
  3. ; *version : V0.01
  4. ; *data : 5/28/2021
  5. ;
  6. ; *Copyright (C) 2021 Shanghai Eastsoft Microelectronics Co., Ltd.
  7. ; *
  8. ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  9. ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  10. ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  11. ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  12. ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  13. ;*******************************************************************************
  14. ; <h> Stack Configuration
  15. ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  16. ; </h>
  17. Stack_Size EQU 0x00000400
  18. AREA STACK, NOINIT, READWRITE, ALIGN=3
  19. Stack_Mem SPACE Stack_Size
  20. __initial_sp
  21. ; <h> Heap Configuration
  22. ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  23. ; </h>
  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. __Vectors DCD __initial_sp ;0, Top of Stack
  35. DCD Reset_IRQHandler ;1, Reset Handler
  36. DCD NMI_IRQHandler ;2, NMI Handler
  37. DCD HardFault_IRQHandler ;3, HardFault Handler
  38. DCD 0 ;4, Reserved
  39. DCD 0 ;5, Reserved
  40. DCD 0 ;6, Reserved
  41. DCD 0 ;7, Reserved
  42. DCD 0 ;8, Reserved
  43. DCD 0 ;9, Reserved
  44. DCD 0 ;10, Reserved
  45. DCD SVC_IRQHandler ;11, SVCall Handler
  46. DCD 0 ;12, Reserved
  47. DCD 0 ;13, Reserved
  48. DCD PendSV_IRQHandler ;14, PendSV Handler
  49. DCD SysTick_IRQHandler ;15, SysTick Handler
  50. ; External Interrupts
  51. DCD PINT0_IRQHandler ;16, PINT0 IRQHandler
  52. DCD PINT1_IRQHandler ;17, PINT1 IRQHandler
  53. DCD PINT2_IRQHandler ;18, PINT2 IRQHandler
  54. DCD PINT3_IRQHandler ;19, PINT3 IRQHandler
  55. DCD PINT4_IRQHandler ;20, PINT4 IRQHandler
  56. DCD PINT5_IRQHandler ;21, PINT5 IRQHandler
  57. DCD PINT6_IRQHandler ;22, PINT6 IRQHandler
  58. DCD PINT7_IRQHandler ;23, PINT7 IRQHandler
  59. DCD T16N0_IRQHandler ;24, T16N0 IRQHandler
  60. DCD T16N1_IRQHandler ;25, T16N1 IRQHandler
  61. DCD T16N2_IRQHandler ;26, T16N2 IRQHandler
  62. DCD T16N3_IRQHandler ;27, T16N3 IRQHandler
  63. DCD T32N0_IRQHandler ;28, T32N0 IRQHandler
  64. DCD 0 ;29, Reserved
  65. DCD 0 ;30, Reserved
  66. DCD WWDT_IRQHandler ;31, WWDT IRQHandler
  67. DCD IWDT_IRQHandler ;32, IWDT IRQHandler
  68. DCD 0 ;33, Reserved
  69. DCD KINT_IRQHandler ;34, KINT IRQHandler
  70. DCD ADC_IRQHandler ;35, ADC IRQHandler
  71. DCD 0 ;36, Reserved
  72. DCD LVD_IRQHandler ;37, LVD IRQHandler
  73. DCD 0 ;38, Reserved
  74. DCD UART0_IRQHandler ;39, UART0 IRQHandler
  75. DCD UART1_IRQHandler ;40, UART1 IRQHandler
  76. DCD UART2_IRQHandler ;41, UART2 IRQHandler
  77. DCD 0 ;42, Reserved
  78. DCD 0 ;43, Reserved
  79. DCD SPI1_IRQHandler ;44, SPI1 IRQHandler
  80. DCD I2C0_IRQHandler ;45, I2C0 IRQHandler
  81. DCD 0 ;46, Reserved
  82. DCD CCM_IRQHandler ;47, CCM IRQHandler
  83. AREA |.text|, CODE, READONLY
  84. ; Reset Handler
  85. Reset_IRQHandler PROC
  86. EXPORT Reset_IRQHandler [WEAK]
  87. IMPORT __main
  88. IMPORT SystemInit
  89. LDR R0, =SystemInit
  90. BLX R0
  91. LDR R0, =__main
  92. BX R0
  93. ENDP
  94. ; Dummy Exception IRQHandlers (infinite loops which can be modified)
  95. NMI_IRQHandler PROC
  96. EXPORT NMI_IRQHandler [WEAK]
  97. B .
  98. ENDP
  99. HardFault_IRQHandler PROC
  100. EXPORT HardFault_IRQHandler [WEAK]
  101. B .
  102. ENDP
  103. SVC_IRQHandler PROC
  104. EXPORT SVC_IRQHandler [WEAK]
  105. B .
  106. ENDP
  107. PendSV_IRQHandler PROC
  108. EXPORT PendSV_IRQHandler [WEAK]
  109. B .
  110. ENDP
  111. SysTick_IRQHandler PROC
  112. EXPORT SysTick_IRQHandler [WEAK]
  113. B .
  114. ENDP
  115. Default_IRQHandler PROC
  116. EXPORT PINT0_IRQHandler [WEAK]
  117. EXPORT PINT1_IRQHandler [WEAK]
  118. EXPORT PINT2_IRQHandler [WEAK]
  119. EXPORT PINT3_IRQHandler [WEAK]
  120. EXPORT PINT4_IRQHandler [WEAK]
  121. EXPORT PINT5_IRQHandler [WEAK]
  122. EXPORT PINT6_IRQHandler [WEAK]
  123. EXPORT PINT7_IRQHandler [WEAK]
  124. EXPORT T16N0_IRQHandler [WEAK]
  125. EXPORT T16N1_IRQHandler [WEAK]
  126. EXPORT T16N2_IRQHandler [WEAK]
  127. EXPORT T16N3_IRQHandler [WEAK]
  128. EXPORT T32N0_IRQHandler [WEAK]
  129. EXPORT WWDT_IRQHandler [WEAK]
  130. EXPORT IWDT_IRQHandler [WEAK]
  131. EXPORT RTC_IRQHandler [WEAK]
  132. EXPORT KINT_IRQHandler [WEAK]
  133. EXPORT ADC_IRQHandler [WEAK]
  134. EXPORT LVD_IRQHandler [WEAK]
  135. EXPORT UART0_IRQHandler [WEAK]
  136. EXPORT UART1_IRQHandler [WEAK]
  137. EXPORT UART2_IRQHandler [WEAK]
  138. EXPORT SPI1_IRQHandler [WEAK]
  139. EXPORT I2C0_IRQHandler [WEAK]
  140. EXPORT CCM_IRQHandler [WEAK]
  141. PINT0_IRQHandler
  142. PINT1_IRQHandler
  143. PINT2_IRQHandler
  144. PINT3_IRQHandler
  145. PINT4_IRQHandler
  146. PINT5_IRQHandler
  147. PINT6_IRQHandler
  148. PINT7_IRQHandler
  149. T16N0_IRQHandler
  150. T16N1_IRQHandler
  151. T16N2_IRQHandler
  152. T16N3_IRQHandler
  153. T32N0_IRQHandler
  154. WWDT_IRQHandler
  155. IWDT_IRQHandler
  156. RTC_IRQHandler
  157. KINT_IRQHandler
  158. ADC_IRQHandler
  159. LVD_IRQHandler
  160. UART0_IRQHandler
  161. UART1_IRQHandler
  162. UART2_IRQHandler
  163. SPI1_IRQHandler
  164. I2C0_IRQHandler
  165. CCM_IRQHandler
  166. B .
  167. ENDP
  168. ALIGN
  169. ; User Initial Stack & Heap
  170. IF :DEF:__MICROLIB
  171. EXPORT __initial_sp
  172. EXPORT __heap_base
  173. EXPORT __heap_limit
  174. ELSE
  175. IMPORT __use_two_region_memory
  176. EXPORT __user_initial_stackheap
  177. __user_initial_stackheap
  178. LDR R0, = Heap_Mem
  179. LDR R1, =(Stack_Mem + Stack_Size)
  180. LDR R2, = (Heap_Mem + Heap_Size)
  181. LDR R3, = Stack_Mem
  182. BX LR
  183. ALIGN
  184. ENDIF
  185. END