1import os
2
3# toolchains options
4ARCH='arm'
5CPU='cortex-m0'
6CROSS_TOOL='keil'
7
8if os.getenv('RTT_CC'):
9	CROSS_TOOL = os.getenv('RTT_CC')
10
11#DEVICE_SERIES = 'SAMD20'
12DEVICE_SERIES = 'SAMD21'
13#DEVICE_TYPE = '__SAMD20G18A__'
14DEVICE_TYPE = '__SAMD21J18A__'
15
16# cross_tool provides the cross compiler
17# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
18if  CROSS_TOOL == 'gcc':
19	PLATFORM 	= 'gcc'
20	EXEC_PATH 	= 'C:/Program Files/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin'
21	print('================ERROR============================')
22	print('Not support gcc yet!')
23	print('=================================================')
24	exit(0)
25elif CROSS_TOOL == 'keil':
26	PLATFORM 	= 'armcc'
27	EXEC_PATH 	= 'C:/Keil'
28elif CROSS_TOOL == 'iar':
29    print('================ERROR============================')
30    print('Not support iar yet!')
31    print('=================================================')
32    exit(0)
33
34if os.getenv('RTT_EXEC_PATH'):
35	EXEC_PATH = os.getenv('RTT_EXEC_PATH')
36
37BUILD = 'debug'
38
39if PLATFORM == 'gcc':
40    # toolchains
41    PREFIX = 'arm-none-eabi-'
42    CC = PREFIX + 'gcc'
43    AS = PREFIX + 'gcc'
44    AR = PREFIX + 'ar'
45    LINK = PREFIX + 'gcc'
46    TARGET_EXT = 'elf'
47    SIZE = PREFIX + 'size'
48    OBJDUMP = PREFIX + 'objdump'
49    OBJCPY = PREFIX + 'objcopy'
50
51    DEVICE = ' -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections'
52    CFLAGS = DEVICE
53    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
54    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-MKL15Z128.map,-cref,-u,Reset_Handler -T MKL15Z128_FLASH.ld'
55
56    CPATH = ''
57    LPATH = ''
58
59    if BUILD == 'debug':
60        CFLAGS += ' -O0 -gdwarf-2'
61        AFLAGS += ' -gdwarf-2'
62    else:
63        CFLAGS += ' -O2'
64
65    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
66
67elif PLATFORM == 'armcc':
68    # toolchains
69    CC = 'armcc'
70    AS = 'armasm'
71    AR = 'armar'
72    LINK = 'armlink'
73    TARGET_EXT = 'axf'
74
75    DEVICE = ' --device DARMSTM'
76    CFLAGS = DEVICE + ' --apcs=interwork'
77    AFLAGS = DEVICE
78    LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-SAM_D2x.map --strict --scatter SAM_D2X_RTT.sct'
79
80    CFLAGS += ' --c99'
81    CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
82    LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'
83
84    EXEC_PATH += '/arm/bin40/'
85
86    if BUILD == 'debug':
87        CFLAGS += ' -g -O0'
88        AFLAGS += ' -g'
89    else:
90        CFLAGS += ' -O2'
91
92    POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
93