start_rvds.S 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. ; /*
  2. ; * File : start_rvds.s
  3. ; * This file is part of RT-Thread RTOS
  4. ; * COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
  5. ; *
  6. ; * The license and distribution terms for this file may be
  7. ; * found in the file LICENSE in this distribution or at
  8. ; * http://www.rt-thread.org/license/LICENSE
  9. ; *
  10. ; * Change Logs:
  11. ; * Date Author Notes
  12. ; * 2011-02-23 Bernard first implementation
  13. ; */
  14. ;* <<< Use Configuration Wizard in Context Menu >>>
  15. ; Amount of memory (in bytes) allocated for Stack
  16. ; Tailor this value to your application needs
  17. ; <h> Stack Configuration
  18. ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  19. ; </h>
  20. Stack_Size EQU 0x00000200
  21. AREA STACK, NOINIT, READWRITE, ALIGN=3
  22. Stack_Mem SPACE Stack_Size
  23. __initial_sp
  24. ; Note: RT-Thread not use malloc/free in Keil MDK, therefore the heap size is 0.
  25. Heap_Size EQU 0x00000000
  26. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  27. __heap_base
  28. Heap_Mem SPACE Heap_Size
  29. __heap_limit
  30. PRESERVE8
  31. THUMB
  32. ; Vector Table Mapped to Address 0 at Reset
  33. AREA RESET, DATA, READONLY
  34. EXPORT __Vectors
  35. EXPORT __Vectors_End
  36. EXPORT __Vectors_Size
  37. __Vectors DCD __initial_sp ; Top of Stack
  38. DCD Reset_Handler ; Reset Handler
  39. DCD NMI_Handler ; NMI Handler
  40. DCD HardFault_Handler ; Hard Fault Handler
  41. DCD MemManage_Handler ; MPU Fault Handler
  42. DCD BusFault_Handler ; Bus Fault Handler
  43. DCD UsageFault_Handler ; Usage Fault Handler
  44. DCD 0 ; Reserved
  45. DCD 0 ; Reserved
  46. DCD 0 ; Reserved
  47. DCD 0 ; Reserved
  48. DCD SVC_Handler ; SVCall Handler
  49. DCD DebugMon_Handler ; Debug Monitor Handler
  50. DCD 0 ; Reserved
  51. DCD PendSV_Handler ; PendSV Handler
  52. DCD SysTick_Handler ; SysTick Handler
  53. DCD CSV_Handler ; 0: Clock Super Visor
  54. DCD SWDT_Handler ; 1: Software Watchdog Timer
  55. DCD LVD_Handler ; 2: Low Voltage Detector
  56. DCD MFT_WG_IRQHandler ; 3: Wave Form Generator / DTIF
  57. DCD INT0_7_Handler ; 4: External Interrupt Request ch.0 to ch.7
  58. DCD INT8_15_Handler ; 5: External Interrupt Request ch.8 to ch.15
  59. DCD DT_Handler ; 6: Dual Timer / Quad Decoder
  60. DCD MFS0RX_IRQHandler ; 7: MultiFunction Serial ch.0
  61. DCD MFS0TX_IRQHandler ; 8: MultiFunction Serial ch.0
  62. DCD MFS1RX_IRQHandler ; 9: MultiFunction Serial ch.1
  63. DCD MFS1TX_IRQHandler ; 10: MultiFunction Serial ch.1
  64. DCD MFS2RX_IRQHandler ; 11: MultiFunction Serial ch.2
  65. DCD MFS2TX_IRQHandler ; 12: MultiFunction Serial ch.2
  66. DCD MFS3RX_IRQHandler ; 13: MultiFunction Serial ch.3
  67. DCD MFS3TX_IRQHandler ; 14: MultiFunction Serial ch.3
  68. DCD MFS4RX_IRQHandler ; 15: MultiFunction Serial ch.4
  69. DCD MFS4TX_IRQHandler ; 16: MultiFunction Serial ch.4
  70. DCD MFS5RX_IRQHandler ; 17: MultiFunction Serial ch.5
  71. DCD MFS5TX_IRQHandler ; 18: MultiFunction Serial ch.5
  72. DCD MFS6RX_IRQHandler ; 19: MultiFunction Serial ch.6
  73. DCD MFS6TX_IRQHandler ; 20: MultiFunction Serial ch.6
  74. DCD MFS7RX_IRQHandler ; 21: MultiFunction Serial ch.7
  75. DCD MFS7TX_IRQHandler ; 22: MultiFunction Serial ch.7
  76. DCD PPG_Handler ; 23: PPG
  77. DCD TIM_IRQHandler ; 24: OSC / PLL / Watch Counter
  78. DCD ADC0_IRQHandler ; 25: ADC0
  79. DCD ADC1_IRQHandler ; 26: ADC1
  80. DCD ADC2_IRQHandler ; 27: ADC2
  81. DCD MFT_FRT_IRQHandler ; 28: Free-run Timer
  82. DCD MFT_IPC_IRQHandler ; 29: Input Capture
  83. DCD MFT_OPC_IRQHandler ; 30: Output Compare
  84. DCD BT_IRQHandler ; 31: Base Timer ch.0 to ch.7
  85. DCD CAN0_IRQHandler ; 32: CAN ch.0
  86. DCD CAN1_IRQHandler ; 33: CAN ch.1
  87. DCD USBF_Handler ; 34: USB Function
  88. DCD USB_Handler ; 35: USB Function / USB HOST
  89. DCD DummyHandler ; 36: Reserved
  90. DCD DummyHandler ; 37: Reserved
  91. DCD DMAC0_Handler ; 38: DMAC ch.0
  92. DCD DMAC1_Handler ; 39: DMAC ch.1
  93. DCD DMAC2_Handler ; 40: DMAC ch.2
  94. DCD DMAC3_Handler ; 41: DMAC ch.3
  95. DCD DMAC4_Handler ; 42: DMAC ch.4
  96. DCD DMAC5_Handler ; 43: DMAC ch.5
  97. DCD DMAC6_Handler ; 44: DMAC ch.6
  98. DCD DMAC7_Handler ; 45: DMAC ch.7
  99. DCD DummyHandler ; 46: Reserved
  100. DCD DummyHandler ; 47: Reserved
  101. __Vectors_End
  102. __Vectors_Size EQU __Vectors_End - __Vectors
  103. AREA |.text|, CODE, READONLY
  104. ; Reset handler routine
  105. Reset_Handler PROC
  106. EXPORT Reset_Handler [WEAK]
  107. IMPORT __main
  108. IMPORT SystemInit
  109. LDR R1, = __initial_sp ; restore original stack pointer
  110. MSR MSP, R1
  111. LDR R0, =SystemInit
  112. BLX R0
  113. LDR R0, =__main
  114. BX R0
  115. ENDP
  116. ; Dummy Exception Handlers (infinite loops which can be modified)
  117. NMI_Handler PROC
  118. EXPORT NMI_Handler [WEAK]
  119. B .
  120. ENDP
  121. HardFault_Handler\
  122. PROC
  123. EXPORT HardFault_Handler [WEAK]
  124. B .
  125. ENDP
  126. MemManage_Handler\
  127. PROC
  128. EXPORT MemManage_Handler [WEAK]
  129. B .
  130. ENDP
  131. BusFault_Handler\
  132. PROC
  133. EXPORT BusFault_Handler [WEAK]
  134. B .
  135. ENDP
  136. UsageFault_Handler\
  137. PROC
  138. EXPORT UsageFault_Handler [WEAK]
  139. B .
  140. ENDP
  141. SVC_Handler PROC
  142. EXPORT SVC_Handler [WEAK]
  143. B .
  144. ENDP
  145. DebugMon_Handler\
  146. PROC
  147. EXPORT DebugMon_Handler [WEAK]
  148. B .
  149. ENDP
  150. PendSV_Handler PROC
  151. EXPORT PendSV_Handler [WEAK]
  152. B .
  153. ENDP
  154. SysTick_Handler PROC
  155. EXPORT SysTick_Handler [WEAK]
  156. B .
  157. ENDP
  158. Default_Handler PROC
  159. EXPORT CSV_Handler [WEAK]
  160. EXPORT SWDT_Handler [WEAK]
  161. EXPORT LVD_Handler [WEAK]
  162. EXPORT MFT_WG_IRQHandler [WEAK]
  163. EXPORT INT0_7_Handler [WEAK]
  164. EXPORT INT8_15_Handler [WEAK]
  165. EXPORT DT_Handler [WEAK]
  166. EXPORT MFS0RX_IRQHandler [WEAK]
  167. EXPORT MFS0TX_IRQHandler [WEAK]
  168. EXPORT MFS1RX_IRQHandler [WEAK]
  169. EXPORT MFS1TX_IRQHandler [WEAK]
  170. EXPORT MFS2RX_IRQHandler [WEAK]
  171. EXPORT MFS2TX_IRQHandler [WEAK]
  172. EXPORT MFS3RX_IRQHandler [WEAK]
  173. EXPORT MFS3TX_IRQHandler [WEAK]
  174. EXPORT MFS4RX_IRQHandler [WEAK]
  175. EXPORT MFS4TX_IRQHandler [WEAK]
  176. EXPORT MFS5RX_IRQHandler [WEAK]
  177. EXPORT MFS5TX_IRQHandler [WEAK]
  178. EXPORT MFS6RX_IRQHandler [WEAK]
  179. EXPORT MFS6TX_IRQHandler [WEAK]
  180. EXPORT MFS7RX_IRQHandler [WEAK]
  181. EXPORT MFS7TX_IRQHandler [WEAK]
  182. EXPORT PPG_Handler [WEAK]
  183. EXPORT TIM_IRQHandler [WEAK]
  184. EXPORT ADC0_IRQHandler [WEAK]
  185. EXPORT ADC1_IRQHandler [WEAK]
  186. EXPORT ADC2_IRQHandler [WEAK]
  187. EXPORT MFT_FRT_IRQHandler [WEAK]
  188. EXPORT MFT_IPC_IRQHandler [WEAK]
  189. EXPORT MFT_OPC_IRQHandler [WEAK]
  190. EXPORT BT_IRQHandler [WEAK]
  191. EXPORT CAN0_IRQHandler [WEAK]
  192. EXPORT CAN1_IRQHandler [WEAK]
  193. EXPORT USBF_Handler [WEAK]
  194. EXPORT USB_Handler [WEAK]
  195. EXPORT DMAC0_Handler [WEAK]
  196. EXPORT DMAC1_Handler [WEAK]
  197. EXPORT DMAC2_Handler [WEAK]
  198. EXPORT DMAC3_Handler [WEAK]
  199. EXPORT DMAC4_Handler [WEAK]
  200. EXPORT DMAC5_Handler [WEAK]
  201. EXPORT DMAC6_Handler [WEAK]
  202. EXPORT DMAC7_Handler [WEAK]
  203. EXPORT DummyHandler [WEAK]
  204. CSV_Handler
  205. SWDT_Handler
  206. LVD_Handler
  207. MFT_WG_IRQHandler
  208. INT0_7_Handler
  209. INT8_15_Handler
  210. DT_Handler
  211. MFS0RX_IRQHandler
  212. MFS0TX_IRQHandler
  213. MFS1RX_IRQHandler
  214. MFS1TX_IRQHandler
  215. MFS2RX_IRQHandler
  216. MFS2TX_IRQHandler
  217. MFS3RX_IRQHandler
  218. MFS3TX_IRQHandler
  219. MFS4RX_IRQHandler
  220. MFS4TX_IRQHandler
  221. MFS5RX_IRQHandler
  222. MFS5TX_IRQHandler
  223. MFS6RX_IRQHandler
  224. MFS6TX_IRQHandler
  225. MFS7RX_IRQHandler
  226. MFS7TX_IRQHandler
  227. PPG_Handler
  228. TIM_IRQHandler
  229. ADC0_IRQHandler
  230. ADC1_IRQHandler
  231. ADC2_IRQHandler
  232. MFT_FRT_IRQHandler
  233. MFT_IPC_IRQHandler
  234. MFT_OPC_IRQHandler
  235. BT_IRQHandler
  236. CAN0_IRQHandler
  237. CAN1_IRQHandler
  238. USBF_Handler
  239. USB_Handler
  240. DMAC0_Handler
  241. DMAC1_Handler
  242. DMAC2_Handler
  243. DMAC3_Handler
  244. DMAC4_Handler
  245. DMAC5_Handler
  246. DMAC6_Handler
  247. DMAC7_Handler
  248. DummyHandler
  249. B .
  250. ENDP
  251. ALIGN
  252. ; User Initial Stack & Heap
  253. IF :DEF:__MICROLIB
  254. EXPORT __initial_sp
  255. EXPORT __heap_base
  256. EXPORT __heap_limit
  257. ELSE
  258. IMPORT __use_two_region_memory
  259. EXPORT __user_initial_stackheap
  260. __user_initial_stackheap
  261. LDR R0, = Heap_Mem
  262. LDR R1, =(Stack_Mem + Stack_Size)
  263. LDR R2, = (Heap_Mem + Heap_Size)
  264. LDR R3, = Stack_Mem
  265. BX LR
  266. ALIGN
  267. ENDIF
  268. END