1; ////////////////////////////////////////////////////////////////////////////////
2; /// @file     startup_mm32_IAR.s
3; /// @author   AE TEAM
4; /// @brief    THIS FILE PROVIDES ALL THE Device Startup File of MM32 Cortex-M
5; ///           Core Device for IAR EWARM toolchain.
6; ////////////////////////////////////////////////////////////////////////////////
7; /// @attention
8; ///
9; /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
10; /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
11; /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
12; /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
13; /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
14; /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
15; ///
16; /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
17; ////////////////////////////////////////////////////////////////////////////////
18;
19; ////////////////////////////////////////////////////////////////////////////////
20; /// The modules in this file are included in the libraries, and may be replaced
21; /// by any user-defined modules that define the PUBLIC symbol _program_start or
22; /// a user defined start symbol.
23; /// To override the cstartup defined in the library, simply add your modified
24; /// version to the workbench project.
25; ///
26; /// The vector table is normally located at address 0.
27; /// When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
28; /// The name "__vector_table" has special meaning for C-SPY:
29; /// it is where the SP start value is found, and the NVIC vector
30; /// table register (VTOR) is initialized to this address if != 0.
31; ///
32; /// Cortex-M version
33; ///
34; /// This module performs:
35; ///                      - Set the initial SP
36; ///                      - Set the initial PC == __iar_program_start,
37; ///                      - Set the vector table entries with the exceptions ISR
38; ///                                address
39; ///                      - Configure the system clock (optional)
40; ///                      - Branches to main in the C library (which eventually
41; ///                                calls main()).
42; /// After Reset the Cortex-M processor is in Thread mode,
43; /// priority is Privileged, and the Stack is set to Main.
44; ////////////////////////////////////////////////////////////////////////////////
45
46                MODULE  ?cstartup
47
48                                                                                ;; Forward declaration of sections.
49                SECTION CSTACK:DATA:NOROOT(3)
50
51                SECTION .intvec:CODE:NOROOT(2)
52
53                EXTERN  __iar_program_start
54                EXTERN  SystemInit
55                PUBLIC  __vector_table
56                PUBLIC  __vector_table_0x1c
57                PUBLIC  __Vectors
58                PUBLIC  __Vectors_End
59                PUBLIC  __Vectors_Size
60
61                DATA
62__vector_table
63                DCD     sfe(CSTACK)                                             ;        Top of Stack
64                DCD     Reset_Handler                                           ;        Reset Handler
65                DCD     NMI_Handler                                             ; -14    NMI Handler
66                DCD     HardFault_Handler                                       ; -13    Hard Fault Handler
67                DCD     MemManage_Handler                                       ; -12    MPU Fault Handler
68                DCD     BusFault_Handler                                        ; -11    Bus Fault Handler
69                DCD     UsageFault_Handler                                      ; -10    Usage Fault Handler
70__vector_table_0x1c
71                DCD     0                                                       ;  -9    Reserved
72                DCD     0                                                       ;  -8    Reserved
73                DCD     0                                                       ;  -7    Reserved
74                DCD     0                                                       ;  -6    Reserved
75                DCD     SVC_Handler                                             ;  -5    SVCall Handler
76                DCD     DebugMon_Handler                                        ;  -4    Debug Monitor Handler
77                DCD     0                                                       ;  -3    Reserved
78                DCD     PendSV_Handler                                          ;  -2    PendSV Handler
79                DCD     SysTick_Handler                                         ;  -1    SysTick Handler  ; External Interrupts
80                DCD     WWDG_IRQHandler                                         ;   0    Window Watchdog
81                DCD     PVD_IRQHandler                                          ;   1    PVD through EXTI Line detect
82                DCD     TAMPER_IRQHandler                                       ;   2    Tamper
83                DCD     RTC_IRQHandler                                          ;   3    RTC
84                DCD     FLASH_IRQHandler                                        ;   4    Flash
85                DCD     RCC_CRS_IRQHandler                                      ;   5    RCC
86                DCD     EXTI0_IRQHandler                                        ;   6    EXTI Line 0
87                DCD     EXTI1_IRQHandler                                        ;   7    EXTI Line 1
88                DCD     EXTI2_IRQHandler                                        ;   8    EXTI Line 2
89                DCD     EXTI3_IRQHandler                                        ;   9    EXTI Line 3
90                DCD     EXTI4_IRQHandler                                        ;  10    EXTI Line 4
91                DCD     DMA1_Channel1_IRQHandler                                ;  11    DMA1 Channel 1
92                DCD     DMA1_Channel2_IRQHandler                                ;  12    DMA1 Channel 2
93                DCD     DMA1_Channel3_IRQHandler                                ;  13    DMA1 Channel 3
94                DCD     DMA1_Channel4_IRQHandler                                ;  14    DMA1 Channel 4
95                DCD     DMA1_Channel5_IRQHandler                                ;  15    DMA1 Channel 5
96                DCD     DMA1_Channel6_IRQHandler                                ;  16    DMA1 Channel 6
97                DCD     DMA1_Channel7_IRQHandler                                ;  17    DMA1 Channel 7
98                DCD     ADC1_2_IRQHandler                                       ;  18    ADC1 and ADC2
99                DCD     FlashCache_IRQHandler                                   ;  19    FlashCache outage
100                DCD     0                                                       ;  20    Reserved
101                DCD     CAN1_RX_IRQHandler                                      ;  21    CAN1_RX
102                DCD     0                                                       ;  22    Reserved
103                DCD     EXTI9_5_IRQHandler                                      ;  23    EXTI Line 9..5
104                DCD     TIM1_BRK_IRQHandler                                     ;  24    TIM1 Break
105                DCD     TIM1_UP_IRQHandler                                      ;  25    TIM1 Update
106                DCD     TIM1_TRG_COM_IRQHandler                                 ;  26    TIM1 Trigger and Commutation
107                DCD     TIM1_CC_IRQHandler                                      ;  27    TIM1 Capture Compare
108                DCD     TIM2_IRQHandler                                         ;  28    TIM2
109                DCD     TIM3_IRQHandler                                         ;  29    TIM3
110                DCD     TIM4_IRQHandler                                         ;  30    TIM4
111                DCD     I2C1_IRQHandler                                         ;  31    I2C1 Event
112                DCD     0                                                       ;  32    Reserved
113                DCD     I2C2_IRQHandler                                         ;  33    I2C2 Event
114                DCD     0                                                       ;  34    Reserved
115                DCD     SPI1_IRQHandler                                         ;  35    SPI1
116                DCD     SPI2_IRQHandler                                         ;  36    SPI2
117                DCD     UART1_IRQHandler                                        ;  37    UART1
118                DCD     UART2_IRQHandler                                        ;  38    UART2
119                DCD     UART3_IRQHandler                                        ;  39    UART3
120                DCD     EXTI15_10_IRQHandler                                    ;  40    EXTI Line 15..10
121                DCD     RTCAlarm_IRQHandler                                     ;  41    RTC Alarm through EXTI Line 17
122                DCD     OTG_FS_WKUP_IRQHandler                                  ;  42    USB OTG FS Wakeup through EXTI line
123                DCD     TIM8_BRK_IRQHandler                                     ;  43    TIM8 Break
124                DCD     TIM8_UP_IRQHandler                                      ;  44    TIM8 Update
125                DCD     TIM8_TRG_COM_IRQHandler                                 ;  45    TIM8 Trigger and Commutation
126                DCD     TIM8_CC_IRQHandler                                      ;  46    TIM8 Capture Compare
127                DCD     ADC3_IRQHandler                                         ;  47    ADC3
128                DCD     0                                                       ;  48    Reserved
129                DCD     SDIO_IRQHandler                                         ;  49    SDIO
130                DCD     TIM5_IRQHandler                                         ;  50    TIM5
131                DCD     SPI3_IRQHandler                                         ;  51    SPI3
132                DCD     UART4_IRQHandler                                        ;  52    UART4
133                DCD     UART5_IRQHandler                                        ;  53    UART5
134                DCD     TIM6_IRQHandler                                         ;  54    TIM6
135                DCD     TIM7_IRQHandler                                         ;  55    TIM7
136                DCD     DMA2_Channel1_IRQHandler                                ;  56    DMA2 Channel 1
137                DCD     DMA2_Channel2_IRQHandler                                ;  57    DMA2 Channel 2
138                DCD     DMA2_Channel3_IRQHandler                                ;  58    DMA2 Channel 3
139                DCD     DMA2_Channel4_IRQHandler                                ;  59    DMA2 Channel 4
140                DCD     DMA2_Channel5_IRQHandler                                ;  60    DMA2 Channel 5
141                DCD     ETH_IRQHandler                                          ;  61    Ethernet
142                DCD     0                                                       ;  62    Reserved
143                DCD     0                                                       ;  63    Reserved
144                DCD     COMP1_2_IRQHandler                                      ;  64    COMP1,COMP2
145                DCD     0                                                       ;  65    Reserved
146                DCD     0                                                       ;  66    Reserved
147                DCD     OTG_FS_IRQHandler                                       ;  67    USB OTG_FullSpeed
148                DCD     0                                                       ;  68    Reserved
149                DCD     0                                                       ;  69    Reserved
150                DCD     0                                                       ;  70    Reserved
151                DCD     UART6_IRQHandler                                        ;  71    UART6
152                DCD     0                                                       ;  72    Reserved
153                DCD     0                                                       ;  73    Reserved
154                DCD     0                                                       ;  74    Reserved
155                DCD     0                                                       ;  75    Reserved
156                DCD     0                                                       ;  76    Reserved
157                DCD     0                                                       ;  77    Reserved
158                DCD     0                                                       ;  78    Reserved
159                DCD     0                                                       ;  79    Reserved
160                DCD     0                                                       ;  80    Reserved
161                DCD     0                                                       ;  81    Reserved
162                DCD     UART7_IRQHandler                                        ;  82    UART7
163                DCD     UART8_IRQHandler                                        ;  83    UART8
164
165
166__Vectors_End
167
168__Vectors       EQU     __vector_table
169__Vectors_Size  EQU     __Vectors_End - __Vectors
170
171
172                THUMB
173
174; Reset Handler
175
176                PUBWEAK Reset_Handler
177                SECTION .text:CODE:REORDER:NOROOT(2)
178Reset_Handler
179                LDR     R0, =SystemInit
180                BLX     R0
181                LDR     R0, =__iar_program_start
182                BX      R0
183
184
185                PUBWEAK NMI_Handler
186                PUBWEAK HardFault_Handler
187                PUBWEAK MemManage_Handler
188                PUBWEAK BusFault_Handler
189                PUBWEAK UsageFault_Handler
190                PUBWEAK SVC_Handler
191                PUBWEAK DebugMon_Handler
192                PUBWEAK PendSV_Handler
193                PUBWEAK SysTick_Handler
194                PUBWEAK WWDG_IRQHandler
195                PUBWEAK PVD_IRQHandler
196                PUBWEAK TAMPER_IRQHandler
197                PUBWEAK RTC_IRQHandler
198                PUBWEAK FLASH_IRQHandler
199                PUBWEAK RCC_CRS_IRQHandler
200                PUBWEAK EXTI0_IRQHandler
201                PUBWEAK EXTI1_IRQHandler
202                PUBWEAK EXTI2_IRQHandler
203                PUBWEAK EXTI3_IRQHandler
204                PUBWEAK EXTI4_IRQHandler
205                PUBWEAK DMA1_Channel1_IRQHandler
206                PUBWEAK DMA1_Channel2_IRQHandler
207                PUBWEAK DMA1_Channel3_IRQHandler
208                PUBWEAK DMA1_Channel4_IRQHandler
209                PUBWEAK DMA1_Channel5_IRQHandler
210                PUBWEAK DMA1_Channel6_IRQHandler
211                PUBWEAK DMA1_Channel7_IRQHandler
212                PUBWEAK ADC1_2_IRQHandler
213                PUBWEAK FlashCache_IRQHandler
214                PUBWEAK CAN1_RX_IRQHandler
215                PUBWEAK EXTI9_5_IRQHandler
216                PUBWEAK TIM1_BRK_IRQHandler
217                PUBWEAK TIM1_UP_IRQHandler
218                PUBWEAK TIM1_TRG_COM_IRQHandler
219                PUBWEAK TIM1_CC_IRQHandler
220                PUBWEAK TIM2_IRQHandler
221                PUBWEAK TIM3_IRQHandler
222                PUBWEAK TIM4_IRQHandler
223                PUBWEAK I2C1_IRQHandler
224                PUBWEAK I2C2_IRQHandler
225                PUBWEAK SPI1_IRQHandler
226                PUBWEAK SPI2_IRQHandler
227                PUBWEAK UART1_IRQHandler
228                PUBWEAK UART2_IRQHandler
229                PUBWEAK UART3_IRQHandler
230                PUBWEAK EXTI15_10_IRQHandler
231                PUBWEAK RTCAlarm_IRQHandler
232                PUBWEAK OTG_FS_WKUP_IRQHandler
233                PUBWEAK TIM8_BRK_IRQHandler
234                PUBWEAK TIM8_UP_IRQHandler
235                PUBWEAK TIM8_TRG_COM_IRQHandler
236                PUBWEAK TIM8_CC_IRQHandler
237                PUBWEAK ADC3_IRQHandler
238                PUBWEAK SDIO_IRQHandler
239                PUBWEAK TIM5_IRQHandler
240                PUBWEAK SPI3_IRQHandler
241                PUBWEAK UART4_IRQHandler
242                PUBWEAK UART5_IRQHandler
243                PUBWEAK TIM6_IRQHandler
244                PUBWEAK TIM7_IRQHandler
245                PUBWEAK DMA2_Channel1_IRQHandler
246                PUBWEAK DMA2_Channel2_IRQHandler
247                PUBWEAK DMA2_Channel3_IRQHandler
248                PUBWEAK DMA2_Channel4_IRQHandler
249                PUBWEAK DMA2_Channel5_IRQHandler
250                PUBWEAK ETH_IRQHandler
251                PUBWEAK COMP1_2_IRQHandler
252                PUBWEAK OTG_FS_IRQHandler
253                PUBWEAK UART6_IRQHandler
254                PUBWEAK UART7_IRQHandler
255                PUBWEAK UART8_IRQHandler
256
257
258                SECTION .text:CODE:REORDER:NOROOT(1)
259
260
261NMI_Handler
262HardFault_Handler
263MemManage_Handler
264BusFault_Handler
265UsageFault_Handler
266SVC_Handler
267DebugMon_Handler
268PendSV_Handler
269SysTick_Handler
270WWDG_IRQHandler
271PVD_IRQHandler
272TAMPER_IRQHandler
273RTC_IRQHandler
274FLASH_IRQHandler
275RCC_CRS_IRQHandler
276EXTI0_IRQHandler
277EXTI1_IRQHandler
278EXTI2_IRQHandler
279EXTI3_IRQHandler
280EXTI4_IRQHandler
281DMA1_Channel1_IRQHandler
282DMA1_Channel2_IRQHandler
283DMA1_Channel3_IRQHandler
284DMA1_Channel4_IRQHandler
285DMA1_Channel5_IRQHandler
286DMA1_Channel6_IRQHandler
287DMA1_Channel7_IRQHandler
288ADC1_2_IRQHandler
289FlashCache_IRQHandler
290CAN1_RX_IRQHandler
291EXTI9_5_IRQHandler
292TIM1_BRK_IRQHandler
293TIM1_UP_IRQHandler
294TIM1_TRG_COM_IRQHandler
295TIM1_CC_IRQHandler
296TIM2_IRQHandler
297TIM3_IRQHandler
298TIM4_IRQHandler
299I2C1_IRQHandler
300I2C2_IRQHandler
301SPI1_IRQHandler
302SPI2_IRQHandler
303UART1_IRQHandler
304UART2_IRQHandler
305UART3_IRQHandler
306EXTI15_10_IRQHandler
307RTCAlarm_IRQHandler
308OTG_FS_WKUP_IRQHandler
309TIM8_BRK_IRQHandler
310TIM8_UP_IRQHandler
311TIM8_TRG_COM_IRQHandler
312TIM8_CC_IRQHandler
313ADC3_IRQHandler
314SDIO_IRQHandler
315TIM5_IRQHandler
316SPI3_IRQHandler
317UART4_IRQHandler
318UART5_IRQHandler
319TIM6_IRQHandler
320TIM7_IRQHandler
321DMA2_Channel1_IRQHandler
322DMA2_Channel2_IRQHandler
323DMA2_Channel3_IRQHandler
324DMA2_Channel4_IRQHandler
325DMA2_Channel5_IRQHandler
326ETH_IRQHandler
327COMP1_2_IRQHandler
328OTG_FS_IRQHandler
329UART6_IRQHandler
330UART7_IRQHandler
331UART8_IRQHandler
332
333
334Default_Handler
335                B        .
336                END
337