1import os 2import sys 3# toolchains options 4CROSS_TOOL = 'gcc' 5 6if os.getenv('RTT_CC'): 7 CROSS_TOOL = os.getenv('RTT_CC') 8# device options 9ARCH = 'arm' 10CPU = 'cortex-m4' 11CROSS_TOOL = 'keil' 12 13# cross_tool provides the cross compiler 14# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 15if CROSS_TOOL == 'gcc': 16 PLATFORM = 'gcc' 17 EXEC_PATH = '/Users/zhangyihong/.env/gcc-arm-none-eabi-5_4-2016q3/bin' 18elif CROSS_TOOL == 'keil': 19 PLATFORM = 'armcc' 20 EXEC_PATH = r'D:/Keil/Keil_v5' 21elif CROSS_TOOL == 'iar': 22 PLATFORM = 'iccarm' 23 EXEC_PATH = 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.2' 24 25if os.getenv('RTT_EXEC_PATH'): 26 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 27 28BUILD = 'debug' 29#BUILD = 'release' 30 31if PLATFORM == 'gcc': 32 PREFIX = 'arm-none-eabi-' 33 CC = PREFIX + 'gcc' 34 CXX = PREFIX + 'g++' 35 AS = PREFIX + 'gcc' 36 AR = PREFIX + 'ar' 37 LINK = PREFIX + 'gcc' 38 TARGET_EXT = 'elf' 39 SIZE = PREFIX + 'size' 40 OBJDUMP = PREFIX + 'objdump' 41 OBJCPY = PREFIX + 'objcopy' 42 43 DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wall' 44 CFLAGS = DEVICE + ' -std=c99' 45 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' 46 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T drivers/linker_scripts/link.lds' 47 48 CPATH = '' 49 LPATH = '' 50 51 if BUILD == 'debug': 52 CFLAGS += ' -O0 -gdwarf-2 -g' 53 AFLAGS += ' -gdwarf-2' 54 else: 55 CFLAGS += ' -O2' 56 57 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 58elif PLATFORM == 'armcc': 59 # toolchains 60 # CC = 'armcc' 61 # CXX = 'armcc' 62 # AS = 'armasm' 63 # AR = 'armar' 64 # LINK = 'armlink' 65 # TARGET_EXT = 'axf' 66 67 # DEVICE = ' --cpu Cortex-M4.fp.sp' 68 # CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' 69 # AFLAGS = DEVICE + ' --apcs=interwork ' 70 # LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' 71 72 # CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' 73 # LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' 74 75 # CFLAGS += ' -D__MICROLIB ' 76 # AFLAGS += ' --pd "__MICROLIB SETA 1" ' 77 # LFLAGS += ' --library_type=microlib ' 78 # EXEC_PATH += '/ARM/ARMCC/bin/' 79 80 # if BUILD == 'debug': 81 # CFLAGS += ' -g -O0' 82 # AFLAGS += ' -g' 83 # else: 84 # CFLAGS += ' -O2' 85 86 # POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 87 88 CC = 'armcc' 89 CXX = 'armcc' 90 AS = 'armasm' 91 AR = 'armar' 92 LINK = 'armlink' 93 TARGET_EXT = 'axf' 94 95 DEVICE = ' --cpu Cortex-M4.fp.sp --li' 96 CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' 97 AFLAGS = DEVICE + ' --apcs=interwork ' 98 LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' 99 CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' 100 CFLAGS += ' -I' + EXEC_PATH + '../Arm/Packs/ARM/CMSIS/5.7.0/Device/ARM/ARMCM4/Include' 101 LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' 102 103 # CFLAGS += ' -D__MICROLIB ' 104 CFLAGS += ' -DARMCM4_FP ' 105 AFLAGS += ' --pd "__MICROLIB SETA 1" ' 106 # LFLAGS += ' --library_type=microlib ' 107 EXEC_PATH += '/ARM/ARMCC/bin/' 108 109 if BUILD == 'debug': 110 CFLAGS += ' -g -O0' 111 AFLAGS += ' -g' 112 else: 113 CFLAGS += ' -O2' 114 115 CXXFLAGS = CFLAGS 116 # CFLAGS += ' -std=c99' 117 118 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 119 120 121elif PLATFORM == 'iccarm': 122 # toolchains 123 CC = 'iccarm' 124 AS = 'iasmarm' 125 AR = 'iarchive' 126 LINK = 'ilinkarm' 127 TARGET_EXT = 'out' 128 129 DEVICE = '-Dewarm' # + ' -D' + PART_TYPE 130 131 CFLAGS = DEVICE 132 CFLAGS += ' --diag_suppress Pa050' 133 CFLAGS += ' --no_cse' 134 CFLAGS += ' --no_unroll' 135 CFLAGS += ' --no_inline' 136 CFLAGS += ' --no_code_motion' 137 CFLAGS += ' --no_tbaa' 138 CFLAGS += ' --no_clustering' 139 CFLAGS += ' --no_scheduling' 140 141 CFLAGS += ' --endian=little' 142 CFLAGS += ' --cpu=Cortex-M3' 143 CFLAGS += ' -e' 144 145 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 146 CFLAGS += ' --silent' 147 148 AFLAGS = DEVICE 149 AFLAGS += ' -s+' 150 AFLAGS += ' -w+' 151 AFLAGS += ' -r' 152 AFLAGS += ' --cpu ' + CPU 153 154 AFLAGS += ' -S' 155 156 if BUILD == 'debug': 157 CFLAGS += ' --debug' 158 CFLAGS += ' -On' 159 else: 160 CFLAGS += ' -Oh' 161 162 LFLAGS = ' --config "drivers/linker_scripts/link.icf"' 163 LFLAGS += ' --entry __iar_program_start' 164 #LFLAGS += ' --silent' 165 166 EXEC_PATH = EXEC_PATH + '/arm/bin/' 167 POST_ACTION = '' 168