1import os 2 3# toolchains options 4ARCH='arm' 5CPU='cortex-m3' 6CROSS_TOOL='keil' 7 8if os.getenv('RTT_CC'): 9 CROSS_TOOL = os.getenv('RTT_CC') 10 11#device options 12# FM3_TYPE = 13# 'MB9B610S','MB9B610T', 14FM3_TYPE = 'MB9B610S' 15 16# cross_tool provides the cross compiler 17# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 18 19if CROSS_TOOL == 'gcc': 20 PLATFORM = 'gcc' 21 EXEC_PATH = r'F:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI_2013.05.23\bin' 22elif CROSS_TOOL == 'keil': 23 PLATFORM = 'armcc' 24 EXEC_PATH = r'E:/Keil' 25elif CROSS_TOOL == 'iar': 26 PLATFORM = 'iccarm' 27 EXEC_PATH = r'C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation' 28 29if os.getenv('RTT_EXEC_PATH'): 30 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 31 32BUILD = 'debug' 33 34if PLATFORM == 'gcc': 35 # toolchains 36 PREFIX = 'arm-none-eabi-' 37 CC = PREFIX + 'gcc' 38 AS = PREFIX + 'gcc' 39 AR = PREFIX + 'ar' 40 LINK = PREFIX + 'gcc' 41 TARGET_EXT = 'elf' 42 SIZE = PREFIX + 'size' 43 OBJDUMP = PREFIX + 'objdump' 44 OBJCPY = PREFIX + 'objcopy' 45 46 DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections' 47 CFLAGS = DEVICE 48 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' 49 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-fm3.map,-cref,-u,Reset_Handler -T rtthread-fm3.ld' 50 51 CPATH = '' 52 LPATH = '' 53 54 if BUILD == 'debug': 55 CFLAGS += ' -O0 -gdwarf-2' 56 AFLAGS += ' -gdwarf-2' 57 else: 58 CFLAGS += ' -O2' 59 60 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 61elif PLATFORM == 'armcc': 62 # toolchains 63 CC = 'armcc' 64 AS = 'armasm' 65 AR = 'armar' 66 LINK = 'armlink' 67 TARGET_EXT = 'axf' 68 69 DEVICE = ' --device DARMSTM' 70 CFLAGS = DEVICE + ' --apcs=interwork' 71 AFLAGS = DEVICE 72 LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread.map --scatter rtthread-fm3.sct' 73 74 CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC' 75 LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB' 76 77 EXEC_PATH += '/arm/bin40/' 78 79 if BUILD == 'debug': 80 CFLAGS += ' -g -O0' 81 AFLAGS += ' -g' 82 else: 83 CFLAGS += ' -O2' 84 85 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 86 87elif PLATFORM == 'iccarm': 88 # toolchains 89 CC = 'iccarm' 90 AS = 'iasmarm' 91 AR = 'iarchive' 92 LINK = 'ilinkarm' 93 TARGET_EXT = 'out' 94 95 CFLAGS = '' 96 CFLAGS += ' --diag_suppress Pa050' 97 CFLAGS += ' --no_cse' 98 CFLAGS += ' --no_unroll' 99 CFLAGS += ' --no_inline' 100 CFLAGS += ' --no_code_motion' 101 CFLAGS += ' --no_tbaa' 102 CFLAGS += ' --no_clustering' 103 CFLAGS += ' --no_scheduling' 104 CFLAGS += ' --debug' 105 CFLAGS += ' --endian=little' 106 CFLAGS += ' --cpu=Cortex-M3' 107 CFLAGS += ' -e' 108 CFLAGS += ' --fpu=None' 109 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 110 CFLAGS += ' -Ol' 111 CFLAGS += ' --use_c++_inline' 112 113 AFLAGS = '' 114 AFLAGS += ' -s+' 115 AFLAGS += ' -w+' 116 AFLAGS += ' -r' 117 AFLAGS += ' --cpu Cortex-M3' 118 AFLAGS += ' --fpu None' 119 AFLAGS += ' -I"' + EXEC_PATH + '/arm/INC"' 120 121 LFLAGS = ' --config rtthread-fm3.icf' 122 LFLAGS += ' --semihosting' 123 LFLAGS += ' --entry __iar_program_start' 124 125 EXEC_PATH = EXEC_PATH + '/arm/bin/' 126 POST_ACTION = 'ielftool.exe --srec --verbose $TARGET rtthread.srec' 127