1import os 2 3# toolchains options 4ARCH='arm' 5CPU='cortex-m0' 6CROSS_TOOL='gcc' 7BOARD_NAME = 'lpc824' 8 9if os.getenv('RTT_CC'): 10 CROSS_TOOL = os.getenv('RTT_CC') 11 12# cross_tool provides the cross compiler 13# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 14if CROSS_TOOL == 'gcc': 15 PLATFORM = 'gcc' 16 EXEC_PATH = r'C:\Users\XXYYZZ' 17elif CROSS_TOOL == 'keil': 18 PLATFORM = 'armcc' 19 EXEC_PATH = 'C:/keil_v5' 20elif CROSS_TOOL == 'iar': 21 PLATFORM = 'iccarm' 22 EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' 23 24if os.getenv('RTT_EXEC_PATH'): 25 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 26 27BUILD = 'debug' 28# BUILD = 'release' 29 30if PLATFORM == 'gcc': 31 # toolchains 32 PREFIX = 'arm-none-eabi-' 33 CC = PREFIX + 'gcc' 34 AS = PREFIX + 'gcc' 35 AR = PREFIX + 'ar' 36 CXX = PREFIX + 'g++' 37 LINK = PREFIX + 'gcc' 38 TARGET_EXT = 'elf' 39 SIZE = PREFIX + 'size' 40 OBJDUMP = PREFIX + 'objdump' 41 OBJCPY = PREFIX + 'objcopy' 42 43 DEVICE = ' -mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections' 44 CFLAGS = DEVICE + ' -Dgcc' 45 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' 46 LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T scripts/lpc824_flash.ld -L scripts/' 47 48 CPATH = '' 49 LPATH = '' 50 51 if BUILD == 'debug': 52 CFLAGS += ' -O0 -gdwarf-2' 53 AFLAGS += ' -gdwarf-2' 54 else: 55 CFLAGS += ' -O2' 56 57 CXXFLAGS = CFLAGS 58 59 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 60 61elif PLATFORM == 'armcc': 62 # toolchains 63 CC = 'armcc' 64 CXX = 'armcc' 65 AS = 'armasm' 66 AR = 'armar' 67 LINK = 'armlink' 68 TARGET_EXT = 'axf' 69 70 DEVICE = ' --cpu Cortex-M0+' 71 CFLAGS = DEVICE + ' --apcs=interwork' 72 AFLAGS = DEVICE 73 LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread.map --scatter scripts/lpc824_rom.sct' 74 75 CFLAGS += ' -I./' 76 77 EXEC_PATH += '/ARM/ARMCC/bin/' 78 79 if BUILD == 'debug': 80 CFLAGS += ' -g -O0' 81 AFLAGS += ' -g' 82 else: 83 CFLAGS += ' -O2' 84 CFLAGS += ' --split_sections' 85 86 POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET \n' 87 88elif PLATFORM == 'iccarm': 89 # toolchains 90 CC = 'iccarm' 91 AS = 'iasmarm' 92 AR = 'iarchive' 93 LINK = 'ilinkarm' 94 TARGET_EXT = 'out' 95 96 DEVICE = ' -D USE_STDPERIPH_DRIVER' 97 98 CFLAGS = DEVICE 99 CFLAGS += ' --diag_suppress Pa050' 100 CFLAGS += ' --no_cse' 101 CFLAGS += ' --no_unroll' 102 CFLAGS += ' --no_inline' 103 CFLAGS += ' --no_code_motion' 104 CFLAGS += ' --no_tbaa' 105 CFLAGS += ' --no_clustering' 106 CFLAGS += ' --no_scheduling' 107 CFLAGS += ' --debug' 108 CFLAGS += ' --endian=little' 109 CFLAGS += ' --cpu=Cortex-M0' 110 CFLAGS += ' -e' 111 CFLAGS += ' --fpu=None' 112 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 113 CFLAGS += ' -Ol' 114 CFLAGS += ' --use_c++_inline' 115 116 AFLAGS = '' 117 AFLAGS += ' -s+' 118 AFLAGS += ' -w+' 119 AFLAGS += ' -r' 120 AFLAGS += ' --cpu Cortex-M0' 121 AFLAGS += ' --fpu None' 122 123 LFLAGS = ' --config scripts/lpc824_rom.icf' 124 LFLAGS += ' --redirect _Printf=_PrintfTiny' 125 LFLAGS += ' --redirect _Scanf=_ScanfSmall' 126 LFLAGS += ' --entry __iar_program_start' 127 128 EXEC_PATH = EXEC_PATH + '/arm/bin/' 129 POST_ACTION = '' 130