summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author[email protected] <[email protected]>2012-06-30 01:52:48 +0000
committer[email protected] <[email protected]>2012-06-30 01:52:48 +0000
commitd402cfea19d33092606e1166efa83d245e150e29 (patch)
tree8e80ca7e42cbe675a8e64948e3e7537e36e136c1
parente2f5d345008c9557f9e2ec8452afbae9cc193acf (diff)
fixed compiling error in stm32f0x
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2197 bbd45198-f89e-11dd-88c7-29a3b14d5316
-rw-r--r--bsp/mb9bf506r/applications/application.c5
-rw-r--r--bsp/stm32f0x/Libraries/SConscript11
-rw-r--r--bsp/stm32f0x/SConstruct2
-rw-r--r--bsp/stm32f0x/rtconfig.py12
-rw-r--r--bsp/stm32f0x/stm32_rom.ld134
-rw-r--r--bsp/stm32f0x/stm32_rom.sct15
-rw-r--r--components/libc/minilibc/time.c2
-rw-r--r--components/libc/newlib/syscalls.c34
8 files changed, 180 insertions, 35 deletions
diff --git a/bsp/mb9bf506r/applications/application.c b/bsp/mb9bf506r/applications/application.c
index 1bfdce9f04..c5dcaf5f1c 100644
--- a/bsp/mb9bf506r/applications/application.c
+++ b/bsp/mb9bf506r/applications/application.c
@@ -1,7 +1,7 @@
/*
* File : application.c
* This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
+ * COPYRIGHT (C) 2009 - 2012, RT-Thread Development Team
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -62,7 +62,8 @@ int rt_application_init(void)
tid = rt_thread_create("init",
rt_init_thread_entry, RT_NULL,
2048, RT_THREAD_PRIORITY_MAX/3, 20);
- if (tid != RT_NULL) rt_thread_startup(tid);
+ if (tid != RT_NULL)
+ rt_thread_startup(tid);
return 0;
}
diff --git a/bsp/stm32f0x/Libraries/SConscript b/bsp/stm32f0x/Libraries/SConscript
index cb71c774cf..3f75836855 100644
--- a/bsp/stm32f0x/Libraries/SConscript
+++ b/bsp/stm32f0x/Libraries/SConscript
@@ -12,17 +12,6 @@ CMSIS/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
src += Glob('STM32F0xx_StdPeriph_Driver/src/*.c')
-# starupt scripts for each STM32 kind
-# startup_scripts = {}
-# startup_scripts['STM32F10X_CL'] = 'startup_stm32f10x_cl.s'
-# startup_scripts['STM32F10X_HD'] = 'startup_stm32f10x_hd.s'
-# startup_scripts['STM32F10X_HD_VL'] = 'startup_stm32f10x_hd_vl.s'
-# startup_scripts['STM32F10X_LD'] = 'startup_stm32f10x_ld.s'
-# startup_scripts['STM32F10X_LD_VL'] = 'startup_stm32f10x_ld_vl.s'
-# startup_scripts['STM32F10X_MD'] = 'startup_stm32f10x_md.s'
-# startup_scripts['STM32F10X_MD_VL'] = 'startup_stm32f10x_md_vl.s'
-# startup_scripts['STM32F10X_XL'] = 'startup_stm32f10x_xl.s'
-
#add for startup script
if rtconfig.CROSS_TOOL == 'gcc':
src = src + ['CMSIS/ST/STM32F0xx/Source/Templates/gcc_ride7/startup_stm32f0xx.s']
diff --git a/bsp/stm32f0x/SConstruct b/bsp/stm32f0x/SConstruct
index 6c1074486b..71bdaa81e6 100644
--- a/bsp/stm32f0x/SConstruct
+++ b/bsp/stm32f0x/SConstruct
@@ -10,7 +10,7 @@ else:
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
from building import *
-TARGET = 'rtthread-stm32f4xx.' + rtconfig.TARGET_EXT
+TARGET = 'rtthread-stm32f0xx.' + rtconfig.TARGET_EXT
env = Environment(tools = ['mingw'],
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
diff --git a/bsp/stm32f0x/rtconfig.py b/bsp/stm32f0x/rtconfig.py
index 1fd3d2dab3..2d25fb9392 100644
--- a/bsp/stm32f0x/rtconfig.py
+++ b/bsp/stm32f0x/rtconfig.py
@@ -12,10 +12,10 @@ if os.getenv('RTT_CC'):
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
if CROSS_TOOL == 'gcc':
PLATFORM = 'gcc'
- EXEC_PATH = 'E:/Program Files/CodeSourcery/Sourcery G++ Lite/bin'
+ EXEC_PATH = 'C:/Program Files/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin'
elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc'
- EXEC_PATH = 'E:/Keil'
+ EXEC_PATH = 'C:/Keil'
elif CROSS_TOOL == 'iar':
print '================ERROR============================'
print 'Not support iar yet!'
@@ -40,7 +40,7 @@ if PLATFORM == 'gcc':
OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy'
- DEVICE = ' -mcpu=cortex-m0 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections'
+ DEVICE = ' -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections'
CFLAGS = DEVICE
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-stm32.map,-cref,-u,Reset_Handler -T stm32_rom.ld'
@@ -103,7 +103,7 @@ elif PLATFORM == 'iar':
CFLAGS += ' --no_scheduling'
CFLAGS += ' --debug'
CFLAGS += ' --endian=little'
- CFLAGS += ' --cpu=Cortex-M4'
+ CFLAGS += ' --cpu=Cortex-M0'
CFLAGS += ' -e'
CFLAGS += ' --fpu=None'
CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
@@ -114,10 +114,10 @@ elif PLATFORM == 'iar':
AFLAGS += ' -s+'
AFLAGS += ' -w+'
AFLAGS += ' -r'
- AFLAGS += ' --cpu Cortex-M4'
+ AFLAGS += ' --cpu Cortex-M0'
AFLAGS += ' --fpu None'
- LFLAGS = ' --config stm32f10x_flash.icf'
+ LFLAGS = ' --config stm32f0xx_flash.icf'
LFLAGS += ' --redirect _Printf=_PrintfTiny'
LFLAGS += ' --redirect _Scanf=_ScanfSmall'
LFLAGS += ' --entry __iar_program_start'
diff --git a/bsp/stm32f0x/stm32_rom.ld b/bsp/stm32f0x/stm32_rom.ld
new file mode 100644
index 0000000000..b9ffaffcee
--- /dev/null
+++ b/bsp/stm32f0x/stm32_rom.ld
@@ -0,0 +1,134 @@
+/*
+ * linker script for STM32F0x with GNU ld
+ * bernard.xiong 2009-10-14
+ */
+
+/* Program Entry, set to mark it as "used" and avoid gc */
+MEMORY
+{
+ CODE (rx) : ORIGIN = 0x08000000, LENGTH = 64k /* 64KB flash */
+ DATA (rw) : ORIGIN = 0x20000000, LENGTH = 8k /* 8K sram */
+}
+ENTRY(Reset_Handler)
+_system_stack_size = 0x100;
+
+SECTIONS
+{
+ .text :
+ {
+ . = ALIGN(4);
+ 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);
+
+ . = 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 */
+ _sidata = .;
+ } > CODE
+ __exidx_end = .;
+
+ /* .data section which is used for initialized data */
+
+ .data : AT (_sidata)
+ {
+ . = 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) }
+}
diff --git a/bsp/stm32f0x/stm32_rom.sct b/bsp/stm32f0x/stm32_rom.sct
new file mode 100644
index 0000000000..ba1878dfbe
--- /dev/null
+++ b/bsp/stm32f0x/stm32_rom.sct
@@ -0,0 +1,15 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00010000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20000000 0x00002000 { ; RW data
+ .ANY (+RW +ZI)
+ }
+}
+
diff --git a/components/libc/minilibc/time.c b/components/libc/minilibc/time.c
index a8595c0fa8..d8093cf211 100644
--- a/components/libc/minilibc/time.c
+++ b/components/libc/minilibc/time.c
@@ -205,6 +205,7 @@ char *ctime(const time_t *timep)
return asctime(localtime(timep));
}
+#ifdef RT_USING_DEVICE
int gettimeofday(struct timeval *tp, void *ignore)
{
time_t time;
@@ -225,3 +226,4 @@ int gettimeofday(struct timeval *tp, void *ignore)
return 0;
}
+#endif
diff --git a/components/libc/newlib/syscalls.c b/components/libc/newlib/syscalls.c
index 7b918f2eb5..6f670c8ef2 100644
--- a/components/libc/newlib/syscalls.c
+++ b/components/libc/newlib/syscalls.c
@@ -193,6 +193,7 @@ _wait_r(struct _reent *ptr, int *status)
return -1;
}
+#ifdef RT_USING_DEVICE
_ssize_t
_write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)
{
@@ -214,6 +215,7 @@ _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)
return rc;
#endif
}
+#endif
#ifndef RT_USING_PTHREADS
@@ -235,26 +237,28 @@ _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)
struct timeval _timevalue = {0};
-static void libc_system_time_init()
+#ifdef RT_USING_DEVICE
+static void libc_system_time_init(void)
{
- time_t time;
- rt_tick_t tick;
- rt_device_t device;
+ time_t time;
+ rt_tick_t tick;
+ rt_device_t device;
- time = 0;
- device = rt_device_find("rtc");
- if (device != RT_NULL)
- {
+ time = 0;
+ device = rt_device_find("rtc");
+ if (device != RT_NULL)
+ {
/* get realtime seconds */
- rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time);
- }
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time);
+ }
/* get tick */
- tick = rt_tick_get();
+ tick = rt_tick_get();
- _timevalue.tv_usec = MICROSECOND_PER_SECOND - (tick%RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK;
- _timevalue.tv_sec = time - tick/RT_TICK_PER_SECOND - 1;
+ _timevalue.tv_usec = MICROSECOND_PER_SECOND - (tick%RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK;
+ _timevalue.tv_sec = time - tick/RT_TICK_PER_SECOND - 1;
}
+#endif
int libc_get_time(struct timespec *time)
{
@@ -376,7 +380,7 @@ void
_exit (int status)
{
rt_kprintf("thread:%s exit with %d\n", rt_thread_self()->name, status);
- RT_ASSERT(0);
+ RT_ASSERT(0);
- while (1);
+ while (1);
}