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 11if CROSS_TOOL == 'gcc': 12 PLATFORM = 'gcc' 13 EXEC_PATH = r'C:\Program Files\GNU Tools ARM Embedded\4.8 2013q4\bin' 14elif CROSS_TOOL == 'keil': 15 PLATFORM = 'armcc' 16 EXEC_PATH = 'C:/Keil' 17elif CROSS_TOOL == 'iar': 18 print('================ERROR============================') 19 print('Not support iar yet!') 20 print('=================================================') 21 exit(0) 22 23if os.getenv('RTT_EXEC_PATH'): 24 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 25 26if os.getenv('RTT_ROOT'): 27 RTT_ROOT = os.getenv('RTT_ROOT') 28else: 29 RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') 30 31BUILD = 'debug' 32 33if PLATFORM == 'gcc': 34 # toolchains 35 PREFIX = 'arm-none-eabi-' 36 CC = PREFIX + 'gcc' 37 AS = PREFIX + 'gcc' 38 AR = PREFIX + 'ar' 39 LINK = PREFIX + 'gcc' 40 TARGET_EXT = 'elf' 41 SIZE = PREFIX + 'size' 42 OBJDUMP = PREFIX + 'objdump' 43 OBJCPY = PREFIX + 'objcopy' 44 45 DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections' 46 CFLAGS = DEVICE + ' -g -Wall ' 47 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' 48 LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T CME_M7.ld' 49 50 CPATH = '' 51 LPATH = '' 52 53 if BUILD == 'debug': 54 CFLAGS += ' -O0 -gdwarf-2' 55 AFLAGS += ' -gdwarf-2' 56 else: 57 CFLAGS += ' -O3' 58 59 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 60 61elif PLATFORM == 'armcc': 62 # toolchains 63 CC = 'armcc' 64 AS = 'armasm' 65 AR = 'armar' 66 LINK = 'armlink' 67 TARGET_EXT = 'axf' 68 69 DEVICE = ' --cpu Cortex-M3' 70 CFLAGS = DEVICE + ' --c99 --apcs=interwork' 71 AFLAGS = DEVICE 72 LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread.map --scatter CME_M7.sct' 73 74 LFLAGS += ' --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab)' 75 76 EXEC_PATH += '/ARM/ARMCC/bin' 77 78 if BUILD == 'debug': 79 CFLAGS += ' -g -O0' 80 AFLAGS += ' -g' 81 else: 82 CFLAGS += ' -O2' 83 84 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 85 86elif PLATFORM == 'iccarm': 87 # toolchains 88 CC = 'iccarm' 89 AS = 'iasmarm' 90 AR = 'iarchive' 91 LINK = 'ilinkarm' 92 TARGET_EXT = 'out' 93 94 DEVICE = ' -D USE_STDPERIPH_DRIVER' 95 96 CFLAGS = DEVICE 97 CFLAGS += ' --diag_suppress Pa050' 98 CFLAGS += ' --no_cse' 99 CFLAGS += ' --no_unroll' 100 CFLAGS += ' --no_inline' 101 CFLAGS += ' --no_code_motion' 102 CFLAGS += ' --no_tbaa' 103 CFLAGS += ' --no_clustering' 104 CFLAGS += ' --no_scheduling' 105 CFLAGS += ' --debug' 106 CFLAGS += ' --endian=little' 107 CFLAGS += ' --cpu=Cortex-M3' 108 CFLAGS += ' -e' 109 CFLAGS += ' --fpu=None' 110 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 111 CFLAGS += ' -Ol' 112 113 AFLAGS = '' 114 AFLAGS += ' -s+' 115 AFLAGS += ' -w+' 116 AFLAGS += ' -r' 117 AFLAGS += ' --cpu Cortex-M3' 118 AFLAGS += ' --fpu None' 119 120 LFLAGS = ' --config CME_M7.icf' 121 LFLAGS += ' --semihosting' 122 LFLAGS += ' --entry __iar_program_start' 123 124 EXEC_PATH = EXEC_PATH + '/arm/bin/' 125 POST_ACTION = '' 126