mbed library sources, include can_api for nucleo-f091rc
Dependents: CanNucleoF0_example
Fork of mbed-src by
Revision 12:5fa2273de5db, committed 2013-07-24
- Comitter:
- emimon01
- Date:
- Wed Jul 24 11:11:21 2013 +0100
- Parent:
- 11:f9e72c209510
- Child:
- 13:0645d8841f51
- Commit message:
- Remove sources for toolchains unknown by the online compiler
Changed in this revision
--- a/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/MKL25Z4.ld Sun Jun 30 16:34:50 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* -***************************************************************************** -** -** File : KL25Z128M4_flash.ld -** -** Default linker command file for Flash targets -** -***************************************************************************** -*/ -/* Entry Point */ -ENTRY(__thumb_startup) - -/* Highest address of the user mode stack */ -_estack = 0x20003000; /* end of SRAM */ -__SP_INIT = _estack; - -/* Generate a link error if heap and stack don't fit into RAM */ -__heap_size = 0x400; /* required amount of heap */ -__stack_size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ - m_interrupts (rx) : ORIGIN = 0x00000000, LENGTH = 0xC0 - m_cfmprotrom (rx) : ORIGIN = 0x00000400, LENGTH = 0x10 - m_text (rx) : ORIGIN = 0x00000800, LENGTH = 128K - 0x800 - m_data (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* SRAM */ -} - - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into Flash */ - .interrupts : - { - __vector_table = .; - . = ALIGN(4); - KEEP(*(.vectortable)) /* Startup code */ - . = ALIGN(4); - } > m_interrupts - - .cfmprotect : - { - . = ALIGN(4); - KEEP(*(.cfmconfig)) /* Flash Configuration Field (FCF) */ - . = ALIGN(4); - } > m_cfmprotrom - - /* The program code and other data goes into Flash */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } > m_text - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > m_text - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } > m_text - - .ctors : - { - __CTOR_LIST__ = .; - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __CTOR_END__ = .; - } > m_text - .dtors : - { - __DTOR_LIST__ = .; - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - __DTOR_END__ = .; - } > m_text - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } > m_text - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } > m_text - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - - ___ROM_AT = .; - } > m_text - - /* reserve MTB memory at the beginning of m_data */ - .mtb : /* MTB buffer address as defined by the hardware */ - { - . = ALIGN(8); - _mtb_start = .; - KEEP(*(.mtb_buf)) /* need to KEEP Micro Trace Buffer as not referenced by application */ - . = ALIGN(8); - _mtb_end = .; - } > m_data - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : AT(___ROM_AT) - { - . = ALIGN(4); - __sinit__ = .; - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } > m_data - - ___data_size = _edata - _sdata; - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss section */ - __START_BSS = .; - PROVIDE ( __bss_start__ = __START_BSS ); - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - __END_BSS = .; - PROVIDE ( __bss_end__ = __END_BSS ); - } > m_data - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - LONG(___ROM_AT); - LONG(_sdata); - LONG(___data_size); - LONG(0); - LONG(0); - LONG(0); - } > m_data - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - __heap_addr = .; - . = . + __heap_size; - . = . + __stack_size; - . = ALIGN(4); - } > m_data - - .ARM.attributes 0 : { *(.ARM.attributes) } -}
--- a/vendor/Freescale/KL25Z/cmsis/GCC_CW_EWL/startup_MKL25Z4.c Sun Jun 30 16:34:50 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -#include <string.h> -#include <stdlib.h> - -#include "cmsis.h" - -// Linker Script -extern unsigned long _estack; -extern char __S_romp[]; - -extern char __START_BSS[]; -extern char __END_BSS[]; - -// CRT0 -extern void __init_registers(); -extern void __copy_rom_sections_to_ram(void); -extern void __call_static_initializers(void); -extern void __init_user(); - -// User/mbed Defined -extern int main(); -extern void mbed_exit(int return_code); - -void _ExitProcess(int return_code) { - mbed_exit(return_code); -} - -void __thumb_startup(void) { - // Setup registers - __init_registers(); - - // Disable the Watchdog because it may reset the core before entering main(). - SIM->COPC = 0x0; - - // zero-fill the .bss section - memset(__START_BSS, 0, (__END_BSS - __START_BSS)); - - if (__S_romp != 0L) - __copy_rom_sections_to_ram(); - - // call C++ static initializers - __call_static_initializers(); - - // initializations before main, user specific - __init_user(); - - exit(main()); - - // should never get here - while (1); -} - -void Default_Handler() { - __asm("bkpt"); -} - -/* Weak definitions of handlers point to Default_Handler if not implemented */ -void NMI_Handler() __attribute__ ((weak, alias("Default_Handler"))); -void HardFault_Handler() __attribute__ ((weak, alias("Default_Handler"))); -void SVC_Handler() __attribute__ ((weak, alias("Default_Handler"))); -void PendSV_Handler() __attribute__ ((weak, alias("Default_Handler"))); -void SysTick_Handler() __attribute__ ((weak, alias("Default_Handler"))); - -void DMA0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void DMA1_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void DMA2_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void DMA3_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void MCM_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void FTFL_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void PMC_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void LLW_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void I2C0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void I2C1_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void SPI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void SPI1_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void UART0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void UART1_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void UART2_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void ADC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void CMP0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void FTM0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void FTM1_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void FTM2_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void RTC_Alarm_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void RTC_Seconds_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void PIT_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void USBOTG_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void DAC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void TSI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void MCG_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void LPTimer_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void PORTA_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); -void PORTD_IRQHandler() __attribute__ ((weak, alias("Default_Handler"))); - -/* The Interrupt Vector Table */ -void (* const InterruptVector[])() __attribute__ ((section(".vectortable"))) = { - /* Processor exceptions */ - (void(*)(void)) &_estack, - __thumb_startup, - NMI_Handler, - HardFault_Handler, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - SVC_Handler, - 0, - 0, - PendSV_Handler, - SysTick_Handler, - - /* Interrupts */ - DMA0_IRQHandler, /* DMA Channel 0 Transfer Complete and Error */ - DMA1_IRQHandler, /* DMA Channel 1 Transfer Complete and Error */ - DMA2_IRQHandler, /* DMA Channel 2 Transfer Complete and Error */ - DMA3_IRQHandler, /* DMA Channel 3 Transfer Complete and Error */ - MCM_IRQHandler, /* Normal Interrupt */ - FTFL_IRQHandler, /* FTFL Interrupt */ - PMC_IRQHandler, /* PMC Interrupt */ - LLW_IRQHandler, /* Low Leakage Wake-up */ - I2C0_IRQHandler, /* I2C0 interrupt */ - I2C1_IRQHandler, /* I2C1 interrupt */ - SPI0_IRQHandler, /* SPI0 Interrupt */ - SPI1_IRQHandler, /* SPI1 Interrupt */ - UART0_IRQHandler, /* UART0 Status and Error interrupt */ - UART1_IRQHandler, /* UART1 Status and Error interrupt */ - UART2_IRQHandler, /* UART2 Status and Error interrupt */ - ADC0_IRQHandler, /* ADC0 interrupt */ - CMP0_IRQHandler, /* CMP0 interrupt */ - FTM0_IRQHandler, /* FTM0 fault, overflow and channels interrupt */ - FTM1_IRQHandler, /* FTM1 fault, overflow and channels interrupt */ - FTM2_IRQHandler, /* FTM2 fault, overflow and channels interrupt */ - RTC_Alarm_IRQHandler, /* RTC Alarm interrupt */ - RTC_Seconds_IRQHandler, /* RTC Seconds interrupt */ - PIT_IRQHandler, /* PIT timer all channels interrupt */ - Default_Handler, /* Reserved interrupt 39/23 */ - USBOTG_IRQHandler, /* USB interrupt */ - DAC0_IRQHandler, /* DAC0 interrupt */ - TSI0_IRQHandler, /* TSI0 Interrupt */ - MCG_IRQHandler, /* MCG Interrupt */ - LPTimer_IRQHandler, /* LPTimer interrupt */ - Default_Handler, /* Reserved interrupt 45/29 */ - PORTA_IRQHandler, /* Port A interrupt */ - PORTD_IRQHandler /* Port D interrupt */ -};
--- a/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/MKL25Z4.ld Sun Jun 30 16:34:50 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* Linker script for mbed LPC1768 */ - -/* Linker script to configure memory regions. */ -MEMORY -{ - FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K - RAM (rwx) : ORIGIN = 0x1FFFF0C0, LENGTH = 0x3F40 -} - -/* Linker script to place sections and symbol values. Should be used together - * with other linker script that defines memory regions FLASH and RAM. - * It references following symbols, which must be defined in code: - * Reset_Handler : Entry of reset handler - * - * It defines following symbols, which code can use without definition: - * __exidx_start - * __exidx_end - * __etext - * __data_start__ - * __preinit_array_start - * __preinit_array_end - * __init_array_start - * __init_array_end - * __fini_array_start - * __fini_array_end - * __data_end__ - * __bss_start__ - * __bss_end__ - * __end__ - * end - * __HeapLimit - * __StackLimit - * __StackTop - * __stack - */ -ENTRY(Reset_Handler) - -SECTIONS -{ - .text : - { - KEEP(*(.isr_vector)) - *(.text.Reset_Handler) - *(.text.SystemInit) - - /* Only vectors and code running at reset are safe to be in first 512 - bytes since RAM can be mapped into this area for RAM based interrupt - vectors. */ - . = 0x00000200; - *(.text*) - - KEEP(*(.init)) - KEEP(*(.fini)) - - /* .ctors */ - *crtbegin.o(.ctors) - *crtbegin?.o(.ctors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - - /* .dtors */ - *crtbegin.o(.dtors) - *crtbegin?.o(.dtors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - - *(.rodata*) - - KEEP(*(.eh_frame*)) - } > FLASH - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH - __exidx_end = .; - - __etext = .; - - .data : AT (__etext) - { - __data_start__ = .; - *(vtable) - *(.data*) - - . = ALIGN(4); - /* preinit data */ - PROVIDE (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE (__preinit_array_end = .); - - . = ALIGN(4); - /* init data */ - PROVIDE (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE (__init_array_end = .); - - - . = ALIGN(4); - /* finit data */ - PROVIDE (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE (__fini_array_end = .); - - . = ALIGN(4); - /* All data end */ - __data_end__ = .; - - } > RAM - - .bss : - { - __bss_start__ = .; - *(.bss*) - *(COMMON) - __bss_end__ = .; - } > RAM - - .heap : - { - __end__ = .; - end = __end__; - *(.heap*) - __HeapLimit = .; - } > RAM - - /* .stack_dummy section doesn't contains any symbols. It is only - * used for linker to calculate size of stack sections, and assign - * values to stack symbols later */ - .stack_dummy : - { - *(.stack) - } > RAM - - /* Set stack top to end of RAM, and stack limit move down by - * size of stack_dummy section */ - __StackTop = ORIGIN(RAM) + LENGTH(RAM); - __StackLimit = __StackTop - SIZEOF(.stack_dummy); - PROVIDE(__stack = __StackTop); - - /* Check if data + heap + stack exceeds RAM limit */ - ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") -}
--- a/vendor/Freescale/KL25Z/cmsis/GCC_CW_NEWLIB/startup_MKL25Z4.s Sun Jun 30 16:34:50 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -/* File: startup_ARMCM0.S - * Purpose: startup file for Cortex-M0 devices. Should use with - * GCC for ARM Embedded Processors - * Version: V1.2 - * Date: 15 Nov 2011 - * - * Copyright (c) 2011, ARM Limited - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the ARM Limited nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - .syntax unified - .arch armv6-m - -/* Memory Model - The HEAP starts at the end of the DATA section and grows upward. - - The STACK starts at the end of the RAM and grows downward. - - The HEAP and stack STACK are only checked at compile time: - (DATA_SIZE + HEAP_SIZE + STACK_SIZE) < RAM_SIZE - - This is just a check for the bare minimum for the Heap+Stack area before - aborting compilation, it is not the run time limit: - Heap_Size + Stack_Size = 0x80 + 0x80 = 0x100 - */ - .section .stack - .align 3 -#ifdef __STACK_SIZE - .equ Stack_Size, __STACK_SIZE -#else - .equ Stack_Size, 0x80 -#endif - .globl __StackTop - .globl __StackLimit -__StackLimit: - .space Stack_Size - .size __StackLimit, . - __StackLimit -__StackTop: - .size __StackTop, . - __StackTop - - .section .heap - .align 3 -#ifdef __HEAP_SIZE - .equ Heap_Size, __HEAP_SIZE -#else - .equ Heap_Size, 0x80 -#endif - .globl __HeapBase - .globl __HeapLimit -__HeapBase: - .space Heap_Size - .size __HeapBase, . - __HeapBase -__HeapLimit: - .size __HeapLimit, . - __HeapLimit - - .section .isr_vector - .align 2 - .globl __isr_vector -__isr_vector: - .long __StackTop /* Top of Stack */ - .long Reset_Handler /* Reset Handler */ - .long NMI_Handler /* NMI Handler */ - .long HardFault_Handler /* Hard Fault Handler */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long SVC_Handler /* SVCall Handler */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long PendSV_Handler /* PendSV Handler */ - .long SysTick_Handler /* SysTick Handler */ - - /* External interrupts */ - .long DMA0_IRQHandler /* DMA channel 0 transfer complete interrupt */ - .long DMA1_IRQHandler /* DMA channel 1 transfer complete interrupt */ - .long DMA2_IRQHandler /* DMA channel 2 transfer complete interrupt */ - .long DMA3_IRQHandler /* DMA channel 3 transfer complete interrupt */ - .long Reserved20_IRQHandler /* Reserved interrupt 20 */ - .long FTFA_IRQHandler /* FTFA interrupt */ - .long LVD_LVW_IRQHandler /* Low Voltage Detect, Low Voltage Warning */ - .long LLW_IRQHandler /* Low Leakage Wakeup */ - .long I2C0_IRQHandler /* I2C0 interrupt */ - .long I2C1_IRQHandler /* I2C0 interrupt 25 */ - .long SPI0_IRQHandler /* SPI0 interrupt */ - .long SPI1_IRQHandler /* SPI1 interrupt */ - .long UART0_IRQHandler /* UART0 status/error interrupt */ - .long UART1_IRQHandler /* UART1 status/error interrupt */ - .long UART2_IRQHandler /* UART2 status/error interrupt */ - .long ADC0_IRQHandler /* ADC0 interrupt */ - .long CMP0_IRQHandler /* CMP0 interrupt */ - .long TPM0_IRQHandler /* TPM0 fault, overflow and channels interrupt */ - .long TPM1_IRQHandler /* TPM1 fault, overflow and channels interrupt */ - .long TPM2_IRQHandler /* TPM2 fault, overflow and channels interrupt */ - .long RTC_IRQHandler /* RTC interrupt */ - .long RTC_Seconds_IRQHandler /* RTC seconds interrupt */ - .long PIT_IRQHandler /* PIT timer interrupt */ - .long Reserved39_IRQHandler /* Reserved interrupt 39 */ - .long USB0_IRQHandler /* USB0 interrupt */ - .long DAC0_IRQHandler /* DAC interrupt */ - .long TSI0_IRQHandler /* TSI0 interrupt */ - .long MCG_IRQHandler /* MCG interrupt */ - .long LPTimer_IRQHandler /* LPTimer interrupt */ - .long Reserved45_IRQHandler /* Reserved interrupt 45 */ - .long PORTA_IRQHandler /* Port A interrupt */ - .long PORTD_IRQHandler /* Port D interrupt */ - - .size __isr_vector, . - __isr_vector - - .section .text.Reset_Handler - .thumb - .thumb_func - .align 2 - .globl Reset_Handler - .type Reset_Handler, %function -Reset_Handler: -/* Loop to copy data from read only memory to RAM. The ranges - * of copy from/to are specified by following symbols evaluated in - * linker script. - * __etext: End of code section, i.e., begin of data sections to copy from. - * __data_start__/__data_end__: RAM address range that data should be - * copied to. Both must be aligned to 4 bytes boundary. */ - - ldr r1, =__etext - ldr r2, =__data_start__ - ldr r3, =__data_end__ - - subs r3, r2 - ble .flash_to_ram_loop_end - - movs r4, 0 -.flash_to_ram_loop: - ldr r0, [r1,r4] - str r0, [r2,r4] - adds r4, 4 - cmp r4, r3 - blt .flash_to_ram_loop -.flash_to_ram_loop_end: - - ldr r0, =SystemInit - blx r0 - ldr r0, =_start - bx r0 - .pool - .size Reset_Handler, . - Reset_Handler - - .text -/* Macro to define default handlers. Default handler - * will be weak symbol and just dead loops. They can be - * overwritten by other handlers */ - .macro def_default_handler handler_name - .align 1 - .thumb_func - .weak \handler_name - .type \handler_name, %function -\handler_name : - b . - .size \handler_name, . - \handler_name - .endm - - def_default_handler NMI_Handler - def_default_handler HardFault_Handler - def_default_handler SVC_Handler - def_default_handler PendSV_Handler - def_default_handler SysTick_Handler - def_default_handler DMA0_IRQHandler - def_default_handler DMA1_IRQHandler - def_default_handler DMA2_IRQHandler - def_default_handler DMA3_IRQHandler - def_default_handler Reserved20_IRQHandler - def_default_handler FTFA_IRQHandler - def_default_handler LVD_LVW_IRQHandler - def_default_handler LLW_IRQHandler - def_default_handler I2C0_IRQHandler - def_default_handler I2C1_IRQHandler - def_default_handler SPI0_IRQHandler - def_default_handler SPI1_IRQHandler - def_default_handler UART0_IRQHandler - def_default_handler UART1_IRQHandler - def_default_handler UART2_IRQHandler - def_default_handler ADC0_IRQHandler - def_default_handler CMP0_IRQHandler - def_default_handler TPM0_IRQHandler - def_default_handler TPM1_IRQHandler - def_default_handler TPM2_IRQHandler - def_default_handler RTC_IRQHandler - def_default_handler RTC_Seconds_IRQHandler - def_default_handler PIT_IRQHandler - def_default_handler Reserved39_IRQHandler - def_default_handler USB0_IRQHandler - def_default_handler DAC0_IRQHandler - def_default_handler TSI0_IRQHandler - def_default_handler MCG_IRQHandler - def_default_handler LPTimer_IRQHandler - def_default_handler Reserved45_IRQHandler - def_default_handler PORTA_IRQHandler - def_default_handler PORTD_IRQHandler - - .weak DEF_IRQHandler - .set DEF_IRQHandler, Default_Handler - - .end