| ;/**************************************************************************//** |
| ; * @file startup_ARMCM4.s |
| ; * @brief CMSIS Cortex-M4 Core Device Startup File |
| ; * for CM4 Device Series |
| ; * @version V1.05 |
| ; * @date 25. July 2011 |
| ; * |
| ; * @note |
| ; * Copyright (C) 2010-2011 ARM Limited. All rights reserved. |
| ; * |
| ; * @par |
| ; * ARM Limited (ARM) is supplying this software for use with Cortex-M |
| ; * processor based microcontrollers. This file can be freely distributed |
| ; * within development tools that are supporting such ARM based processors. |
| ; * |
| ; * @par |
| ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED |
| ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF |
| ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. |
| ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR |
| ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. |
| ; * |
| ; ******************************************************************************/ |
| |
| |
| ; |
| ; The modules in this file are included in the libraries, and may be replaced |
| ; by any user-defined modules that define the PUBLIC symbol _program_start or |
| ; a user defined start symbol. |
| ; To override the cstartup defined in the library, simply add your modified |
| ; version to the workbench project. |
| ; |
| ; The vector table is normally located at address 0. |
| ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. |
| ; The name "__vector_table" has special meaning for C-SPY: |
| ; it is where the SP start value is found, and the NVIC vector |
| ; table register (VTOR) is initialized to this address if != 0. |
| ; |
| ; Cortex-M version |
| ; |
| |
| MODULE ?cstartup |
| |
| ;; Forward declaration of sections. |
| SECTION CSTACK:DATA:NOROOT(3) |
| |
| SECTION .intvec:CODE:NOROOT(2) |
| |
| EXTERN __iar_program_start |
| EXTERN SystemInit |
| PUBLIC __vector_table |
| PUBLIC __vector_table_0x1c |
| PUBLIC __Vectors |
| PUBLIC __Vectors_End |
| PUBLIC __Vectors_Size |
| |
| DATA |
| |
| __vector_table |
| DCD sfe(CSTACK) |
| DCD Reset_Handler |
| |
| DCD NMI_Handler |
| DCD HardFault_Handler |
| DCD MemManage_Handler |
| DCD BusFault_Handler |
| DCD UsageFault_Handler |
| __vector_table_0x1c |
| DCD 0 |
| DCD 0 |
| DCD 0 |
| DCD 0 |
| DCD SVC_Handler |
| DCD DebugMon_Handler |
| DCD 0 |
| DCD PendSV_Handler |
| DCD SysTick_Handler |
| |
| ; External Interrupts |
| DCD DEF_IRQHandler ; 0: Default |
| __Vectors_End |
| |
| __Vectors EQU __vector_table |
| __Vectors_Size EQU __Vectors_End - __Vectors |
| |
| |
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| ;; |
| ;; Default interrupt handlers. |
| ;; |
| THUMB |
| |
| PUBWEAK Reset_Handler |
| SECTION .text:CODE:REORDER(2) |
| Reset_Handler |
| LDR R0, =SystemInit |
| BLX R0 |
| LDR R0, =__iar_program_start |
| BX R0 |
| |
| PUBWEAK NMI_Handler |
| SECTION .text:CODE:REORDER(1) |
| NMI_Handler |
| B NMI_Handler |
| |
| PUBWEAK HardFault_Handler |
| SECTION .text:CODE:REORDER(1) |
| HardFault_Handler |
| B HardFault_Handler |
| |
| PUBWEAK MemManage_Handler |
| SECTION .text:CODE:REORDER(1) |
| MemManage_Handler |
| B MemManage_Handler |
| |
| PUBWEAK BusFault_Handler |
| SECTION .text:CODE:REORDER(1) |
| BusFault_Handler |
| B BusFault_Handler |
| |
| PUBWEAK UsageFault_Handler |
| SECTION .text:CODE:REORDER(1) |
| UsageFault_Handler |
| B UsageFault_Handler |
| |
| PUBWEAK SVC_Handler |
| SECTION .text:CODE:REORDER(1) |
| SVC_Handler |
| B SVC_Handler |
| |
| PUBWEAK DebugMon_Handler |
| SECTION .text:CODE:REORDER(1) |
| DebugMon_Handler |
| B DebugMon_Handler |
| |
| PUBWEAK PendSV_Handler |
| SECTION .text:CODE:REORDER(1) |
| PendSV_Handler |
| B PendSV_Handler |
| |
| PUBWEAK SysTick_Handler |
| SECTION .text:CODE:REORDER(1) |
| SysTick_Handler |
| B SysTick_Handler |
| |
| PUBWEAK DEF_IRQHandler |
| SECTION .text:CODE:REORDER(1) |
| DEF_IRQHandler |
| B DEF_IRQHandler |
| |
| END |