1import os 2 3# toolchains options 4ARCH='arm' 5CPU='cortex-m0' 6CROSS_TOOL='keil' 7 8if os.getenv('RTT_CC'): 9 CROSS_TOOL = os.getenv('RTT_CC') 10 11#DEVICE_SERIES = 'SAMD20' 12DEVICE_SERIES = 'SAMD21' 13#DEVICE_TYPE = '__SAMD20G18A__' 14DEVICE_TYPE = '__SAMD21J18A__' 15 16# cross_tool provides the cross compiler 17# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 18if CROSS_TOOL == 'gcc': 19 PLATFORM = 'gcc' 20 EXEC_PATH = 'C:/Program Files/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin' 21 print('================ERROR============================') 22 print('Not support gcc yet!') 23 print('=================================================') 24 exit(0) 25elif CROSS_TOOL == 'keil': 26 PLATFORM = 'armcc' 27 EXEC_PATH = 'C:/Keil' 28elif CROSS_TOOL == 'iar': 29 print('================ERROR============================') 30 print('Not support iar yet!') 31 print('=================================================') 32 exit(0) 33 34if os.getenv('RTT_EXEC_PATH'): 35 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 36 37BUILD = 'debug' 38 39if PLATFORM == 'gcc': 40 # toolchains 41 PREFIX = 'arm-none-eabi-' 42 CC = PREFIX + 'gcc' 43 AS = PREFIX + 'gcc' 44 AR = PREFIX + 'ar' 45 LINK = PREFIX + 'gcc' 46 TARGET_EXT = 'elf' 47 SIZE = PREFIX + 'size' 48 OBJDUMP = PREFIX + 'objdump' 49 OBJCPY = PREFIX + 'objcopy' 50 51 DEVICE = ' -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections' 52 CFLAGS = DEVICE 53 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' 54 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-MKL15Z128.map,-cref,-u,Reset_Handler -T MKL15Z128_FLASH.ld' 55 56 CPATH = '' 57 LPATH = '' 58 59 if BUILD == 'debug': 60 CFLAGS += ' -O0 -gdwarf-2' 61 AFLAGS += ' -gdwarf-2' 62 else: 63 CFLAGS += ' -O2' 64 65 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 66 67elif PLATFORM == 'armcc': 68 # toolchains 69 CC = 'armcc' 70 AS = 'armasm' 71 AR = 'armar' 72 LINK = 'armlink' 73 TARGET_EXT = 'axf' 74 75 DEVICE = ' --device DARMSTM' 76 CFLAGS = DEVICE + ' --apcs=interwork' 77 AFLAGS = DEVICE 78 LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-SAM_D2x.map --strict --scatter SAM_D2X_RTT.sct' 79 80 CFLAGS += ' --c99' 81 CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC' 82 LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB' 83 84 EXEC_PATH += '/arm/bin40/' 85 86 if BUILD == 'debug': 87 CFLAGS += ' -g -O0' 88 AFLAGS += ' -g' 89 else: 90 CFLAGS += ' -O2' 91 92 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 93