|
| 1 | +;/***************************************************************************** |
| 2 | +; * @file: startup_MKL46Z4.s |
| 3 | +; * @purpose: CMSIS Cortex-M0plus Core Device Startup File for the |
| 4 | +; * MKL46Z4 |
| 5 | +; * @version: 2.0 |
| 6 | +; * @date: 2012-12-12 |
| 7 | +; * |
| 8 | +; * Copyright: 1997 - 2013 Freescale Semiconductor, Inc. All Rights Reserved. |
| 9 | +;* |
| 10 | +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ |
| 11 | +; * |
| 12 | +; *****************************************************************************/ |
| 13 | + |
| 14 | + |
| 15 | +__initial_sp EQU 0x20006000 ; Top of RAM |
| 16 | + |
| 17 | + PRESERVE8 |
| 18 | + THUMB |
| 19 | + |
| 20 | + |
| 21 | +; Vector Table Mapped to Address 0 at Reset |
| 22 | + |
| 23 | + AREA RESET, DATA, READONLY |
| 24 | + EXPORT __Vectors |
| 25 | + EXPORT __Vectors_End |
| 26 | + EXPORT __Vectors_Size |
| 27 | + |
| 28 | +__Vectors DCD __initial_sp ; Top of Stack |
| 29 | + DCD Reset_Handler ; Reset Handler |
| 30 | + DCD NMI_Handler ; NMI Handler |
| 31 | + DCD HardFault_Handler ; Hard Fault Handler |
| 32 | + DCD 0 ; Reserved |
| 33 | + DCD 0 ; Reserved |
| 34 | + DCD 0 ; Reserved |
| 35 | + DCD 0 ; Reserved |
| 36 | + DCD 0 ; Reserved |
| 37 | + DCD 0 ; Reserved |
| 38 | + DCD 0 ; Reserved |
| 39 | + DCD SVC_Handler ; SVCall Handler |
| 40 | + DCD 0 ; Reserved |
| 41 | + DCD 0 ; Reserved |
| 42 | + DCD PendSV_Handler ; PendSV Handler |
| 43 | + DCD SysTick_Handler ; SysTick Handler |
| 44 | + |
| 45 | + ; External Interrupts |
| 46 | + DCD DMA0_IRQHandler ; DMA channel 0 transfer complete/error interrupt |
| 47 | + DCD DMA1_IRQHandler ; DMA channel 1 transfer complete/error interrupt |
| 48 | + DCD DMA2_IRQHandler ; DMA channel 2 transfer complete/error interrupt |
| 49 | + DCD DMA3_IRQHandler ; DMA channel 3 transfer complete/error interrupt |
| 50 | + DCD Reserved20_IRQHandler ; Reserved interrupt 20 |
| 51 | + DCD FTFA_IRQHandler ; FTFA command complete/read collision interrupt |
| 52 | + DCD LVD_LVW_IRQHandler ; Low Voltage Detect, Low Voltage Warning |
| 53 | + DCD LLW_IRQHandler ; Low Leakage Wakeup |
| 54 | + DCD I2C0_IRQHandler ; I2C0 interrupt |
| 55 | + DCD I2C1_IRQHandler ; I2C0 interrupt 25 |
| 56 | + DCD SPI0_IRQHandler ; SPI0 interrupt |
| 57 | + DCD SPI1_IRQHandler ; SPI1 interrupt |
| 58 | + DCD UART0_IRQHandler ; UART0 status/error interrupt |
| 59 | + DCD UART1_IRQHandler ; UART1 status/error interrupt |
| 60 | + DCD UART2_IRQHandler ; UART2 status/error interrupt |
| 61 | + DCD ADC0_IRQHandler ; ADC0 interrupt |
| 62 | + DCD CMP0_IRQHandler ; CMP0 interrupt |
| 63 | + DCD TPM0_IRQHandler ; TPM0 fault, overflow and channels interrupt |
| 64 | + DCD TPM1_IRQHandler ; TPM1 fault, overflow and channels interrupt |
| 65 | + DCD TPM2_IRQHandler ; TPM2 fault, overflow and channels interrupt |
| 66 | + DCD RTC_IRQHandler ; RTC interrupt |
| 67 | + DCD RTC_Seconds_IRQHandler ; RTC seconds interrupt |
| 68 | + DCD PIT_IRQHandler ; PIT timer interrupt |
| 69 | + DCD I2S0_IRQHandler ; I2S0 transmit interrupt |
| 70 | + DCD USB0_IRQHandler ; USB0 interrupt |
| 71 | + DCD DAC0_IRQHandler ; DAC0 interrupt |
| 72 | + DCD TSI0_IRQHandler ; TSI0 interrupt |
| 73 | + DCD MCG_IRQHandler ; MCG interrupt |
| 74 | + DCD LPTimer_IRQHandler ; LPTimer interrupt |
| 75 | + DCD LCD_IRQHandler ; Segment LCD Interrupt |
| 76 | + DCD PORTA_IRQHandler ; Port A interrupt |
| 77 | + DCD PORTD_IRQHandler ; Port D interrupt |
| 78 | +__Vectors_End |
| 79 | + |
| 80 | +__Vectors_Size EQU __Vectors_End - __Vectors |
| 81 | + |
| 82 | +; <h> Flash Configuration |
| 83 | +; <i> 16-byte flash configuration field that stores default protection settings (loaded on reset) |
| 84 | +; <i> and security information that allows the MCU to restrict acces to the FTFL module. |
| 85 | +; <h> Backdoor Comparison Key |
| 86 | +; <o0> Backdoor Key 0 <0x0-0xFF:2> |
| 87 | +; <o1> Backdoor Key 1 <0x0-0xFF:2> |
| 88 | +; <o2> Backdoor Key 2 <0x0-0xFF:2> |
| 89 | +; <o3> Backdoor Key 3 <0x0-0xFF:2> |
| 90 | +; <o4> Backdoor Key 4 <0x0-0xFF:2> |
| 91 | +; <o5> Backdoor Key 5 <0x0-0xFF:2> |
| 92 | +; <o6> Backdoor Key 6 <0x0-0xFF:2> |
| 93 | +; <o7> Backdoor Key 7 <0x0-0xFF:2> |
| 94 | +BackDoorK0 EQU 0xFF |
| 95 | +BackDoorK1 EQU 0xFF |
| 96 | +BackDoorK2 EQU 0xFF |
| 97 | +BackDoorK3 EQU 0xFF |
| 98 | +BackDoorK4 EQU 0xFF |
| 99 | +BackDoorK5 EQU 0xFF |
| 100 | +BackDoorK6 EQU 0xFF |
| 101 | +BackDoorK7 EQU 0xFF |
| 102 | +; </h> |
| 103 | +; <h> Program flash protection bytes (FPROT) |
| 104 | +; <i> Each program flash region can be protected from program and erase operation by setting the associated PROT bit. |
| 105 | +; <i> Each bit protects a 1/32 region of the program flash memory. |
| 106 | +; <h> FPROT0 |
| 107 | +; <i> Program flash protection bytes |
| 108 | +; <i> 1/32 - 8/32 region |
| 109 | +; <o.0> FPROT0.0 |
| 110 | +; <o.1> FPROT0.1 |
| 111 | +; <o.2> FPROT0.2 |
| 112 | +; <o.3> FPROT0.3 |
| 113 | +; <o.4> FPROT0.4 |
| 114 | +; <o.5> FPROT0.5 |
| 115 | +; <o.6> FPROT0.6 |
| 116 | +; <o.7> FPROT0.7 |
| 117 | +nFPROT0 EQU 0x00 |
| 118 | +FPROT0 EQU nFPROT0:EOR:0xFF |
| 119 | +; </h> |
| 120 | +; <h> FPROT1 |
| 121 | +; <i> Program Flash Region Protect Register 1 |
| 122 | +; <i> 9/32 - 16/32 region |
| 123 | +; <o.0> FPROT1.0 |
| 124 | +; <o.1> FPROT1.1 |
| 125 | +; <o.2> FPROT1.2 |
| 126 | +; <o.3> FPROT1.3 |
| 127 | +; <o.4> FPROT1.4 |
| 128 | +; <o.5> FPROT1.5 |
| 129 | +; <o.6> FPROT1.6 |
| 130 | +; <o.7> FPROT1.7 |
| 131 | +nFPROT1 EQU 0x00 |
| 132 | +FPROT1 EQU nFPROT1:EOR:0xFF |
| 133 | +; </h> |
| 134 | +; <h> FPROT2 |
| 135 | +; <i> Program Flash Region Protect Register 2 |
| 136 | +; <i> 17/32 - 24/32 region |
| 137 | +; <o.0> FPROT2.0 |
| 138 | +; <o.1> FPROT2.1 |
| 139 | +; <o.2> FPROT2.2 |
| 140 | +; <o.3> FPROT2.3 |
| 141 | +; <o.4> FPROT2.4 |
| 142 | +; <o.5> FPROT2.5 |
| 143 | +; <o.6> FPROT2.6 |
| 144 | +; <o.7> FPROT2.7 |
| 145 | +nFPROT2 EQU 0x00 |
| 146 | +FPROT2 EQU nFPROT2:EOR:0xFF |
| 147 | +; </h> |
| 148 | +; <h> FPROT3 |
| 149 | +; <i> Program Flash Region Protect Register 3 |
| 150 | +; <i> 25/32 - 32/32 region |
| 151 | +; <o.0> FPROT3.0 |
| 152 | +; <o.1> FPROT3.1 |
| 153 | +; <o.2> FPROT3.2 |
| 154 | +; <o.3> FPROT3.3 |
| 155 | +; <o.4> FPROT3.4 |
| 156 | +; <o.5> FPROT3.5 |
| 157 | +; <o.6> FPROT3.6 |
| 158 | +; <o.7> FPROT3.7 |
| 159 | +nFPROT3 EQU 0x00 |
| 160 | +FPROT3 EQU nFPROT3:EOR:0xFF |
| 161 | +; </h> |
| 162 | +; </h> |
| 163 | +; </h> |
| 164 | +; <h> Flash nonvolatile option byte (FOPT) |
| 165 | +; <i> Allows the user to customize the operation of the MCU at boot time. |
| 166 | +; <o.0> LPBOOT0 |
| 167 | +; <0=> Core and system clock divider (OUTDIV1) is 0x7 (divide by 8) or 0x3 (divide by 4) |
| 168 | +; <1=> Core and system clock divider (OUTDIV1) is 0x1 (divide by 2) or 0x0 (divide by 1) |
| 169 | +; <o.4> LPBOOT1 |
| 170 | +; <0=> Core and system clock divider (OUTDIV1) is 0x7 (divide by 8) or 0x1 (divide by 2) |
| 171 | +; <1=> Core and system clock divider (OUTDIV1) is 0x3 (divide by 4) or 0x0 (divide by 1) |
| 172 | +; <o.2> NMI_DIS |
| 173 | +; <0=> NMI interrupts are always blocked |
| 174 | +; <1=> NMI pin/interrupts reset default to enabled |
| 175 | +; <o.3> RESET_PIN_CFG |
| 176 | +; <0=> RESET pin is disabled following a POR and cannot be enabled as RESET function |
| 177 | +; <1=> RESET pin is dedicated |
| 178 | +; <o.3> FAST_INIT |
| 179 | +; <0=> Slower initialization |
| 180 | +; <1=> Fast Initialization |
| 181 | +FOPT EQU 0xFF |
| 182 | +; </h> |
| 183 | +; <h> Flash security byte (FSEC) |
| 184 | +; <i> WARNING: If SEC field is configured as "MCU security status is secure" and MEEN field is configured as "Mass erase is disabled", |
| 185 | +; <i> MCU's security status cannot be set back to unsecure state since Mass erase via the debugger is blocked !!! |
| 186 | +; <o.0..1> SEC |
| 187 | +; <2=> MCU security status is unsecure |
| 188 | +; <3=> MCU security status is secure |
| 189 | +; <i> Flash Security |
| 190 | +; <i> This bits define the security state of the MCU. |
| 191 | +; <o.2..3> FSLACC |
| 192 | +; <2=> Freescale factory access denied |
| 193 | +; <3=> Freescale factory access granted |
| 194 | +; <i> Freescale Failure Analysis Access Code |
| 195 | +; <i> This bits define the security state of the MCU. |
| 196 | +; <o.4..5> MEEN |
| 197 | +; <2=> Mass erase is disabled |
| 198 | +; <3=> Mass erase is enabled |
| 199 | +; <i> Mass Erase Enable Bits |
| 200 | +; <i> Enables and disables mass erase capability of the FTFL module |
| 201 | +; <o.6..7> KEYEN |
| 202 | +; <2=> Backdoor key access enabled |
| 203 | +; <3=> Backdoor key access disabled |
| 204 | +; <i> Backdoor key Security Enable |
| 205 | +; <i> These bits enable and disable backdoor key access to the FTFL module. |
| 206 | +FSEC EQU 0xFE |
| 207 | +; </h> |
| 208 | + |
| 209 | + IF :LNOT::DEF:RAM_TARGET |
| 210 | + AREA |.ARM.__at_0x400|, CODE, READONLY |
| 211 | + DCB BackDoorK0, BackDoorK1, BackDoorK2, BackDoorK3 |
| 212 | + DCB BackDoorK4, BackDoorK5, BackDoorK6, BackDoorK7 |
| 213 | + DCB FPROT0, FPROT1, FPROT2, FPROT3 |
| 214 | + DCB FSEC, FOPT, 0xFF, 0xFF |
| 215 | + ENDIF |
| 216 | + |
| 217 | + AREA |.text|, CODE, READONLY |
| 218 | + |
| 219 | + |
| 220 | +; Reset Handler |
| 221 | + |
| 222 | +Reset_Handler PROC |
| 223 | + EXPORT Reset_Handler [WEAK] |
| 224 | + IMPORT SystemInit |
| 225 | + IMPORT __main |
| 226 | + LDR R0, =SystemInit |
| 227 | + BLX R0 |
| 228 | + LDR R0, =__main |
| 229 | + BX R0 |
| 230 | + ENDP |
| 231 | + |
| 232 | + |
| 233 | +; Dummy Exception Handlers (infinite loops which can be modified) |
| 234 | + |
| 235 | +NMI_Handler PROC |
| 236 | + EXPORT NMI_Handler [WEAK] |
| 237 | + B . |
| 238 | + ENDP |
| 239 | +HardFault_Handler\ |
| 240 | + PROC |
| 241 | + EXPORT HardFault_Handler [WEAK] |
| 242 | + B . |
| 243 | + ENDP |
| 244 | +SVC_Handler PROC |
| 245 | + EXPORT SVC_Handler [WEAK] |
| 246 | + B . |
| 247 | + ENDP |
| 248 | +PendSV_Handler PROC |
| 249 | + EXPORT PendSV_Handler [WEAK] |
| 250 | + B . |
| 251 | + ENDP |
| 252 | +SysTick_Handler PROC |
| 253 | + EXPORT SysTick_Handler [WEAK] |
| 254 | + B . |
| 255 | + ENDP |
| 256 | + |
| 257 | +Default_Handler PROC |
| 258 | + EXPORT DMA0_IRQHandler [WEAK] |
| 259 | + EXPORT DMA1_IRQHandler [WEAK] |
| 260 | + EXPORT DMA2_IRQHandler [WEAK] |
| 261 | + EXPORT DMA3_IRQHandler [WEAK] |
| 262 | + EXPORT Reserved20_IRQHandler [WEAK] |
| 263 | + EXPORT FTFA_IRQHandler [WEAK] |
| 264 | + EXPORT LVD_LVW_IRQHandler [WEAK] |
| 265 | + EXPORT LLW_IRQHandler [WEAK] |
| 266 | + EXPORT I2C0_IRQHandler [WEAK] |
| 267 | + EXPORT I2C1_IRQHandler [WEAK] |
| 268 | + EXPORT SPI0_IRQHandler [WEAK] |
| 269 | + EXPORT SPI1_IRQHandler [WEAK] |
| 270 | + EXPORT UART0_IRQHandler [WEAK] |
| 271 | + EXPORT UART1_IRQHandler [WEAK] |
| 272 | + EXPORT UART2_IRQHandler [WEAK] |
| 273 | + EXPORT ADC0_IRQHandler [WEAK] |
| 274 | + EXPORT CMP0_IRQHandler [WEAK] |
| 275 | + EXPORT TPM0_IRQHandler [WEAK] |
| 276 | + EXPORT TPM1_IRQHandler [WEAK] |
| 277 | + EXPORT TPM2_IRQHandler [WEAK] |
| 278 | + EXPORT RTC_IRQHandler [WEAK] |
| 279 | + EXPORT RTC_Seconds_IRQHandler [WEAK] |
| 280 | + EXPORT PIT_IRQHandler [WEAK] |
| 281 | + EXPORT I2S0_IRQHandler [WEAK] |
| 282 | + EXPORT USB0_IRQHandler [WEAK] |
| 283 | + EXPORT DAC0_IRQHandler [WEAK] |
| 284 | + EXPORT TSI0_IRQHandler [WEAK] |
| 285 | + EXPORT MCG_IRQHandler [WEAK] |
| 286 | + EXPORT LPTimer_IRQHandler [WEAK] |
| 287 | + EXPORT LCD_IRQHandler [WEAK] |
| 288 | + EXPORT PORTA_IRQHandler [WEAK] |
| 289 | + EXPORT PORTD_IRQHandler [WEAK] |
| 290 | + EXPORT DefaultISR [WEAK] |
| 291 | + |
| 292 | +DMA0_IRQHandler |
| 293 | +DMA1_IRQHandler |
| 294 | +DMA2_IRQHandler |
| 295 | +DMA3_IRQHandler |
| 296 | +Reserved20_IRQHandler |
| 297 | +FTFA_IRQHandler |
| 298 | +LVD_LVW_IRQHandler |
| 299 | +LLW_IRQHandler |
| 300 | +I2C0_IRQHandler |
| 301 | +I2C1_IRQHandler |
| 302 | +SPI0_IRQHandler |
| 303 | +SPI1_IRQHandler |
| 304 | +UART0_IRQHandler |
| 305 | +UART1_IRQHandler |
| 306 | +UART2_IRQHandler |
| 307 | +ADC0_IRQHandler |
| 308 | +CMP0_IRQHandler |
| 309 | +TPM0_IRQHandler |
| 310 | +TPM1_IRQHandler |
| 311 | +TPM2_IRQHandler |
| 312 | +RTC_IRQHandler |
| 313 | +RTC_Seconds_IRQHandler |
| 314 | +PIT_IRQHandler |
| 315 | +I2S0_IRQHandler |
| 316 | +USB0_IRQHandler |
| 317 | +DAC0_IRQHandler |
| 318 | +TSI0_IRQHandler |
| 319 | +MCG_IRQHandler |
| 320 | +LPTimer_IRQHandler |
| 321 | +LCD_IRQHandler |
| 322 | +PORTA_IRQHandler |
| 323 | +PORTD_IRQHandler |
| 324 | +DefaultISR |
| 325 | + |
| 326 | + B . |
| 327 | + |
| 328 | + ENDP |
| 329 | + |
| 330 | + |
| 331 | + ALIGN |
| 332 | + END |
0 commit comments