ソースを参照

fixed IAR compiling error

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2053 bbd45198-f89e-11dd-88c7-29a3b14d5316
dzzxzz@gmail.com 13 年 前
コミット
cfc501f919

+ 5 - 0
bsp/lpc176x/SConstruct

@@ -17,6 +17,11 @@ env = Environment(tools = ['mingw'],
 	AR = rtconfig.AR, ARFLAGS = '-rc',
 	LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
 
+if rtconfig.PLATFORM == 'iar':
+	env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
+	env.Replace(ARFLAGS = [''])
+	env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET --map project.map'])
+
 Export('RTT_ROOT')
 Export('rtconfig')
 

+ 32 - 0
bsp/lpc176x/lpc17xx_flash.icf

@@ -0,0 +1,32 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x00000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__   = 0x00000000;
+define symbol __ICFEDIT_region_ROM_end__     = 0x0007FFFF;
+define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
+define symbol __ICFEDIT_region_RAM_end__     = 0x2000FFFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__   = 0x400;
+define symbol __ICFEDIT_size_heap__     = 0x800;
+/**** End of ICF editor section. ###ICF###*/
+
+
+define memory mem with size = 4G;
+define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
+
+initialize by copy { readwrite };
+//initialize by copy with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite,
+                        block CSTACK, block HEAP };

ファイルの差分が大きいため隠しています
+ 326 - 177
bsp/lpc176x/project.ewp


+ 29 - 4
bsp/lpc176x/rtconfig.py

@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil':
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
 	PLATFORM 	= 'iar'
-	EXEC_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0/arm/bin'
+	IAR_PATH 	= 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation'
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')
@@ -85,12 +85,37 @@ elif PLATFORM == 'iar':
     LINK = 'ilinkarm'
     TARGET_EXT = 'out'
 
-    DEVICE = ' --cpu DARMP1 --thumb'
+    DEVICE = ' --thumb'
 
-    CFLAGS = ''
+    CFLAGS = DEVICE
+    CFLAGS += ' --diag_suppress Pa050'
+    CFLAGS += ' --no_cse' 
+    CFLAGS += ' --no_unroll' 
+    CFLAGS += ' --no_inline' 
+    CFLAGS += ' --no_code_motion' 
+    CFLAGS += ' --no_tbaa' 
+    CFLAGS += ' --no_clustering' 
+    CFLAGS += ' --no_scheduling' 
+    CFLAGS += ' --debug' 
+    CFLAGS += ' --endian=little' 
+    CFLAGS += ' --cpu=Cortex-M3' 
+    CFLAGS += ' -e' 
+    CFLAGS += ' --fpu=None'
+    CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'    
+    CFLAGS += ' -Ol'    
+    CFLAGS += ' --use_c++_inline'
+        
     AFLAGS = ''
+    AFLAGS += ' -s+' 
+    AFLAGS += ' -w+' 
+    AFLAGS += ' -r' 
+    AFLAGS += ' --cpu Cortex-M3' 
+    AFLAGS += ' --fpu None'
+
     LFLAGS = ' --config lpc17xx_flash.icf'
+    LFLAGS += ' --semihosting' 
+    LFLAGS += ' --entry __iar_program_start'    
 
-    EXEC_PATH += '/arm/bin/'
+    EXEC_PATH = IAR_PATH + '/arm/bin/'
     RT_USING_MINILIBC = False
     POST_ACTION = ''

+ 3 - 3
bsp/lpc178x/CMSIS/CM3/DeviceSupport/NXP/LPC177x_8x/startup/gcc/startup_LPC177x_8x.s

@@ -129,7 +129,7 @@ __cs3_interrupt_vector_cortex_m:
     .type   __cs3_reset_cortex_m, %function
 __cs3_reset_cortex_m:
     .fnstart
-.if (RAM_MODE)
+#if (RAM_MODE)
 /* Clear .bss section (Zero init) */
 	MOV     R0, #0
 	LDR     R1, =__bss_start__
