start_rvds.S 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. ;/*---------------------------------------------------------------------------------------------------------*/
  2. ;/* */
  3. ;/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
  4. ;/* */
  5. ;/*---------------------------------------------------------------------------------------------------------*/
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. CLK_BA_base EQU 0x50000200
  8. PWRCON EQU 0x00
  9. AHBCLK EQU 0x04
  10. APBCLK EQU 0x08
  11. CLKSEL0 EQU 0x10
  12. CLKSEL1 EQU 0x14
  13. CLKDIV EQU 0x18
  14. PLLCON EQU 0x20
  15. TEST_S EQU 0x30
  16. CLK_BA_APBCLK EQU 0x50000208
  17. ;// Define clock enable registers
  18. ADC_COMP_CLK EQU 0x50000208
  19. ADC_enable EQU 0x10000000
  20. COMP_enable EQU 0x40000000
  21. PDMA_CLK EQU 0x50000204
  22. PDMA_enable EQU 0x00000003
  23. ;; bit 0 CPU_EN
  24. ;; bit 1 PDMA_EN
  25. ;// Define COMP registers base
  26. COMP_base EQU 0x400D0000
  27. CMP1CR EQU 0x00
  28. CMP2CR EQU 0x04
  29. CMPSR EQU 0x08
  30. ;// Define ADC registers base
  31. ADC_base EQU 0x400E0000
  32. ADDR0 EQU 0x00
  33. ADDR1 EQU 0x04
  34. ADDR2 EQU 0x08
  35. ADDR3 EQU 0x0c
  36. ADDR4 EQU 0x10
  37. ADDR5 EQU 0x14
  38. ADDR6 EQU 0x18
  39. ADDR7 EQU 0x1c
  40. ADCR EQU 0x20
  41. ADCHER EQU 0x24
  42. ADCMPR0 EQU 0x28
  43. ADCMPR1 EQU 0x2c
  44. ADSR EQU 0x30
  45. ADCALR EQU 0x34
  46. ADCFCR EQU 0x38
  47. ADCALD EQU 0x3c
  48. ;// Pattern Table
  49. pattern_55555555 EQU 0x55555555
  50. pattern_aaaaaaaa EQU 0xaaaaaaaa
  51. pattern_00005555 EQU 0x00005555
  52. pattern_0000aaaa EQU 0x0000aaaa
  53. pattern_05550515 EQU 0x05550515
  54. pattern_0aaa0a2a EQU 0x0aaa0a2a
  55. ;// Define PDMA regsiter base
  56. PDMA_BA_ch0_base EQU 0x50008000
  57. PDMA_BA_ch1_base EQU 0x50008100
  58. PDMA_BA_ch2_base EQU 0x50008200
  59. PDMA_BA_ch3_base EQU 0x50008300
  60. PDMA_BA_ch4_base EQU 0x50008400
  61. PDMA_BA_ch5_base EQU 0x50008500
  62. PDMA_BA_ch6_base EQU 0x50008600
  63. PDMA_BA_ch7_base EQU 0x50008700
  64. PDMA_BA_GCR EQU 0x50008F00
  65. PDMA_BA_GCR_base EQU 0x50008F00
  66. PDMA_GCRCSR EQU 0X00
  67. PDMA_PDSSR2 EQU 0X04
  68. PDMA_PDSSR1 EQU 0X08 ;; PDMA channel select 0x77000000
  69. PDMA_GCRISR EQU 0X0C
  70. PDMA_GLOBAL_enable EQU 0x0000FF00
  71. PDMA_CSR EQU 0X00
  72. PDMA_SAR EQU 0X04
  73. PDMA_DAR EQU 0X08
  74. PDMA_BCR EQU 0X0C
  75. PDMA_CSAR EQU 0X14
  76. PDMA_CDAR EQU 0X18
  77. PDMA_CBSR EQU 0X1C
  78. PDMA_IER EQU 0X20
  79. PDMA_ISR EQU 0X24
  80. PDMA_CTCSR EQU 0X28
  81. PDMA_SASOCR EQU 0X2C
  82. PDMA_DASOCR EQU 0X30
  83. PDMA_SBUF0 EQU 0X80
  84. PDMA_SBUF1 EQU 0X84
  85. PDMA_SBUF2 EQU 0X88
  86. PDMA_SBUF3 EQU 0X8C
  87. ;// Define VIC control register
  88. VIC_base EQU 0xFFFF0000
  89. VIC_SCR15 EQU 0x003c
  90. VIC_SVR15 EQU 0x00bc
  91. VIC_SCR16 EQU 0x0040
  92. VIC_SVR16 EQU 0x00c0
  93. VIC_SCR30 EQU 0x0078
  94. VIC_SVR30 EQU 0x00f8
  95. VIC_MECR EQU 0x0318
  96. VIC_MDCR EQU 0x031c
  97. VIC_EOSCR EQU 0x0130
  98. ;//==================================
  99. INT_BA_base EQU 0x50000300
  100. ;// Parameter table
  101. ADC_PDMA_CFG EQU 0x00002980
  102. ADC_PDMA_DST EQU 0xC0000000
  103. ADC_PDMA_SRC EQU 0xE0024200
  104. ADC_PDMA_TCBL EQU 0x00030008
  105. ;//==================================
  106. GPIO_base EQU 0x50004000
  107. GPIOB_PMD EQU 0x0040
  108. GPIOB_OFFD EQU 0x0044
  109. GPIOB_DOUT EQU 0x0048
  110. GPIOB_DMASK EQU 0x004C
  111. GPIOB_PIN EQU 0x0050
  112. GPIOB_DBEN EQU 0x0054
  113. GPIOB_IMD EQU 0x0058
  114. GPIOB_IEN EQU 0x005C
  115. GPIOB_ISRC EQU 0x0060
  116. ;//==================================
  117. GCR_base EQU 0x50000000
  118. GPB_MFP EQU 0x0034
  119. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  120. Stack_Size EQU 0x00000200
  121. AREA STACK, NOINIT, READWRITE, ALIGN=3
  122. Stack_Mem SPACE Stack_Size
  123. __initial_sp
  124. Heap_Size EQU 0x00000000
  125. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  126. __heap_base
  127. Heap_Mem SPACE Heap_Size
  128. __heap_limit
  129. PRESERVE8
  130. THUMB
  131. IMPORT rt_hw_hard_fault
  132. IMPORT rt_hw_pend_sv
  133. IMPORT rt_hw_timer_handler
  134. ; Vector Table Mapped to Address 0 at Reset
  135. AREA RESET, DATA, READONLY
  136. EXPORT __Vectors
  137. __Vectors DCD __initial_sp ; Top of Stack
  138. DCD Reset_Handler ; Reset Handler
  139. DCD NMI_Handler ; NMI Handler
  140. DCD rt_hw_hard_fault ; Hard Fault Handler
  141. DCD 0 ; Reserved
  142. DCD 0 ; Reserved
  143. DCD 0 ; Reserved
  144. DCD 0 ; Reserved
  145. DCD 0 ; Reserved
  146. DCD 0 ; Reserved
  147. DCD 0 ; Reserved
  148. DCD SVC_Handler ; SVCall Handler
  149. DCD 0 ; Reserved
  150. DCD 0 ; Reserved
  151. DCD rt_hw_pend_sv ; PendSV Handler
  152. DCD rt_hw_timer_handler ; SysTick Handler
  153. ; External Interrupts
  154. ; maximum of 32 External Interrupts are possible
  155. DCD BOD_IRQHandler
  156. DCD WDT_IRQHandler
  157. DCD EINT0_IRQHandler
  158. DCD EINT1_IRQHandler
  159. DCD GPAB_IRQHandler
  160. DCD GPCDE_IRQHandler
  161. DCD PWMA_IRQHandler
  162. DCD PWMB_IRQHandler
  163. DCD TMR0_IRQHandler
  164. DCD TMR1_IRQHandler
  165. DCD TMR2_IRQHandler
  166. DCD TMR3_IRQHandler
  167. DCD UART0_IRQHandler
  168. DCD UART1_IRQHandler
  169. DCD SPI0_IRQHandler
  170. DCD SPI1_IRQHandler
  171. DCD SPI2_IRQHandler
  172. DCD SPI3_IRQHandler
  173. DCD I2C0_IRQHandler
  174. DCD I2C1_IRQHandler
  175. DCD CAN0_IRQHandler
  176. DCD CAN1_IRQHandler
  177. DCD Default_Handler
  178. DCD USBD_IRQHandler
  179. DCD PS2_IRQHandler
  180. DCD ACMP_IRQHandler
  181. DCD PDMA_IRQHandler
  182. DCD Default_Handler
  183. DCD PWRWU_IRQHandler
  184. DCD ADC_IRQHandler
  185. DCD Default_Handler
  186. DCD RTC_IRQHandler
  187. AREA |.text|, CODE, READONLY
  188. ; Reset Handler
  189. ENTRY
  190. Reset_Handler PROC
  191. EXPORT Reset_Handler [WEAK]
  192. IMPORT __main
  193. LDR R0, =__main
  194. BX R0
  195. ENDP
  196. ; Dummy Exception Handlers (infinite loops which can be modified)
  197. NMI_Handler PROC
  198. EXPORT NMI_Handler [WEAK]
  199. B .
  200. ENDP
  201. SVC_Handler PROC
  202. EXPORT SVC_Handler [WEAK]
  203. B .
  204. ENDP
  205. Default_Handler PROC
  206. EXPORT BOD_IRQHandler [WEAK]
  207. EXPORT WDT_IRQHandler [WEAK]
  208. EXPORT EINT0_IRQHandler [WEAK]
  209. EXPORT EINT1_IRQHandler [WEAK]
  210. EXPORT GPAB_IRQHandler [WEAK]
  211. EXPORT GPCDE_IRQHandler [WEAK]
  212. EXPORT PWMA_IRQHandler [WEAK]
  213. EXPORT PWMB_IRQHandler [WEAK]
  214. EXPORT TMR0_IRQHandler [WEAK]
  215. EXPORT TMR1_IRQHandler [WEAK]
  216. EXPORT TMR2_IRQHandler [WEAK]
  217. EXPORT TMR3_IRQHandler [WEAK]
  218. EXPORT UART0_IRQHandler [WEAK]
  219. EXPORT UART1_IRQHandler [WEAK]
  220. EXPORT SPI0_IRQHandler [WEAK]
  221. EXPORT SPI1_IRQHandler [WEAK]
  222. EXPORT SPI2_IRQHandler [WEAK]
  223. EXPORT SPI3_IRQHandler [WEAK]
  224. EXPORT I2C0_IRQHandler [WEAK]
  225. EXPORT I2C1_IRQHandler [WEAK]
  226. EXPORT CAN0_IRQHandler [WEAK]
  227. EXPORT CAN1_IRQHandler [WEAK]
  228. EXPORT USBD_IRQHandler [WEAK]
  229. EXPORT PS2_IRQHandler [WEAK]
  230. EXPORT ACMP_IRQHandler [WEAK]
  231. EXPORT PDMA_IRQHandler [WEAK]
  232. EXPORT PWRWU_IRQHandler [WEAK]
  233. EXPORT ADC_IRQHandler [WEAK]
  234. EXPORT RTC_IRQHandler [WEAK]
  235. BOD_IRQHandler
  236. WDT_IRQHandler
  237. EINT0_IRQHandler
  238. EINT1_IRQHandler
  239. GPAB_IRQHandler
  240. GPCDE_IRQHandler
  241. PWMA_IRQHandler
  242. PWMB_IRQHandler
  243. TMR0_IRQHandler
  244. TMR1_IRQHandler
  245. TMR2_IRQHandler
  246. TMR3_IRQHandler
  247. UART0_IRQHandler
  248. UART1_IRQHandler
  249. SPI0_IRQHandler
  250. SPI1_IRQHandler
  251. SPI2_IRQHandler
  252. SPI3_IRQHandler
  253. I2C0_IRQHandler
  254. I2C1_IRQHandler
  255. CAN0_IRQHandler
  256. CAN1_IRQHandler
  257. USBD_IRQHandler
  258. PS2_IRQHandler
  259. ACMP_IRQHandler
  260. PDMA_IRQHandler
  261. PWRWU_IRQHandler
  262. ADC_IRQHandler
  263. RTC_IRQHandler
  264. B .
  265. ENDP
  266. ALIGN
  267. ; User Initial Stack & Heap
  268. IF :DEF:__MICROLIB
  269. EXPORT __initial_sp
  270. EXPORT __heap_base
  271. EXPORT __heap_limit
  272. ELSE
  273. IMPORT __use_two_region_memory
  274. EXPORT __user_initial_stackheap
  275. __user_initial_stackheap
  276. LDR R0, = Heap_Mem
  277. LDR R1, = (Stack_Mem + Stack_Size)
  278. LDR R2, = (Heap_Mem + Heap_Size)
  279. LDR R3, = Stack_Mem
  280. BX LR
  281. ALIGN
  282. ENDIF
  283. END