1import os 2import sys 3 4CROSS_TOOL = 'gcc' 5 6if os.getenv('RTT_CC'): 7 CROSS_TOOL = os.getenv('RTT_CC') 8# device options 9ARCH = 'arm' 10CPU = 'cortex-m3' 11 12if CROSS_TOOL == 'gcc': 13 PLATFORM = 'gcc' 14 EXEC_PATH = 'D:/Program/env/tools/gnu_gcc/arm_gcc/mingw/bin' 15elif CROSS_TOOL == 'keil': 16 PLATFORM = 'armcc' 17 EXEC_PATH = 'D:/Program/Keil_v5' 18 19if os.getenv('RTT_EXEC_PATH'): 20 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 21 22# BUILD = 'debug' 23BUILD = 'release' 24 25if PLATFORM == 'gcc': 26 PREFIX = 'arm-none-eabi-' 27 CC = PREFIX + 'gcc' 28 CXX = PREFIX + 'g++' 29 AS = PREFIX + 'gcc' 30 AR = PREFIX + 'ar' 31 LINK = PREFIX + 'gcc' 32 TARGET_EXT = 'elf' 33 SIZE = PREFIX + 'size' 34 OBJDUMP = PREFIX + 'objdump' 35 OBJCPY = PREFIX + 'objcopy' 36 37 DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wall' 38 CFLAGS = DEVICE + ' -std=c99' 39 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' 40 # link script file path 41 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T CMSIS/startup_gcc/debug-in-microsemi-smartfusion2-envm.ld' 42 43 CPATH = '' 44 LPATH = '' 45 46 if BUILD == 'debug': 47 CFLAGS += ' -O0 -gdwarf-2 -g' 48 AFLAGS += ' -gdwarf-2' 49 else: 50 CFLAGS += ' -O2' 51 52 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + OBJCPY + ' -O ihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' 53 54elif PLATFORM == 'armcc': 55 # toolchains 56 CC = 'armcc' 57 AS = 'armasm' 58 AR = 'armar' 59 LINK = 'armlink' 60 TARGET_EXT = 'axf' 61 62 DEVICE = ' --cpu ' + CPU 63 CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' 64 AFLAGS = DEVICE + ' --apcs=interwork ' 65 # link scatter file path 66 LFLAGS = DEVICE + ' --scatter "applications/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' 67 68 CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/INC' 69 LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/ARMCC/LIB' 70 71 CFLAGS += ' -D__MICROLIB ' 72 AFLAGS += ' --pd "__MICROLIB SETA 1" ' 73 LFLAGS += ' --library_type=microlib ' 74 EXEC_PATH += '/arm/armcc/bin/' 75 76 if BUILD == 'debug': 77 CFLAGS += ' -g -O0' 78 AFLAGS += ' -g' 79 else: 80 CFLAGS += ' -O2' 81 82 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 83