start_rvds.S 12 KB

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