flash_start_iar.s 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. MODULE ?cstartup
  2. EXTERN __iar_program_start
  3. SECTION CSTACK:DATA:NOROOT(3)
  4. PUBLIC start_flash
  5. SECTION .intvec:CODE:REORDER(2)
  6. start_flash
  7. LDR R0, =hardware_init
  8. BX R0
  9. PUBLIC hard_fault_handler
  10. hard_fault_handler
  11. BL HARD_FAULT_IRQHandler
  12. PUBLIC svc_handler
  13. svc_handler
  14. BL SVC_IRQHandler
  15. PUBLIC pendsv_handler
  16. pendsv_handler
  17. BL PENDSV_IRQHandler
  18. PUBLIC systick
  19. systick
  20. BL SYSTICK_IRQHandler
  21. PUBLIC irq0
  22. irq0
  23. movs r0,#0
  24. b isr
  25. PUBLIC irq1
  26. irq1
  27. movs r0,#1
  28. b isr
  29. PUBLIC irq2
  30. irq2
  31. movs r0,#2
  32. b isr
  33. PUBLIC irq3
  34. irq3
  35. movs r0,#3
  36. b isr
  37. PUBLIC irq4
  38. irq4
  39. movs r0,#4
  40. b isr
  41. PUBLIC irq5
  42. irq5
  43. movs r0,#5
  44. b isr
  45. PUBLIC irq6
  46. irq6
  47. movs r0,#6
  48. b isr
  49. PUBLIC irq7
  50. irq7
  51. movs r0,#7
  52. b isr
  53. PUBLIC irq8
  54. irq8
  55. movs r0,#8
  56. b isr
  57. PUBLIC irq9
  58. irq9
  59. movs r0,#9
  60. b isr
  61. PUBLIC irq10
  62. irq10
  63. movs r0,#10
  64. b isr
  65. PUBLIC irq11
  66. irq11
  67. movs r0,#11
  68. b isr
  69. PUBLIC irq12
  70. irq12
  71. movs r0,#12
  72. b isr
  73. PUBLIC irq13
  74. irq13
  75. movs r0,#13
  76. b isr
  77. PUBLIC irq14
  78. irq14
  79. movs r0,#14
  80. b isr
  81. PUBLIC irq15
  82. irq15
  83. movs r0,#15
  84. b isr
  85. PUBLIC irq16
  86. irq16
  87. movs r0,#16
  88. b isr
  89. PUBLIC irq17
  90. irq17
  91. movs r0,#17
  92. b isr
  93. PUBLIC irq18
  94. irq18
  95. movs r0,#18
  96. b isr
  97. PUBLIC irq19
  98. irq19
  99. movs r0,#19
  100. b isr
  101. PUBLIC irq20
  102. irq20
  103. movs r0,#20
  104. b isr
  105. PUBLIC irq21
  106. irq21
  107. movs r0,#21
  108. b isr
  109. PUBLIC irq22
  110. irq22
  111. movs r0,#22
  112. b isr
  113. PUBLIC irq23
  114. irq23
  115. movs r0,#23
  116. b isr
  117. PUBLIC irq24
  118. irq24
  119. movs r0,#24
  120. b isr
  121. PUBLIC irq25
  122. irq25
  123. movs r0,#25
  124. b isr
  125. PUBLIC irq26
  126. irq26
  127. movs r0,#26
  128. b isr
  129. PUBLIC irq27
  130. irq27
  131. movs r0,#27
  132. b isr
  133. PUBLIC irq28
  134. irq28
  135. movs r0,#28
  136. b isr
  137. PUBLIC irq29
  138. irq29
  139. movs r0,#29
  140. b isr
  141. PUBLIC irq30
  142. irq30
  143. movs r0,#30
  144. b isr
  145. PUBLIC irq31
  146. irq31
  147. movs r0,#31
  148. b isr
  149. PUBLIC isr
  150. isr
  151. ldr r1,=__vector_table
  152. ldr r0,[r0, r1]
  153. bx r0
  154. PUBWEAK HARD_FAULT_IRQHandler
  155. PUBWEAK SVC_IRQHandler
  156. PUBWEAK PENDSV_IRQHandler
  157. PUBWEAK SYSTICK_IRQHandler
  158. PUBWEAK USB_IRQHandler
  159. PUBWEAK IIC_IRQHandler
  160. PUBWEAK QSPI_IRQHandler
  161. PUBWEAK SPI0_IRQHandler
  162. PUBWEAK SPI1_IRQHandler
  163. PUBWEAK UART0_IRQHandler
  164. PUBWEAK UART1_IRQHandler
  165. PUBWEAK MEMCP_IRQHandler
  166. PUBWEAK RSA_IRQHandler
  167. PUBWEAK SCI0_IRQHandler
  168. PUBWEAK SCI1_IRQHandler
  169. PUBWEAK BT_IRQHandler
  170. PUBWEAK GPIO_IRQHandler
  171. PUBWEAK TIMER0_IRQHandler
  172. PUBWEAK TIMER1_IRQHandler
  173. PUBWEAK TIMER2_IRQHandler
  174. PUBWEAK TIMER3_IRQHandler
  175. PUBWEAK TIMER4_IRQHandler
  176. PUBWEAK TIMER5_IRQHandler
  177. PUBWEAK TIMER6_IRQHandler
  178. PUBWEAK TIMER7_IRQHandler
  179. PUBWEAK TIMER8_IRQHandler
  180. PUBWEAK SM4_IRQHandler
  181. PUBWEAK SEC_IRQHandler
  182. PUBWEAK MSR_IRQHandler
  183. PUBWEAK TRNG_IRQHandler
  184. PUBWEAK WDT_IRQHandler
  185. HARD_FAULT_IRQHandler
  186. SVC_IRQHandler
  187. PENDSV_IRQHandler
  188. SYSTICK_IRQHandler
  189. USB_IRQHandler
  190. IIC_IRQHandler
  191. QSPI_IRQHandler
  192. SPI0_IRQHandler
  193. SPI1_IRQHandler
  194. UART0_IRQHandler
  195. UART1_IRQHandler
  196. MEMCP_IRQHandler
  197. RSA_IRQHandler
  198. SCI0_IRQHandler
  199. SCI1_IRQHandler
  200. BT_IRQHandler
  201. GPIO_IRQHandler
  202. TIMER0_IRQHandler
  203. TIMER1_IRQHandler
  204. TIMER2_IRQHandler
  205. TIMER3_IRQHandler
  206. TIMER4_IRQHandler
  207. TIMER5_IRQHandler
  208. TIMER6_IRQHandler
  209. TIMER7_IRQHandler
  210. TIMER8_IRQHandler
  211. SM4_IRQHandler
  212. SEC_IRQHandler
  213. MSR_IRQHandler
  214. TRNG_IRQHandler
  215. WDT_IRQHandler
  216. B .
  217. PUBLIC delay
  218. delay
  219. subs r0,#1
  220. bne delay
  221. nop
  222. bx lr
  223. PUBLIC __vector_table
  224. ALIGNROM 2
  225. data
  226. __vector_table
  227. DCD USB_IRQHandler
  228. DCD IIC_IRQHandler
  229. DCD QSPI_IRQHandler
  230. DCD SPI0_IRQHandler
  231. DCD SPI1_IRQHandler
  232. DCD UART0_IRQHandler
  233. DCD UART1_IRQHandler
  234. DCD MEMCP_IRQHandler
  235. DCD RSA_IRQHandler
  236. DCD SCI0_IRQHandler
  237. DCD SCI1_IRQHandler
  238. DCD BT_IRQHandler
  239. DCD GPIO_IRQHandler
  240. DCD TIMER0_IRQHandler
  241. DCD TIMER1_IRQHandler
  242. DCD TIMER2_IRQHandler
  243. DCD TIMER3_IRQHandler
  244. DCD TIMER4_IRQHandler
  245. DCD TIMER5_IRQHandler
  246. DCD TIMER6_IRQHandler
  247. DCD TIMER7_IRQHandler
  248. DCD TIMER8_IRQHandler
  249. DCD SM4_IRQHandler
  250. DCD SEC_IRQHandler
  251. DCD MSR_IRQHandler
  252. DCD TRNG_IRQHandler
  253. DCD WDT_IRQHandler
  254. PUBLIC hardware_init
  255. SECTION .intvec:CODE:REORDER(2)
  256. CODE
  257. hardware_init
  258. LDR R0, =sfe(CSTACK)
  259. mov sp, R0
  260. LDR R0, =__iar_program_start
  261. BX R0
  262. END