@@ -147,12 +147,12 @@ BSSIsEmpty:
     BLX     R0
     LDR     R0,=main
     BX      R0
-.else
+#else
     LDR     R0, =SystemInit
     BLX     R0
 	LDR     R0,=_start
     BX      R0
-.endif
+#endif
     .pool
     .cantunwind
     .fnend

+ 4 - 20
bsp/lpc178x/rtconfig.py

@@ -15,8 +15,10 @@ elif CROSS_TOOL == 'keil':
 	PLATFORM 	= 'armcc'
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
-	PLATFORM 	= 'iar'
-	EXEC_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0/arm/bin'
+    print '================ERROR============================'
+    print 'Not support iar yet!'
+    print '================================================='
+    exit(0)
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')
@@ -76,21 +78,3 @@ elif PLATFORM == 'armcc':
         CFLAGS += ' -O2'
 
     POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
-
-elif PLATFORM == 'iar':
-    # toolchains
-    CC = 'iccarm'
-    AS = 'iasmarm'
-    AR = 'iarchive'
-    LINK = 'ilinkarm'
-    TARGET_EXT = 'out'
-
-    DEVICE = ' --cpu DARMP1 --thumb'
-
-    CFLAGS = ''
-    AFLAGS = ''
-    LFLAGS = ' --config lpc17xx_flash.icf'
-
-    EXEC_PATH += '/arm/bin/'
-    RT_USING_MINILIBC = False
-    POST_ACTION = ''

+ 0 - 3
bsp/lpc2478/rtconfig.py

@@ -14,9 +14,6 @@ if  CROSS_TOOL == 'gcc':
 elif CROSS_TOOL == 'keil':
 	PLATFORM 	= 'armcc'
 	EXEC_PATH 	= 'E:/Keil'
-elif CROSS_TOOL == 'iar':
-	PLATFORM 	= 'iar'
-	EXEC_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0/arm/bin'
 elif CROSS_TOOL == 'iar':
     print '================ERROR============================'
     print 'Not support iar yet!'

+ 7 - 7
bsp/m16c62p/rtconfig.py

@@ -11,7 +11,7 @@ if os.getenv('RTT_CC'):
 
 if  CROSS_TOOL == 'gcc':
 	PLATFORM 	= 'gcc'
-	EXEC_PATH 	= 'E:/Program Files/CodeSourcery/Sourcery G++ Lite/bin'
+	EXEC_PATH 	= 'C:/Program Files/Renesas/Hew/Tools/KPIT Cummins/GNUM16CM32C-ELF/v11.01/m32c-elf/bin'
 elif CROSS_TOOL == 'iar':
 	PLATFORM 	= 'iar'
 	IAR_PATH = 'C:/Program Files/IAR Systems/Embedded Workbench Evaluation 6.0'
@@ -29,20 +29,20 @@ BUILD = 'debug'
 
 if PLATFORM == 'gcc':
     # toolchains
-    PREFIX = 'arm-none-eabi-'
+    PREFIX = 'm32c-elf-'
     CC = PREFIX + 'gcc'
     AS = PREFIX + 'gcc'
     AR = PREFIX + 'ar'
     LINK = PREFIX + 'gcc'
-    TARGET_EXT = 'axf'
+    TARGET_EXT = 'out'
     SIZE = PREFIX + 'size'
     OBJDUMP = PREFIX + 'objdump'
     OBJCPY = PREFIX + 'objcopy'
 
-    DEVICE = ' -mcpu=arm920t'
+    DEVICE = ' -mcpu=m16c'
     CFLAGS = DEVICE
-    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + ' -DTEXT_BASE=' + TextBase
-    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread_mini2440.map,-cref,-u,_start -T mini2440_ram.ld' + ' -Ttext ' + TextBase
+    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
+    LFLAGS = DEVICE + ' -nostartfiles' + ' -Wl,--gc-sections,-Map=rtthread_m16c.map,-cref,-u,_start -T m16c62p.ld'
 
     CPATH = ''
     LPATH = ''
