1import os 2 3# toolchains options 4ARCH='arm' 5CPU='cortex-m4' 6CROSS_TOOL='gcc' 7 8if os.getenv('RTT_CC'): 9 CROSS_TOOL = os.getenv('RTT_CC') 10if os.getenv('RTT_ROOT'): 11 RTT_ROOT = os.getenv('RTT_ROOT') 12else: 13 RTT_ROOT = os.path.join(os.path.normpath(os.getcwd()), 'rt-thread') 14 15# cross_tool provides the cross compiler 16# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 17if CROSS_TOOL == 'gcc': 18 PLATFORM = 'gcc' 19 EXEC_PATH = 'C:/work/env/tools/gnu_gcc/arm_gcc/mingw/bin' 20elif CROSS_TOOL == 'iar': 21 PLATFORM = 'iccarm' 22 EXEC_PATH = 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.0' 23else: 24 print('Please make sure your toolchains is GNU GCC!') 25 exit(0) 26 27if os.getenv('RTT_EXEC_PATH'): 28 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 29 30BUILD = 'debug' 31 32if PLATFORM == 'gcc': 33 # toolchains 34 PREFIX = 'arm-none-eabi-' 35 CC = PREFIX + 'gcc' 36 AS = PREFIX + 'gcc' 37 AR = PREFIX + 'ar' 38 CXX = PREFIX + 'g++' 39 LINK = PREFIX + 'gcc' 40 TARGET_EXT = 'axf' 41 SIZE = PREFIX + 'size' 42 OBJDUMP = PREFIX + 'objdump' 43 OBJCPY = PREFIX + 'objcopy' 44 NM = PREFIX + 'nm' 45 46 DEVICE = ' -DM3 -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' 47 CFLAGS = DEVICE + ' -g2 -Wall -Wno-pointer-sign -fno-common -fmessage-length=0 -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-short-enums -DF_CPU=166000000L -std=gnu99 -fsigned-char' 48 AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' 49 LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -g --specs=nano.specs -nostartfiles -Wl,-Map=rtthread.map -Os -Wl,--gc-sections -Wl,--cref -Wl,--entry=Reset_Handler -Wl,--no-enum-size-warning -Wl,--no-wchar-size-warning -T./rlx8711B-symbol-v02-img2_xip1.ld' 50 LFLAGS += ' -Wl,-wrap,rtl_printf' 51 52 CPATH = '' 53 LPATH = '' 54 55 if BUILD == 'debug': 56 CFLAGS += ' -Os -gdwarf-2' 57 AFLAGS += ' -gdwarf-2' 58 else: 59 CFLAGS += ' -O2' 60 61 POST_ACTION = OBJCPY + ' -j .ram_image2.entry -j .ram_image2.data -j .ram_image2.bss -j .ram_image2.skb.bss -j .ram_heap.data -Obinary rtthread.axf ram_2.r.bin \n' \ 62 + OBJCPY + ' -j .xip_image2.text -Obinary rtthread.axf xip_image2.bin \n' \ 63 + OBJCPY + ' -j .ram_rdp.text -Obinary rtthread.axf rdp.bin \n' 64 65 POST_ACTION += 'python gen_bin.py' 66 67 M_CFLAGS = CFLAGS + ' -mlong-calls -Dsourcerygxx -O0 -fPIC ' 68 M_LFLAGS = DEVICE + ' -Wl,-z,max-page-size=0x4 -shared -fPIC -e main -nostdlib' 69 70elif PLATFORM == 'iccarm': 71 # toolchains 72 CC = 'iccarm' 73 AS = 'iasmarm' 74 AR = 'iarchive' 75 LINK = 'ilinkarm' 76 TARGET_EXT = 'out' 77 78 DEVICE = '-Dewarm' 79 80 CFLAGS = DEVICE 81 CFLAGS += ' --diag_suppress Pa050' 82 CFLAGS += ' --no_cse' 83 CFLAGS += ' --no_unroll' 84 CFLAGS += ' --no_inline' 85 CFLAGS += ' --no_code_motion' 86 CFLAGS += ' --no_tbaa' 87 CFLAGS += ' --no_clustering' 88 CFLAGS += ' --no_scheduling' 89 CFLAGS += ' --endian=little' 90 CFLAGS += ' --cpu=Cortex-M4' 91 CFLAGS += ' -e' 92 CFLAGS += ' --fpu=None' 93 CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' 94 CFLAGS += ' --silent' 95 96 AFLAGS = DEVICE 97 AFLAGS += ' -s+' 98 AFLAGS += ' -w+' 99 AFLAGS += ' -r' 100 AFLAGS += ' --cpu Cortex-M4' 101 AFLAGS += ' --fpu None' 102 AFLAGS += ' -S' 103 104 if BUILD == 'debug': 105 CFLAGS += ' --debug' 106 CFLAGS += ' -On' 107 else: 108 CFLAGS += ' -Oh' 109 110 LFLAGS = ' --config rom_symbol_v01_iar.icf' 111 LFLAGS += ' --redirect _Printf=_PrintfTiny' 112 LFLAGS += ' --redirect _Scanf=_ScanfSmall' 113 LFLAGS += ' --entry __iar_program_start' 114 115 EXEC_PATH = EXEC_PATH + '/arm/bin/' 116 POST_ACTION = 'ielftool --bin $TARGET rt-thread.bin' 117