start_iar.S 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. ;/*****************************************************************************
  2. ; * @file: start_iar.S
  3. ; * @purpose: CMSIS Cortex-M3 Core Device Startup File
  4. ; * for the NXP LPC17xx Device Series
  5. ; * @version: V1.02
  6. ; * @date: 31. July 2009
  7. ; *----------------------------------------------------------------------------
  8. ; *
  9. ; * Copyright (C) 2009 ARM Limited. All rights reserved.
  10. ; *
  11. ; * ARM Limited (ARM) is supplying this software for use with Cortex-Mx
  12. ; * processor based microcontrollers. This file can be freely distributed
  13. ; * within development tools that are supporting such ARM based processors.
  14. ; *
  15. ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  16. ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  17. ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  18. ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  19. ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  20. ; *
  21. ; ******************************************************************************/
  22. ;
  23. ; The modules in this file are included in the libraries, and may be replaced
  24. ; by any user-defined modules that define the PUBLIC symbol _program_start or
  25. ; a user defined start symbol.
  26. ; To override the cstartup defined in the library, simply add your modified
  27. ; version to the workbench project.
  28. ;
  29. ; The vector table is normally located at address 0.
  30. ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
  31. ; The name "__vector_table" has special meaning for C-SPY:
  32. ; it is where the SP start value is found, and the NVIC vector
  33. ; table register (VTOR) is initialized to this address if != 0.
  34. ;
  35. ; Cortex-M version
  36. ;
  37. MODULE ?cstartup
  38. ;; Forward declaration of sections.
  39. SECTION CSTACK:DATA:NOROOT(3)
  40. SECTION .intvec:CODE:NOROOT(2)
  41. IMPORT rt_hw_hard_fault
  42. IMPORT rt_hw_pend_sv
  43. IMPORT rt_hw_timer_handler
  44. EXTERN __iar_program_start
  45. EXTERN SystemInit
  46. PUBLIC __vector_table
  47. PUBLIC __vector_table_0x1c
  48. PUBLIC __Vectors
  49. PUBLIC __Vectors_End
  50. PUBLIC __Vectors_Size
  51. DATA
  52. __vector_table
  53. DCD sfe(CSTACK)
  54. DCD Reset_Handler
  55. DCD NMI_Handler
  56. DCD rt_hw_hard_fault
  57. DCD MemManage_Handler
  58. DCD BusFault_Handler
  59. DCD UsageFault_Handler
  60. __vector_table_0x1c
  61. DCD 0
  62. DCD 0
  63. DCD 0
  64. DCD 0
  65. DCD SVC_Handler
  66. DCD DebugMon_Handler
  67. DCD 0
  68. DCD rt_hw_pend_sv
  69. DCD rt_hw_timer_handler
  70. ; External Interrupts
  71. DCD WDT_IRQHandler ; 16: Watchdog Timer
  72. DCD TIMER0_IRQHandler ; 17: Timer0
  73. DCD TIMER1_IRQHandler ; 18: Timer1
  74. DCD TIMER2_IRQHandler ; 19: Timer2
  75. DCD TIMER3_IRQHandler ; 20: Timer3
  76. DCD UART0_IRQHandler ; 21: UART0
  77. DCD UART1_IRQHandler ; 22: UART1
  78. DCD UART2_IRQHandler ; 23: UART2
  79. DCD UART3_IRQHandler ; 24: UART3
  80. DCD PWM1_IRQHandler ; 25: PWM1
  81. DCD I2C0_IRQHandler ; 26: I2C0
  82. DCD I2C1_IRQHandler ; 27: I2C1
  83. DCD I2C2_IRQHandler ; 28: I2C2
  84. DCD SPI_IRQHandler ; 29: SPI
  85. DCD SSP0_IRQHandler ; 30: SSP0
  86. DCD SSP1_IRQHandler ; 31: SSP1
  87. DCD PLL0_IRQHandler ; 32: PLL0 Lock (Main PLL)
  88. DCD RTC_IRQHandler ; 33: Real Time Clock
  89. DCD EINT0_IRQHandler ; 34: External Interrupt 0
  90. DCD EINT1_IRQHandler ; 35: External Interrupt 1
  91. DCD EINT2_IRQHandler ; 36: External Interrupt 2
  92. DCD EINT3_IRQHandler ; 37: External Interrupt 3
  93. DCD ADC_IRQHandler ; 38: A/D Converter
  94. DCD BOD_IRQHandler ; 39: Brown-Out Detect
  95. DCD USB_IRQHandler ; 40: USB
  96. DCD CAN_IRQHandler ; 41: CAN
  97. DCD DMA_IRQHandler ; 42: General Purpose DMA
  98. DCD I2S_IRQHandler ; 43: I2S
  99. DCD ENET_IRQHandler ; 44: Ethernet
  100. DCD RIT_IRQHandler ; 45: Repetitive Interrupt Timer
  101. DCD MCPWM_IRQHandler ; 46: Motor Control PWM
  102. DCD QEI_IRQHandler ; 47: Quadrature Encoder Interface
  103. DCD PLL1_IRQHandler ; 48: PLL1 Lock (USB PLL)
  104. __Vectors_End
  105. __Vectors EQU __vector_table
  106. __Vectors_Size EQU __Vectors_End - __Vectors
  107. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  108. ;;
  109. ;; Default interrupt handlers.
  110. ;;
  111. THUMB
  112. PUBWEAK Reset_Handler
  113. SECTION .text:CODE:REORDER(2)
  114. Reset_Handler
  115. LDR R0, =SystemInit
  116. BLX R0
  117. LDR R0, =__iar_program_start
  118. BX R0
  119. PUBWEAK NMI_Handler
  120. SECTION .text:CODE:REORDER(1)
  121. NMI_Handler
  122. B NMI_Handler
  123. PUBWEAK HardFault_Handler
  124. SECTION .text:CODE:REORDER(1)
  125. HardFault_Handler
  126. B HardFault_Handler
  127. PUBWEAK MemManage_Handler
  128. SECTION .text:CODE:REORDER(1)
  129. MemManage_Handler
  130. B MemManage_Handler
  131. PUBWEAK BusFault_Handler
  132. SECTION .text:CODE:REORDER(1)
  133. BusFault_Handler
  134. B BusFault_Handler
  135. PUBWEAK UsageFault_Handler
  136. SECTION .text:CODE:REORDER(1)
  137. UsageFault_Handler
  138. B UsageFault_Handler
  139. PUBWEAK SVC_Handler
  140. SECTION .text:CODE:REORDER(1)
  141. SVC_Handler
  142. B SVC_Handler
  143. PUBWEAK DebugMon_Handler
  144. SECTION .text:CODE:REORDER(1)
  145. DebugMon_Handler
  146. B DebugMon_Handler
  147. PUBWEAK PendSV_Handler
  148. SECTION .text:CODE:REORDER(1)
  149. PendSV_Handler
  150. B PendSV_Handler
  151. PUBWEAK SysTick_Handler
  152. SECTION .text:CODE:REORDER(1)
  153. SysTick_Handler
  154. B SysTick_Handler
  155. PUBWEAK WDT_IRQHandler
  156. SECTION .text:CODE:REORDER(1)
  157. WDT_IRQHandler
  158. B WDT_IRQHandler
  159. PUBWEAK TIMER0_IRQHandler
  160. SECTION .text:CODE:REORDER(1)
  161. TIMER0_IRQHandler
  162. B TIMER0_IRQHandler
  163. PUBWEAK TIMER1_IRQHandler
  164. SECTION .text:CODE:REORDER(1)
  165. TIMER1_IRQHandler
  166. B TIMER1_IRQHandler
  167. PUBWEAK TIMER2_IRQHandler
  168. SECTION .text:CODE:REORDER(1)
  169. TIMER2_IRQHandler
  170. B TIMER2_IRQHandler
  171. PUBWEAK TIMER3_IRQHandler
  172. SECTION .text:CODE:REORDER(1)
  173. TIMER3_IRQHandler
  174. B TIMER3_IRQHandler
  175. PUBWEAK UART0_IRQHandler
  176. SECTION .text:CODE:REORDER(1)
  177. UART0_IRQHandler
  178. B UART0_IRQHandler
  179. PUBWEAK UART1_IRQHandler
  180. SECTION .text:CODE:REORDER(1)
  181. UART1_IRQHandler
  182. B UART1_IRQHandler
  183. PUBWEAK UART2_IRQHandler
  184. SECTION .text:CODE:REORDER(1)
  185. UART2_IRQHandler
  186. B UART2_IRQHandler
  187. PUBWEAK UART3_IRQHandler
  188. SECTION .text:CODE:REORDER(1)
  189. UART3_IRQHandler
  190. B UART3_IRQHandler
  191. PUBWEAK PWM1_IRQHandler
  192. SECTION .text:CODE:REORDER(1)
  193. PWM1_IRQHandler
  194. B PWM1_IRQHandler
  195. PUBWEAK I2C0_IRQHandler
  196. SECTION .text:CODE:REORDER(1)
  197. I2C0_IRQHandler
  198. B I2C0_IRQHandler
  199. PUBWEAK I2C1_IRQHandler
  200. SECTION .text:CODE:REORDER(1)
  201. I2C1_IRQHandler
  202. B I2C1_IRQHandler
  203. PUBWEAK I2C2_IRQHandler
  204. SECTION .text:CODE:REORDER(1)
  205. I2C2_IRQHandler
  206. B I2C2_IRQHandler
  207. PUBWEAK SPI_IRQHandler
  208. SECTION .text:CODE:REORDER(1)
  209. SPI_IRQHandler
  210. B SPI_IRQHandler
  211. PUBWEAK SSP0_IRQHandler
  212. SECTION .text:CODE:REORDER(1)
  213. SSP0_IRQHandler
  214. B SSP0_IRQHandler
  215. PUBWEAK SSP1_IRQHandler
  216. SECTION .text:CODE:REORDER(1)
  217. SSP1_IRQHandler
  218. B SSP1_IRQHandler
  219. PUBWEAK PLL0_IRQHandler
  220. SECTION .text:CODE:REORDER(1)
  221. PLL0_IRQHandler
  222. B PLL0_IRQHandler
  223. PUBWEAK RTC_IRQHandler
  224. SECTION .text:CODE:REORDER(1)
  225. RTC_IRQHandler
  226. B RTC_IRQHandler
  227. PUBWEAK EINT0_IRQHandler
  228. SECTION .text:CODE:REORDER(1)
  229. EINT0_IRQHandler
  230. B EINT0_IRQHandler
  231. PUBWEAK EINT1_IRQHandler
  232. SECTION .text:CODE:REORDER(1)
  233. EINT1_IRQHandler
  234. B EINT1_IRQHandler
  235. PUBWEAK EINT2_IRQHandler
  236. SECTION .text:CODE:REORDER(1)
  237. EINT2_IRQHandler
  238. B EINT2_IRQHandler
  239. PUBWEAK EINT3_IRQHandler
  240. SECTION .text:CODE:REORDER(1)
  241. EINT3_IRQHandler
  242. B EINT3_IRQHandler
  243. PUBWEAK ADC_IRQHandler
  244. SECTION .text:CODE:REORDER(1)
  245. ADC_IRQHandler
  246. B ADC_IRQHandler
  247. PUBWEAK BOD_IRQHandler
  248. SECTION .text:CODE:REORDER(1)
  249. BOD_IRQHandler
  250. B BOD_IRQHandler
  251. PUBWEAK USB_IRQHandler
  252. SECTION .text:CODE:REORDER(1)
  253. USB_IRQHandler
  254. B USB_IRQHandler
  255. PUBWEAK CAN_IRQHandler
  256. SECTION .text:CODE:REORDER(1)
  257. CAN_IRQHandler
  258. B CAN_IRQHandler
  259. PUBWEAK DMA_IRQHandler
  260. SECTION .text:CODE:REORDER(1)
  261. DMA_IRQHandler
  262. B DMA_IRQHandler
  263. PUBWEAK I2S_IRQHandler
  264. SECTION .text:CODE:REORDER(1)
  265. I2S_IRQHandler
  266. B I2S_IRQHandler
  267. PUBWEAK ENET_IRQHandler
  268. SECTION .text:CODE:REORDER(1)
  269. ENET_IRQHandler
  270. B ENET_IRQHandler
  271. PUBWEAK RIT_IRQHandler
  272. SECTION .text:CODE:REORDER(1)
  273. RIT_IRQHandler
  274. B RIT_IRQHandler
  275. PUBWEAK MCPWM_IRQHandler
  276. SECTION .text:CODE:REORDER(1)
  277. MCPWM_IRQHandler
  278. B MCPWM_IRQHandler
  279. PUBWEAK QEI_IRQHandler
  280. SECTION .text:CODE:REORDER(1)
  281. QEI_IRQHandler
  282. B QEI_IRQHandler
  283. PUBWEAK PLL1_IRQHandler
  284. SECTION .text:CODE:REORDER(1)
  285. PLL1_IRQHandler
  286. B PLL1_IRQHandler
  287. END