1import os 2 3# toolchains options 4ARCH='arm' 5CPU='am335x' 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'C:\Program Files (x86)\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin' 14elif CROSS_TOOL == 'iar': 15 PLATFORM = 'iccarm' 16 EXEC_PATH = r'C:\Program Files\IAR Systems\Embedded Workbench 9.1' 17 18if os.getenv('RTT_EXEC_PATH'): 19 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 20 21BUILD = 'debug' 22 23if PLATFORM == 'gcc': 24 # toolchains 25 PREFIX = 'arm-none-eabi-' 26 CC = PREFIX + 'gcc' 27 CXX = PREFIX + 'g++' 28 AS = PREFIX + 'gcc' 29 AR = PREFIX + 'ar' 30 LINK = PREFIX + 'gcc' 31 TARGET_EXT = 'elf' 32 SIZE = PREFIX + 'size' 33 OBJDUMP = PREFIX + 'objdump' 34 OBJCPY = PREFIX + 'objcopy' 35 36 DEVICE = ' -Wall -march=armv7-a -mtune=cortex-a8'+\ 37 ' -ftree-vectorize -ffast-math -mfpu=vfpv3-d16 -mfloat-abi=softfp' 38 #DEVICE = ' ' 39 CFLAGS = DEVICE 40 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__' 41 LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-beaglebone.map,-cref,-u,Reset_Handler -T beaglebone_ram.lds' 42 43 CPATH = '' 44 LPATH = '' 45 46 if BUILD == 'debug': 47 CFLAGS += ' -O0 -gdwarf-2 -Wall' 48 AFLAGS += ' -gdwarf-2' 49 else: 50 CFLAGS += ' -O2 -Wall' 51 52 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' +\ 53 SIZE + ' $TARGET \n' 54 55elif PLATFORM == 'iccarm': 56 # toolchains 57 CC = 'iccarm' 58 CXX = 'iccarm' 59 AS = 'iasmarm' 60 AR = 'iarchive' 61 LINK = 'ilinkarm' 62 TARGET_EXT = 'out' 63 64 DEVICE = '-Dewarm' 65 66 # ATTENTION from author vipox@qq.com: below *FLAGS are unverified and maybe wrong! 67 # I just copied it from STM32 and changed it according to my own understanding. 68 # However, even if it is wrong, it does not affect our generation of IAR project. 69 CFLAGS = DEVICE 70 CFLAGS += ' --diag_suppress Pa050' 71 CFLAGS += ' --no_cse' 72 CFLAGS += ' --no_unroll' 73 CFLAGS += ' --no_inline' 74 CFLAGS += ' --no_code_motion' 75 CFLAGS += ' --no_tbaa' 76 CFLAGS += ' --no_clustering' 77 CFLAGS += ' --no_scheduling' 78 CFLAGS += ' --endian=little' 79 CFLAGS += ' --cpu=Cortex-A8' 80 CFLAGS += ' -e' 81 CFLAGS += ' --fpu=VFPv3' 82 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 83 CFLAGS += ' --silent' 84 85 AFLAGS = DEVICE 86 AFLAGS += ' -s+' 87 AFLAGS += ' -w+' 88 AFLAGS += ' -r' 89 AFLAGS += ' --cpu Cortex-A8' 90 AFLAGS += ' --fpu VFPv3' 91 AFLAGS += ' -S' 92 93 if BUILD == 'debug': 94 CFLAGS += ' --debug' 95 CFLAGS += ' -On' 96 else: 97 CFLAGS += ' -Oh' 98 99 LFLAGS = ' --config "beaglebone_ram.icf"' 100 LFLAGS += ' --entry __iar_program_start' 101 102 CXXFLAGS = CFLAGS 103 104 EXEC_PATH = EXEC_PATH + '/arm/bin/' 105 POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' 106