提交 cfc501f9 编写于 作者: D dzzxzz@gmail.com

fixed IAR compiling error

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2053 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 a8f967f2
...@@ -17,6 +17,11 @@ env = Environment(tools = ['mingw'], ...@@ -17,6 +17,11 @@ env = Environment(tools = ['mingw'],
AR = rtconfig.AR, ARFLAGS = '-rc', AR = rtconfig.AR, ARFLAGS = '-rc',
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) 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('RTT_ROOT')
Export('rtconfig') Export('rtconfig')
......
/*###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 };
此差异已折叠。
...@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil': ...@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil':
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = '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'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
...@@ -85,12 +85,37 @@ elif PLATFORM == 'iar': ...@@ -85,12 +85,37 @@ elif PLATFORM == 'iar':
LINK = 'ilinkarm' LINK = 'ilinkarm'
TARGET_EXT = 'out' 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 = ''
AFLAGS += ' -s+'
AFLAGS += ' -w+'
AFLAGS += ' -r'
AFLAGS += ' --cpu Cortex-M3'
AFLAGS += ' --fpu None'
LFLAGS = ' --config lpc17xx_flash.icf' 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 RT_USING_MINILIBC = False
POST_ACTION = '' POST_ACTION = ''
...@@ -129,7 +129,7 @@ __cs3_interrupt_vector_cortex_m: ...@@ -129,7 +129,7 @@ __cs3_interrupt_vector_cortex_m:
.type __cs3_reset_cortex_m, %function .type __cs3_reset_cortex_m, %function
__cs3_reset_cortex_m: __cs3_reset_cortex_m:
.fnstart .fnstart
.if (RAM_MODE) #if (RAM_MODE)
/* Clear .bss section (Zero init) */ /* Clear .bss section (Zero init) */
MOV R0, #0 MOV R0, #0
LDR R1, =__bss_start__ LDR R1, =__bss_start__
...@@ -147,12 +147,12 @@ BSSIsEmpty: ...@@ -147,12 +147,12 @@ BSSIsEmpty:
BLX R0 BLX R0
LDR R0,=main LDR R0,=main
BX R0 BX R0
.else #else
LDR R0, =SystemInit LDR R0, =SystemInit
BLX R0 BLX R0
LDR R0,=_start LDR R0,=_start
BX R0 BX R0
.endif #endif
.pool .pool
.cantunwind .cantunwind
.fnend .fnend
......
...@@ -15,8 +15,10 @@ elif CROSS_TOOL == 'keil': ...@@ -15,8 +15,10 @@ elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc' PLATFORM = 'armcc'
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = 'iar' print '================ERROR============================'
EXEC_PATH = 'E:/Program Files/IAR Systems/Embedded Workbench 6.0/arm/bin' print 'Not support iar yet!'
print '================================================='
exit(0)
if os.getenv('RTT_EXEC_PATH'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
...@@ -76,21 +78,3 @@ elif PLATFORM == 'armcc': ...@@ -76,21 +78,3 @@ elif PLATFORM == 'armcc':
CFLAGS += ' -O2' CFLAGS += ' -O2'
POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 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 = ''
...@@ -14,9 +14,6 @@ if CROSS_TOOL == 'gcc': ...@@ -14,9 +14,6 @@ if CROSS_TOOL == 'gcc':
elif CROSS_TOOL == 'keil': elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc' PLATFORM = 'armcc'
EXEC_PATH = 'E:/Keil' 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': elif CROSS_TOOL == 'iar':
print '================ERROR============================' print '================ERROR============================'
print 'Not support iar yet!' print 'Not support iar yet!'
......
...@@ -11,7 +11,7 @@ if os.getenv('RTT_CC'): ...@@ -11,7 +11,7 @@ if os.getenv('RTT_CC'):
if CROSS_TOOL == 'gcc': if CROSS_TOOL == 'gcc':
PLATFORM = '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': elif CROSS_TOOL == 'iar':
PLATFORM = 'iar' PLATFORM = 'iar'
IAR_PATH = 'C:/Program Files/IAR Systems/Embedded Workbench Evaluation 6.0' IAR_PATH = 'C:/Program Files/IAR Systems/Embedded Workbench Evaluation 6.0'
...@@ -29,20 +29,20 @@ BUILD = 'debug' ...@@ -29,20 +29,20 @@ BUILD = 'debug'
if PLATFORM == 'gcc': if PLATFORM == 'gcc':
# toolchains # toolchains
PREFIX = 'arm-none-eabi-' PREFIX = 'm32c-elf-'
CC = PREFIX + 'gcc' CC = PREFIX + 'gcc'
AS = PREFIX + 'gcc' AS = PREFIX + 'gcc'
AR = PREFIX + 'ar' AR = PREFIX + 'ar'
LINK = PREFIX + 'gcc' LINK = PREFIX + 'gcc'
TARGET_EXT = 'axf' TARGET_EXT = 'out'
SIZE = PREFIX + 'size' SIZE = PREFIX + 'size'
OBJDUMP = PREFIX + 'objdump' OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy' OBJCPY = PREFIX + 'objcopy'
DEVICE = ' -mcpu=arm920t' DEVICE = ' -mcpu=m16c'
CFLAGS = DEVICE CFLAGS = DEVICE
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + ' -DTEXT_BASE=' + TextBase AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread_mini2440.map,-cref,-u,_start -T mini2440_ram.ld' + ' -Ttext ' + TextBase LFLAGS = DEVICE + ' -nostartfiles' + ' -Wl,--gc-sections,-Map=rtthread_m16c.map,-cref,-u,_start -T m16c62p.ld'
CPATH = '' CPATH = ''
LPATH = '' LPATH = ''
...@@ -53,7 +53,7 @@ if PLATFORM == 'gcc': ...@@ -53,7 +53,7 @@ if PLATFORM == 'gcc':
else: else:
CFLAGS += ' -O2' 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': elif PLATFORM == 'iar':
# toolchains # toolchains
......
...@@ -85,7 +85,7 @@ void rtthread_startup(void) ...@@ -85,7 +85,7 @@ void rtthread_startup(void)
/* init timer thread */ /* init timer thread */
rt_system_timer_thread_init(); rt_system_timer_thread_init();
/* init idle thread */ /* init idle thread */
rt_thread_idle_init(); rt_thread_idle_init();
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
</option> </option>
<option> <option>
<name>OGLastSavedByProductVersion</name> <name>OGLastSavedByProductVersion</name>
<state>6.10.1.52170</state> <state>6.10.3.52260</state>
</option> </option>
<option> <option>
<name>GeneralEnableMisra</name> <name>GeneralEnableMisra</name>
...@@ -1890,6 +1890,9 @@ ...@@ -1890,6 +1890,9 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\autoip.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\autoip.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\def.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name>
</file> </file>
...@@ -1929,9 +1932,6 @@ ...@@ -1929,9 +1932,6 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\ip_frag.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\ipv4\ip_frag.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\loopif.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\memp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\memp.c</name>
</file> </file>
...@@ -1968,9 +1968,6 @@ ...@@ -1968,9 +1968,6 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch_init.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name>
</file> </file>
...@@ -1983,6 +1980,9 @@ ...@@ -1983,6 +1980,9 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\timers.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name>
</file> </file>
......
...@@ -19,7 +19,7 @@ elif CROSS_TOOL == 'keil': ...@@ -19,7 +19,7 @@ elif CROSS_TOOL == 'keil':
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = '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'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
......
...@@ -1877,6 +1877,9 @@ ...@@ -1877,6 +1877,9 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\chpms.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\chpms.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\def.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\dhcp.c</name>
</file> </file>
...@@ -1925,9 +1928,6 @@ ...@@ -1925,9 +1928,6 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\lcp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\lcp.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\loopif.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\magic.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\netif\ppp\magic.c</name>
</file> </file>
...@@ -1994,9 +1994,6 @@ ...@@ -1994,9 +1994,6 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\arch\sys_arch_init.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\tcp.c</name>
</file> </file>
...@@ -2009,6 +2006,9 @@ ...@@ -2009,6 +2006,9 @@
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\api\tcpip.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\timers.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name> <name>$PROJ_DIR$\..\..\components\net\lwip\src\core\udp.c</name>
</file> </file>
......
...@@ -31,7 +31,7 @@ elif CROSS_TOOL == 'keil': ...@@ -31,7 +31,7 @@ elif CROSS_TOOL == 'keil':
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = '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'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
......
...@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil': ...@@ -16,7 +16,7 @@ elif CROSS_TOOL == 'keil':
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = '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'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
......
...@@ -19,6 +19,11 @@ env = Environment(tools = ['mingw'], ...@@ -19,6 +19,11 @@ env = Environment(tools = ['mingw'],
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
env.PrependENVPath('PATH', rtconfig.EXEC_PATH) 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('RTT_ROOT')
Export('rtconfig') Export('rtconfig')
......
...@@ -17,8 +17,10 @@ elif CROSS_TOOL == 'keil': ...@@ -17,8 +17,10 @@ elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc' PLATFORM = 'armcc'
EXEC_PATH = 'E:/Keil' EXEC_PATH = 'E:/Keil'
elif CROSS_TOOL == 'iar': elif CROSS_TOOL == 'iar':
PLATFORM = 'iar' print '================ERROR============================'
IAR_PATH = 'E:/Program Files/IAR Systems/Embedded Workbench 6.0' print 'Not support iar yet!'
print '================================================='
exit(0)
if os.getenv('RTT_EXEC_PATH'): if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') EXEC_PATH = os.getenv('RTT_EXEC_PATH')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册