@@ -53,7 +53,7 @@ if PLATFORM == 'gcc':
     else:
         CFLAGS += ' -O2'
 
-    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
+    POST_ACTION = OBJCPY + ' -O srec $TARGET rtthread.mot\n' + SIZE + ' $TARGET \n'
 
 elif PLATFORM == 'iar':
     # toolchains

+ 1 - 1
bsp/m16c62p/startup.c

@@ -85,7 +85,7 @@ void rtthread_startup(void)
 
 	/* init timer thread */
 	rt_system_timer_thread_init();
-    
+
 	/* init idle thread */
 	rt_thread_idle_init();
     

+ 7 - 7
bsp/stm32f107/project.ewp

@@ -87,7 +87,7 @@
         </option>
         <option>
           <name>OGLastSavedByProductVersion</name>
-          <state>6.10.1.52170</state>
+          <state>6.10.3.52260</state>
         </option>
         <option>
           <name>GeneralEnableMisra</name>
@@ -1890,6 +1890,9 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\autoip.c</name>
     </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\def.c</name>
+    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name>
     </file>
@@ -1929,9 +1932,6 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\ip_frag.c</name>
     </file>
-    <file>
-      <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\loopif.c</name>
-    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\memp.c</name>
     </file>
@@ -1968,9 +1968,6 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name>
     </file>
-    <file>
-      <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch_init.c</name>
-    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name>
     </file>
@@ -1983,6 +1980,9 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name>
     </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\timers.c</name>
+    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name>
     </file>

+ 1 - 1
bsp/stm32f107/rtconfig.py

@@ -19,7 +19,7 @@ elif CROSS_TOOL == 'keil':
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
 	PLATFORM 	= 'iar'
-	IAR_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0'
+	IAR_PATH 	= 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation'
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')

+ 6 - 6
bsp/stm32f10x/project.ewp

@@ -1877,6 +1877,9 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\chpms.c</name>
     </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\def.c</name>
+    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name>
     </file>
@@ -1925,9 +1928,6 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\lcp.c</name>
     </file>
-    <file>
-      <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\loopif.c</name>
-    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\magic.c</name>
     </file>
@@ -1994,9 +1994,6 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name>
     </file>
-    <file>
-      <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch_init.c</name>
-    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name>
     </file>
@@ -2009,6 +2006,9 @@
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name>
     </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\timers.c</name>
+    </file>
     <file>
       <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name>
     </file>

+ 1 - 1
bsp/stm32f10x/rtconfig.py

@@ -31,7 +31,7 @@ elif CROSS_TOOL == 'keil':
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
 	PLATFORM 	= 'iar'
-	IAR_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0'
+	IAR_PATH 	= 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation'
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')

+ 1 - 1
bsp/stm32f20x/rtconfig.py

@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil':
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
 	PLATFORM 	= 'iar'
-	IAR_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 5.4 Evaluation_0'	
+	IAR_PATH 	= 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation'	
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')

+ 5 - 0
bsp/stm32f40x/SConstruct

@@ -19,6 +19,11 @@ env = Environment(tools = ['mingw'],
 	LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
 env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
 
+if rtconfig.PLATFORM == 'iar':
+	env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
+	env.Replace(ARFLAGS = [''])
+	env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET --map project.map'])
+
 Export('RTT_ROOT')
 Export('rtconfig')
 

+ 4 - 2
bsp/stm32f40x/rtconfig.py

@@ -17,8 +17,10 @@ elif CROSS_TOOL == 'keil':
 	PLATFORM 	= 'armcc'
 	EXEC_PATH 	= 'E:/Keil'
 elif CROSS_TOOL == 'iar':
-	PLATFORM 	= 'iar'
-	IAR_PATH 	= 'E:/Program Files/IAR Systems/Embedded Workbench 6.0'
+    print '================ERROR============================'
+    print 'Not support iar yet!'
+    print '================================================='
+    exit(0)
 
 if os.getenv('RTT_EXEC_PATH'):
 	EXEC_PATH = os.getenv('RTT_EXEC_PATH')

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません