123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- /**************************************************************************//**
- * @file startup_<Device>.s
- * @brief CMSIS Cortex-M# Core Device Startup File for
- * Device <Device>
- * @version V3.01
- * @date 06. March 2012
- *
- * @note Version CodeSourcery Sourcery G++ Lite (with CS3)
- * Copyright (C) 2012 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.
- *
- ******************************************************************************/
- /*
- //-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
- */
- /*
- // <h> Stack Configuration
- // <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
- // </h>
- */
- .equ Stack_Size, 0x00000400
- .section ".stack", "w"
- .align 3
- .globl __cs3_stack_mem
- .globl __cs3_stack_size
- __cs3_stack_mem:
- .if Stack_Size
- .space Stack_Size
- .endif
- .size __cs3_stack_mem, . - __cs3_stack_mem
- .set __cs3_stack_size, . - __cs3_stack_mem
- /*
- // <h> Heap Configuration
- // <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
- // </h>
- */
- .equ Heap_Size, 0x00000100
-
- .section ".heap", "w"
- .align 3
- .globl __cs3_heap_start
- .globl __cs3_heap_end
- __cs3_heap_start:
- .if Heap_Size
- .space Heap_Size
- .endif
- __cs3_heap_end:
- /* Vector Table */
- .section ".cs3.interrupt_vector"
- .globl __cs3_interrupt_vector_cortex_m
- .type __cs3_interrupt_vector_cortex_m, %object
- __cs3_interrupt_vector_cortex_m:
- .long __cs3_stack /* Top of Stack */
- .long __cs3_reset /* Reset Handler */
- .long NMI_Handler /* NMI Handler */
- .long HardFault_Handler /* Hard Fault Handler */
- .long MemManage_Handler /* MPU Fault Handler */
- .long BusFault_Handler /* Bus Fault Handler */
- .long UsageFault_Handler /* Usage Fault Handler */
- .long 0 /* Reserved */
- .long 0 /* Reserved */
- .long 0 /* Reserved */
- .long 0 /* Reserved */
- .long SVC_Handler /* SVCall Handler */
- .long DebugMon_Handler /* Debug Monitor Handler */
- .long 0 /* Reserved */
- .long PendSV_Handler /* PendSV Handler */
- .long SysTick_Handler /* SysTick Handler */
- /* External Interrupts */
- /* ToDo: Add here the vectors for the device specific external interrupts handler */
- .long CSV_Handler /* 0: Clock Super Visor */
- .long SWDT_Handler /* 1: Software Watchdog Timer */
- .long LVD_Handler /* 2: Low Voltage Detector */
- .long MFT_WG_IRQHandler /* 3: Wave Form Generator / DTIF */
- .long INT0_7_Handler /* 4: External Interrupt Request ch.0 to ch.7 */
- .long INT8_15_Handler /* 5: External Interrupt Request ch.8 to ch.15 */
- .long DT_Handler /* 6: Dual Timer / Quad Decoder */
- .long MFS0RX_IRQHandler /* 7: MultiFunction Serial ch.0 */
- .long MFS0TX_IRQHandler /* 8: MultiFunction Serial ch.0 */
- .long MFS1RX_IRQHandler /* 9: MultiFunction Serial ch.1 */
- .long MFS1TX_IRQHandler /* 10: MultiFunction Serial ch.1 */
- .long MFS2RX_IRQHandler /* 11: MultiFunction Serial ch.2 */
- .long MFS2TX_IRQHandler /* 12: MultiFunction Serial ch.2 */
- .long MFS3RX_IRQHandler /* 13: MultiFunction Serial ch.3 */
- .long MFS3TX_IRQHandler /* 14: MultiFunction Serial ch.3 */
- .long MFS4RX_IRQHandler /* 15: MultiFunction Serial ch.4 */
- .long MFS4TX_IRQHandler /* 16: MultiFunction Serial ch.4 */
- .long MFS5RX_IRQHandler /* 17: MultiFunction Serial ch.5 */
- .long MFS5TX_IRQHandler /* 18: MultiFunction Serial ch.5 */
- .long MFS6RX_IRQHandler /* 19: MultiFunction Serial ch.6 */
- .long MFS6TX_IRQHandler /* 20: MultiFunction Serial ch.6 */
- .long MFS7RX_IRQHandler /* 21: MultiFunction Serial ch.7 */
- .long MFS7TX_IRQHandler /* 22: MultiFunction Serial ch.7 */
- .long PPG_Handler /* 23: PPG */
- .long TIM_IRQHandler /* 24: OSC / PLL / Watch Counter */
- .long ADC0_IRQHandler /* 25: ADC0 */
- .long ADC1_IRQHandler /* 26: ADC1 */
- .long ADC2_IRQHandler /* 27: ADC2 */
- .long MFT_FRT_IRQHandler /* 28: Free-run Timer */
- .long MFT_IPC_IRQHandler /* 29: Input Capture */
- .long MFT_OPC_IRQHandler /* 30: Output Compare */
- .long BT_IRQHandler /* 31: Base Timer ch.0 to ch.7 */
- .long CAN0_IRQHandler /* 32: CAN ch.0 */
- .long CAN1_IRQHandler /* 33: CAN ch.1 */
- .long USBF_Handler /* 34: USB Function */
- .long USB_Handler /* 35: USB Function / USB HOST */
- .long RESERVED_1_IRQHandler /* 36: Reserved */
- .long RESERVED_2_IRQHandler /* 37: Reserved */
- .long DMAC0_Handler /* 38: DMAC ch.0 */
- .long DMAC1_Handler /* 39: DMAC ch.1 */
- .long DMAC2_Handler /* 40: DMAC ch.2 */
- .long DMAC3_Handler /* 41: DMAC ch.3 */
- .long DMAC4_Handler /* 42: DMAC ch.4 */
- .long DMAC5_Handler /* 43: DMAC ch.5 */
- .long DMAC6_Handler /* 44: DMAC ch.6 */
- .long DMAC7_Handler /* 45: DMAC ch.7 */
- .long RESERVED_3_IRQHandler /* 46: Reserved */
- .long RESERVED_4_IRQHandler /* 47: Reserved */
- .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m
- .thumb
- /* Reset Handler */
- .section .cs3.reset,"x",%progbits
- .thumb_func
- .globl __cs3_reset_cortex_m
- .globl _start
- .type __cs3_reset_cortex_m, %function
- __cs3_reset_cortex_m:
- _start:
- .fnstart
- LDR R0, =SystemInit
- BLX R0
- LDR R0,=_start
- BX R0
- .pool
- .cantunwind
- .fnend
- .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m
- .section ".text"
- /* Exception Handlers */
- .weak NMI_Handler
- .type NMI_Handler, %function
- NMI_Handler:
- B .
- .size NMI_Handler, . - NMI_Handler
- .weak HardFault_Handler
- .type HardFault_Handler, %function
- HardFault_Handler:
- B .
- .size HardFault_Handler, . - HardFault_Handler
- .weak MemManage_Handler
- .type MemManage_Handler, %function
- MemManage_Handler:
- B .
- .size MemManage_Handler, . - MemManage_Handler
- .weak BusFault_Handler
- .type BusFault_Handler, %function
- BusFault_Handler:
- B .
- .size BusFault_Handler, . - BusFault_Handler
- .weak UsageFault_Handler
- .type UsageFault_Handler, %function
- UsageFault_Handler:
- B .
- .size UsageFault_Handler, . - UsageFault_Handler
- .weak SVC_Handler
- .type SVC_Handler, %function
- SVC_Handler:
- B .
- .size SVC_Handler, . - SVC_Handler
- .weak DebugMon_Handler
- .type DebugMon_Handler, %function
- DebugMon_Handler:
- B .
- .size DebugMon_Handler, . - DebugMon_Handler
- .weak PendSV_Handler
- .type PendSV_Handler, %function
- PendSV_Handler:
- B .
- .size PendSV_Handler, . - PendSV_Handler
- .weak SysTick_Handler
- .type SysTick_Handler, %function
- SysTick_Handler:
- B .
- .size SysTick_Handler, . - SysTick_Handler
- /* IRQ Handlers */
- /* ToDo: Add here the export definition for the device specific external interrupts handler */
- /* ToDo: Add here the names for the device specific external interrupts handler */
- .globl Default_Handler
- .type Default_Handler, %function
- Default_Handler:
- B .
- .size Default_Handler, . - Default_Handler
- .macro IRQ handler
- .weak \handler
- .set \handler, Default_Handler
- .endm
- IRQ CSV_Handler /* 0: Clock Super Visor */
- IRQ SWDT_Handler /* 1: Software Watchdog Timer */
- IRQ LVD_Handler /* 2: Low Voltage Detector */
- IRQ MFT_WG_IRQHandler /* 3: Wave Form Generator / DTIF */
- IRQ INT0_7_Handler /* 4: External Interrupt Request ch.0 to ch.7 */
- IRQ INT8_15_Handler /* 5: External Interrupt Request ch.8 to ch.15 */
- IRQ DT_Handler /* 6: Dual Timer / Quad Decoder */
- IRQ MFS0RX_IRQHandler /* 7: MultiFunction Serial ch.0 */
- IRQ MFS0TX_IRQHandler /* 8: MultiFunction Serial ch.0 */
- IRQ MFS1RX_IRQHandler /* 9: MultiFunction Serial ch.1 */
- IRQ MFS1TX_IRQHandler /* 10: MultiFunction Serial ch.1 */
- IRQ MFS2RX_IRQHandler /* 11: MultiFunction Serial ch.2 */
- IRQ MFS2TX_IRQHandler /* 12: MultiFunction Serial ch.2 */
- IRQ MFS3RX_IRQHandler /* 13: MultiFunction Serial ch.3 */
- IRQ MFS3TX_IRQHandler /* 14: MultiFunction Serial ch.3 */
- IRQ MFS4RX_IRQHandler /* 15: MultiFunction Serial ch.4 */
- IRQ MFS4TX_IRQHandler /* 16: MultiFunction Serial ch.4 */
- IRQ MFS5RX_IRQHandler /* 17: MultiFunction Serial ch.5 */
- IRQ MFS5TX_IRQHandler /* 18: MultiFunction Serial ch.5 */
- IRQ MFS6RX_IRQHandler /* 19: MultiFunction Serial ch.6 */
- IRQ MFS6TX_IRQHandler /* 20: MultiFunction Serial ch.6 */
- IRQ MFS7RX_IRQHandler /* 21: MultiFunction Serial ch.7 */
- IRQ MFS7TX_IRQHandler /* 22: MultiFunction Serial ch.7 */
- IRQ PPG_Handler /* 23: PPG */
- IRQ TIM_IRQHandler /* 24: OSC / PLL / Watch Counter */
- IRQ ADC0_IRQHandler /* 25: ADC0 */
- IRQ ADC1_IRQHandler /* 26: ADC1 */
- IRQ ADC2_IRQHandler /* 27: ADC2 */
- IRQ MFT_FRT_IRQHandler /* 28: Free-run Timer */
- IRQ MFT_IPC_IRQHandler /* 29: Input Capture */
- IRQ MFT_OPC_IRQHandler /* 30: Output Compare */
- IRQ BT_IRQHandler /* 31: Base Timer ch.0 to ch.7 */
- IRQ CAN0_IRQHandler /* 32: CAN ch.0 */
- IRQ CAN1_IRQHandler /* 33: CAN ch.1 */
- IRQ USBF_Handler /* 34: USB Function */
- IRQ USB_Handler /* 35: USB Function / USB HOST */
- IRQ RESERVED_1_IRQHandler /* 36: Reserved */
- IRQ RESERVED_2_IRQHandler /* 37: Reserved */
- IRQ DMAC0_Handler /* 38: DMAC ch.0 */
- IRQ DMAC1_Handler /* 39: DMAC ch.1 */
- IRQ DMAC2_Handler /* 40: DMAC ch.2 */
- IRQ DMAC3_Handler /* 41: DMAC ch.3 */
- IRQ DMAC4_Handler /* 42: DMAC ch.4 */
- IRQ DMAC5_Handler /* 43: DMAC ch.5 */
- IRQ DMAC6_Handler /* 44: DMAC ch.6 */
- IRQ DMAC7_Handler /* 45: DMAC ch.7 */
- IRQ RESERVED_3_IRQHandler /* 46: Reserved */
- IRQ RESERVED_4_IRQHandler /* 47: Reserved */
- .end
|