1*150812a8SEvalZeroimport os 2*150812a8SEvalZero 3*150812a8SEvalZero# toolchains options 4*150812a8SEvalZeroARCH='arm' 5*150812a8SEvalZeroCPU='cortex-m4' 6*150812a8SEvalZeroCROSS_TOOL='keil' 7*150812a8SEvalZero 8*150812a8SEvalZeroif os.getenv('RTT_CC'): 9*150812a8SEvalZero CROSS_TOOL = os.getenv('RTT_CC') 10*150812a8SEvalZero 11*150812a8SEvalZero# cross_tool provides the cross compiler 12*150812a8SEvalZero# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 13*150812a8SEvalZero 14*150812a8SEvalZeroif CROSS_TOOL == 'gcc': 15*150812a8SEvalZero PLATFORM = 'gcc' 16*150812a8SEvalZero EXEC_PATH = 'D:/SourceryGCC/bin' 17*150812a8SEvalZeroelif CROSS_TOOL == 'keil': 18*150812a8SEvalZero PLATFORM = 'armcc' 19*150812a8SEvalZero EXEC_PATH = 'C:/Developer/Software/Keil_v5' 20*150812a8SEvalZeroelif CROSS_TOOL == 'iar': 21*150812a8SEvalZero print('================ERROR============================') 22*150812a8SEvalZero print('Not support iar yet!') 23*150812a8SEvalZero print('=================================================') 24*150812a8SEvalZero exit(0) 25*150812a8SEvalZero 26*150812a8SEvalZero 27*150812a8SEvalZeroBUILD = 'debug' 28*150812a8SEvalZero 29*150812a8SEvalZeroif PLATFORM == 'gcc': 30*150812a8SEvalZero # toolchains 31*150812a8SEvalZero PREFIX = 'arm-none-eabi-' 32*150812a8SEvalZero CC = PREFIX + 'gcc' 33*150812a8SEvalZero AS = PREFIX + 'gcc' 34*150812a8SEvalZero AR = PREFIX + 'ar' 35*150812a8SEvalZero LINK = PREFIX + 'gcc' 36*150812a8SEvalZero TARGET_EXT = 'elf' 37*150812a8SEvalZero SIZE = PREFIX + 'size' 38*150812a8SEvalZero OBJDUMP = PREFIX + 'objdump' 39*150812a8SEvalZero OBJCPY = PREFIX + 'objcopy' 40*150812a8SEvalZero 41*150812a8SEvalZero DEVICE = ' -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections' 42*150812a8SEvalZero CFLAGS = DEVICE 43*150812a8SEvalZero AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' 44*150812a8SEvalZero LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-nrf52832.map,-cref,-u,Reset_Handler -T nrf52_xxaa.ld' 45*150812a8SEvalZero 46*150812a8SEvalZero CPATH = '' 47*150812a8SEvalZero LPATH = '' 48*150812a8SEvalZero 49*150812a8SEvalZero if BUILD == 'debug': 50*150812a8SEvalZero CFLAGS += ' -O0 -gdwarf-2' 51*150812a8SEvalZero AFLAGS += ' -gdwarf-2' 52*150812a8SEvalZero else: 53*150812a8SEvalZero CFLAGS += ' -O2' 54*150812a8SEvalZero 55*150812a8SEvalZero POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 56*150812a8SEvalZero 57*150812a8SEvalZeroelif PLATFORM == 'armcc': 58*150812a8SEvalZero # toolchains 59*150812a8SEvalZero CC = 'armcc' 60*150812a8SEvalZero AS = 'armasm' 61*150812a8SEvalZero AR = 'armar' 62*150812a8SEvalZero LINK = 'armlink' 63*150812a8SEvalZero TARGET_EXT = 'axf' 64*150812a8SEvalZero 65*150812a8SEvalZero DEVICE = ' --cpu=cortex-m4.fp' 66*150812a8SEvalZero CFLAGS = DEVICE + ' --apcs=interwork' 67*150812a8SEvalZero AFLAGS = DEVICE 68*150812a8SEvalZero LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-nrf52832.map --scatter rtthread-nrf52832.sct' 69*150812a8SEvalZero 70*150812a8SEvalZero CFLAGS += ' --c99 --gnu' 71*150812a8SEvalZero CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC' 72*150812a8SEvalZero LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB' 73*150812a8SEvalZero 74*150812a8SEvalZero EXEC_PATH += '/arm/bin40/' 75*150812a8SEvalZero 76*150812a8SEvalZero if BUILD == 'debug': 77*150812a8SEvalZero CFLAGS += ' -g -O0' 78*150812a8SEvalZero AFLAGS += ' -g' 79*150812a8SEvalZero else: 80*150812a8SEvalZero CFLAGS += ' -O2' 81*150812a8SEvalZero 82*150812a8SEvalZero POST_ACTION = 'fromelf --i32combined $TARGET --output rtthread.hex \n' 83*150812a8SEvalZero POST_ACTION += 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 84