1import os 2 3# toolchains options 4ARCH='arm' 5CPU='i.mx6' 6CROSS_TOOL='gcc' 7 8if os.getenv('RTT_CC'): 9 CROSS_TOOL = os.getenv('RTT_CC') 10 11if CROSS_TOOL == 'gcc': 12 PLATFORM = 'gcc' 13 # EXEC_PATH = r'/opt/arm-2012.09/bin' 14 EXEC_PATH = r'/opt/gcc-arm-none-eabi-4_8-2014q1_gri/bin' 15elif CROSS_TOOL == 'keil': 16 PLATFORM = 'armcc' 17 EXEC_PATH = 'C:/Keil' 18 19if os.getenv('RTT_EXEC_PATH'): 20 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 21 22BUILD = 'debug' 23 24if PLATFORM == 'gcc': 25 # toolchains 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 = ' -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -ftree-vectorize -ffast-math -mfloat-abi=softfp' 38 CFLAGS = DEVICE + ' -Wall' 39 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__' 40 LINK_SCRIPT = 'imx6.lds' 41 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-imx6.map,-cref,-u,system_vectors'+\ 42 ' -T %s' % LINK_SCRIPT 43 44 CPATH = '' 45 LPATH = '' 46 47 # generate debug info in all cases 48 AFLAGS += ' -gdwarf-2' 49 CFLAGS += ' -g -gdwarf-2' 50 51 if BUILD == 'debug': 52 CFLAGS += ' -O0' 53 else: 54 CFLAGS += ' -O2' 55 56 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' +\ 57 SIZE + ' $TARGET \n' 58 59elif PLATFORM == 'armcc': 60 # toolchains 61 CC = 'armcc' 62 CXX = 'armcc' 63 AS = 'armasm' 64 AR = 'armar' 65 LINK = 'armlink' 66 TARGET_EXT = 'axf' 67 68 DEVICE = ' --device DARMP' 69 CFLAGS = DEVICE + ' --apcs=interwork' 70 AFLAGS = DEVICE 71 LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-imx6.map --scatter imx6.sct' 72 73 CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC' 74 LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB' 75 76 EXEC_PATH += '/arm/bin40/' 77 78 if BUILD == 'debug': 79 CFLAGS += ' -g -O0' 80 AFLAGS += ' -g' 81 else: 82 CFLAGS += ' -O2' 83 84 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' 85 86elif PLATFORM == 'iccarm': 87 # toolchains 88 CC = 'iccarm' 89 AS = 'iasmarm' 90 AR = 'iarchive' 91 LINK = 'ilinkarm' 92 TARGET_EXT = 'out' 93 94 DEVICE = ' --cpu DARMP' 95 96 CFLAGS = '' 97 AFLAGS = '' 98 LFLAGS = ' --config imx6.icf' 99 100 EXEC_PATH += '/arm/bin/' 101 RT_USING_MINILIBC = False 102 POST_ACTION = '' 103