diff --git a/.travis.yml b/.travis.yml index b191ae213cf4c1b657f4dccb850545f1bdabee53..c0557731e0bd26b63adef68611b32a72ef7f6e3e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ script: env: # - RTT_BSP='simulator' RTT_CC='clang-analyze' RTT_EXEC_PATH=/usr/share/clang/scan-build - RTT_BSP='CME_M7' RTT_TOOL_CHAIN='sourcery-arm' -# - RTT_BSP='apollo2' RTT_TOOL_CHAIN='sourcery-arm' + - RTT_BSP='apollo2' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='asm9260t' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='at91sam9260' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='allwinner_tina' RTT_TOOL_CHAIN='sourcery-arm' diff --git a/bsp/apollo2/libraries/drivers/hal/am_hal_iom.c b/bsp/apollo2/libraries/drivers/hal/am_hal_iom.c index 95653b9fa5543668c30bc2b6dfe2bafb6be7e3cb..244c28732b8ef6411c4c5eb18237103c05f1c527 100644 --- a/bsp/apollo2/libraries/drivers/hal/am_hal_iom.c +++ b/bsp/apollo2/libraries/drivers/hal/am_hal_iom.c @@ -1122,7 +1122,7 @@ am_hal_iom_workaround_word_write(uint32_t ui32ChipSelect, //! @return None. // //***************************************************************************** -#if defined(__GNUC_STDC_INLINE__) +#if defined(__GNUC__) static void __attribute__((naked)) iom_workaround_loop(uint32_t ui32PadRegVal, volatile uint32_t *pui32PadReg, bool bRising) @@ -1164,8 +1164,7 @@ iom_workaround_loop(uint32_t ui32PadRegVal, volatile uint32_t *pui32PadReg, __asm(" str r0, [r1]"); __asm(" bx lr"); } -#endif -#ifdef keil +#elif defined(__CC_ARM) __asm static void iom_workaround_loop(uint32_t ui32PadRegVal, volatile uint32_t *pui32PadReg, bool bRising) @@ -1208,8 +1207,7 @@ falling_check_mosi bx lr nop } -#endif -#ifdef iar +#elif defined(__ICCARM__) static void iom_workaround_loop(uint32_t ui32PadRegVal, volatile uint32_t *pui32PadReg, bool bRising) diff --git a/bsp/apollo2/libraries/startup/SConscript b/bsp/apollo2/libraries/startup/SConscript index e4758f1e2e6f750056af37d649c930bcda469cc0..bbaef37870fb85714888285abccfc5c734e7f6c0 100644 --- a/bsp/apollo2/libraries/startup/SConscript +++ b/bsp/apollo2/libraries/startup/SConscript @@ -11,7 +11,7 @@ src = Split(""" # add for startup script if rtconfig.CROSS_TOOL == 'gcc': - src = src + ['gcc_ride7/' + 'startup_gcc.c'] + src = src + ['gcc/' + 'startup_gcc.c'] elif rtconfig.CROSS_TOOL == 'keil': src = src + ['arm/' + 'startup_keil.s'] elif rtconfig.CROSS_TOOL == 'iar': @@ -19,7 +19,7 @@ elif rtconfig.CROSS_TOOL == 'iar': path = [cwd] -CPPDEFINES = ['AM_PACKAGE_BGA', 'AM_PART_APOLLO2', 'keil'] +CPPDEFINES = ['AM_PACKAGE_BGA', 'AM_PART_APOLLO2'] group = DefineGroup('Libraries', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) diff --git a/bsp/apollo2/rtconfig.py b/bsp/apollo2/rtconfig.py index 90adde54351274a8f29de3ad2e04f58df352a8fe..506ee78ecaef3182465f728adc09047bdf8fda38 100644 --- a/bsp/apollo2/rtconfig.py +++ b/bsp/apollo2/rtconfig.py @@ -43,7 +43,7 @@ if PLATFORM == 'gcc': DEVICE = ' -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections' CFLAGS = DEVICE AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-apollo2.map,-cref,-u,Reset_Handler -T' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-apollo2.map,-cref,-u,am_reset_isr -T rtthread_link.ld' CPATH = '' LPATH = '' diff --git a/bsp/apollo2/rtthread_link.ld b/bsp/apollo2/rtthread_link.ld new file mode 100644 index 0000000000000000000000000000000000000000..9be732636823ea1486e3a356bd21bbdf60a787a2 --- /dev/null +++ b/bsp/apollo2/rtthread_link.ld @@ -0,0 +1,142 @@ +/* + * linker script for STM32F10x with GNU ld + * bernard.xiong 2009-10-14 + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + CODE (rx) : ORIGIN = 0x00000000, LENGTH = 1024k /* 1024KB flash */ + DATA (rw) : ORIGIN = 0x10000000, LENGTH = 256k /* 128K sram */ +} +ENTRY(am_reset_isr) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + . = ALIGN(4); + _etext = .; + } > CODE = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _init_data = .; + } > CODE + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_init_data) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } >DATA + + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > DATA + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +}