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