1
1
# Select the board to build for: if not given on the command line,
2
2
# then default to PYBV10.
3
- BOARD ?= arduino_zero
3
+ BOARD ?= metro_m0_express
4
4
ifeq ($(wildcard boards/$(BOARD ) /.) ,)
5
5
$(error Invalid BOARD specified)
6
6
endif
@@ -14,76 +14,44 @@ include ../py/mkenv.mk
14
14
include boards/$(BOARD ) /mpconfigboard.mk
15
15
16
16
# qstr definitions (must come before including py.mk)
17
- # TODO(tannewt): Support friendly pin names like the stmhal implementations do.
18
- # Add $(BUILD)/pins_qstr.h $(BUILD)/modstm_qstr.h
19
17
QSTR_DEFS = qstrdefsport.h
20
18
21
19
# include py core make definitions
22
20
include $(TOP ) /py/py.mk
23
21
22
+ include $(TOP ) /supervisor/supervisor.mk
23
+
24
24
CROSS_COMPILE = arm-none-eabi-
25
25
26
26
BOSSAC := tools/bossac_osx
27
27
28
28
HAL_DIR =hal/$(MCU_SERIES )
29
29
30
- INC += -I.
31
- INC += -I$(TOP )
32
- INC += -I$(TOP ) /lib/mp-readline
33
- INC += -I$(TOP ) /lib/timeutils
34
- INC += -Iasf_conf/
35
- INC += -Iasf/common/boards/
36
- INC += -Iasf/common/services/sleepmgr/
37
- INC += -Iasf/common/services/storage/ctrl_access/
38
- INC += -Iasf/common/services/usb/
39
- INC += -Iasf/common/services/usb/class/cdc/
40
- INC += -Iasf/common/services/usb/class/cdc/device/
41
- INC += -Iasf/common/services/usb/class/hid/
42
- INC += -Iasf/common/services/usb/class/hid/device/
43
- INC += -Iasf/common/services/usb/class/hid/device/kbd/
44
- INC += -Iasf/common/services/usb/class/hid/device/mouse/
45
- INC += -Iasf/common/services/usb/class/msc/
46
- INC += -Iasf/common/services/usb/class/msc/device/
47
- INC += -Iasf/common/services/usb/udc/
48
- INC += -Iasf/common/utils
49
- INC += -Iasf/common2/services/delay/
50
- INC += $(addprefix -Iasf/sam0/,\
51
- drivers/events \
52
- drivers/extint \
53
- drivers/port \
54
- drivers/system \
55
- drivers/adc/adc_sam_d_r \
56
- drivers/dac \
57
- drivers/dac/dac_sam_d_c \
58
- drivers/sercom \
59
- drivers/sercom/i2c \
60
- drivers/system/clock \
61
- drivers/system/clock/clock_samd21_r21_da \
62
- drivers/system/interrupt \
63
- drivers/system/interrupt/system_interrupt_samd21 \
64
- drivers/system/pinmux \
65
- drivers/system/power/power_sam_d_r \
66
- drivers/system/reset/reset_sam_d_r \
67
- drivers/tc \
68
- drivers/usb \
69
- utils \
70
- utils/cmsis/samd21/include \
71
- utils/cmsis/samd21/source \
72
- utils/header_files \
73
- utils/preprocessor \
74
- )
75
- INC += -Iasf/thirdparty/CMSIS/Include
76
- INC += -Iboards
77
- INC += -Iboards/$(BOARD ) /
78
- INC += -Ifreetouch/
79
- INC += -I$(BUILD )
80
-
81
- CFLAGS_CORTEX_M0 = \
82
- -mthumb \
83
- -mabi=aapcs-linux \
84
- -mcpu=cortex-m0plus \
85
- -msoft-float \
86
- -mfloat-abi=soft \
30
+ INC += -I. \
31
+ -I.. \
32
+ -I../lib/mp-readline \
33
+ -I../lib/timeutils \
34
+ -Iasf4/$(CHIP_FAMILY ) \
35
+ -Iasf4/$(CHIP_FAMILY ) /hal/include \
36
+ -Iasf4/$(CHIP_FAMILY ) /hal/utils/include \
37
+ -Iasf4/$(CHIP_FAMILY ) /hri \
38
+ -Iasf4/$(CHIP_FAMILY ) /hpl/core \
39
+ -Iasf4/$(CHIP_FAMILY ) /hpl/pm \
40
+ -Iasf4/$(CHIP_FAMILY ) /hpl/port \
41
+ -Iasf4/$(CHIP_FAMILY ) /hpl/tc \
42
+ -Iasf4/$(CHIP_FAMILY ) /include \
43
+ -Iasf4/$(CHIP_FAMILY ) /CMSIS/Include \
44
+ -Iasf4/$(CHIP_FAMILY ) /usb \
45
+ -Iasf4/$(CHIP_FAMILY ) /usb/class/cdc \
46
+ -Iasf4/$(CHIP_FAMILY ) /usb/class/hid \
47
+ -Iasf4/$(CHIP_FAMILY ) /usb/device \
48
+ -Iasf4_conf/$(CHIP_FAMILY ) \
49
+ -Iboards/$(BOARD ) \
50
+ -Iboards/ \
51
+ -Ifreetouch \
52
+ -I$(BUILD )
53
+
54
+ BASE_CFLAGS = \
87
55
-fsingle-precision-constant \
88
56
-fno-strict-aliasing \
89
57
-Wdouble-promotion \
@@ -102,42 +70,49 @@ CFLAGS_CORTEX_M0 = \
102
70
-Wnested-externs \
103
71
-Wunreachable-code \
104
72
-Wcast-align \
73
+ -Wno-error=lto-type-mismatch \
105
74
-D__$(CHIP_VARIANT ) __ \
106
- -DUSB_DEVICE_PRODUCT_ID=$(USB_PID ) \
107
- -DUSB_DEVICE_VENDOR_ID=$(USB_VID ) \
108
- -DBOARD=USER_BOARD \
75
+ -DCONF_USB_COMPOSITE_IDPRODUCT=$(USB_PID ) \
76
+ -DCONF_USB_COMPOSITE_IDVENDER=$(USB_VID ) \
109
77
-ffunction-sections \
110
78
-fdata-sections \
111
79
-fshort-enums \
112
- -D ARM_MATH_CM0PLUS=true \
113
- -DSYSTICK_MODE \
114
- -DEXTINT_CALLBACK_MODE=true \
115
- -DUDD_ENABLE \
116
- -DUSART_CALLBACK_MODE=false \
117
- -DSPI_CALLBACK_MODE=false \
118
- -DI2C_MASTER_CALLBACK_MODE=false \
119
- -DDAC_CALLBACK_MODE=false \
120
- -DTCC_ASYNC=false \
121
- -DADC_CALLBACK_MODE=false \
122
- -DEVENTS_INTERRUPT_HOOKS_MODE=false \
123
- -DI2S_CALLBACK_MODE=false \
124
- -DTC_ASYNC=true \
125
- -DUSB_DEVICE_LPM_SUPPORT \
126
- -DCIRCUITPY_CANARY_WORD=0xADAF00 \
127
- -DCIRCUITPY_SAFE_RESTART_WORD=0xDEADBEEF \
128
80
--param max-inline-insns-single=500
129
- CFLAGS = $(INC ) -Wall -Werror -std=gnu11 -nostdlib $(CFLAGS_CORTEX_M0 ) $(CFLAGS_MOD ) $(COPT )
130
81
131
82
# Debugging/Optimization
132
83
ifeq ($(DEBUG ) , 1)
133
84
# NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt.
134
85
# Turn on Python modules useful for debugging (e.g. uheap, ustack).
135
- # -DMICROPY_DEBUG_MODULES may also be added to an -flto build, if you wish.
136
- CFLAGS += -Os -ggdb -DNDEBUG -DENABLE_MICRO_TRACE_BUFFER -DMICROPY_DEBUG_MODULES
86
+ CFLAGS = -O1 -ggdb -DNDEBUG
87
+ ifeq ($(CHIP_FAMILY ) , samd21)
88
+ CFLAGS += -DENABLE_MICRO_TRACE_BUFFER
89
+ endif
137
90
else
138
91
# -finline-limit can shrink the image size. -finline-limit=80 or so is similar to not having it on.
139
92
# There is no simple default value, though.
140
- CFLAGS += -Os -DNDEBUG -flto -finline-limit=49
93
+ CFLAGS = -Os -DNDEBUG -flto -finline-limit=49
94
+ endif
95
+
96
+ CFLAGS += $(INC ) -Wall -Werror -std=gnu11 -nostdlib $(BASE_CFLAGS ) $(CFLAGS_MOD ) $(COPT )
97
+
98
+ ifeq ($(CHIP_FAMILY ) , samd21)
99
+ CFLAGS += \
100
+ -mthumb \
101
+ -mabi=aapcs-linux \
102
+ -mcpu=cortex-m0plus \
103
+ -msoft-float \
104
+ -mfloat-abi=soft \
105
+ -DSAMD21
106
+ endif
107
+ ifeq ($(CHIP_FAMILY ) , samd51)
108
+ CFLAGS += \
109
+ -mthumb \
110
+ -mabi=aapcs-linux \
111
+ -mlong-calls \
112
+ -mcpu=cortex-m4 \
113
+ -mfloat-abi=softfp \
114
+ -mfpu=fpv4-sp-d16 \
115
+ -DSAMD51
141
116
endif
142
117
143
118
ifneq ($(FROZEN_DIR ) ,)
@@ -158,69 +133,71 @@ CFLAGS += -Wno-error=lto-type-mismatch
158
133
endif
159
134
160
135
# LIBM_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-file-name=libm.a)
161
- LDFLAGS = $(CFLAGS ) -nostartfiles -fshort-enums -mthumb -mcpu=cortex-m0plus -Lasf/thirdparty/CMSIS/Lib/GCC/ -Wl,-nostdlib -Wl,-T,$(LD_FILE ) -Wl,-Map=$@ .map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
162
- LIBS = -larm_cortexM0l_math -lm -lgcc -lc
163
-
164
- SRC_ASF = $(addprefix asf/sam0/,\
165
- drivers/adc/adc_sam_d_r/adc.c \
166
- drivers/dac/dac_sam_d_c/dac.c \
167
- drivers/dma/dma.c \
168
- drivers/events/events_sam_d_r/events.c \
169
- drivers/extint/extint_callback.c \
170
- drivers/extint/extint_sam_d_r/extint.c \
171
- drivers/i2s/i2s.c \
172
- drivers/nvm/nvm.c \
173
- drivers/port/port.c \
174
- drivers/sercom/i2c/i2c_sam0/i2c_master.c \
175
- drivers/sercom/sercom.c \
176
- drivers/sercom/sercom_interrupt.c \
177
- drivers/sercom/spi/spi.c \
178
- drivers/sercom/usart/usart.c \
179
- drivers/system/clock/clock_samd21_r21_da/clock.c \
180
- drivers/system/clock/clock_samd21_r21_da/gclk.c \
181
- drivers/system/interrupt/system_interrupt.c \
182
- drivers/system/pinmux/pinmux.c \
183
- drivers/system/system.c \
184
- drivers/tc/tc_interrupt.c \
185
- drivers/tc/tc_sam_d_r/tc.c \
186
- drivers/tcc/tcc.c \
187
- drivers/usb/stack_interface/usb_device_udd.c \
188
- drivers/usb/stack_interface/usb_dual.c \
189
- drivers/usb/usb_sam_d_r/usb.c \
190
- )
136
+ LDFLAGS = $(CFLAGS ) -nostartfiles -fshort-enums -Wl,-nostdlib -Wl,-T,$(LD_FILE ) -Wl,-Map=$@ .map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
137
+ LIBS := -lgcc -lc
138
+
139
+
140
+ ifeq ($(CHIP_FAMILY ) , samd21)
141
+ LDFLAGS += -mthumb -mcpu=cortex-m0plus -Lasf/thirdparty/CMSIS/Lib/GCC/
142
+ LIBS := -lm $(LIBS ) # -larm_cortexM0l_math
143
+ else ifeq ($(CHIP_FAMILY ) , samd51)
144
+ LDFLAGS += -mthumb -mcpu=cortex-m4
145
+ LIBS := -lm $(LIBS )
146
+ endif
147
+
148
+ SRC_ASF := \
149
+ gcc/gcc/startup_$(CHIP_FAMILY ) .c \
150
+ gcc/system_$(CHIP_FAMILY ) .c \
151
+ hal/src/hal_atomic.c \
152
+ hal/src/hal_delay.c \
153
+ hal/src/hal_sleep.c \
154
+ hal/src/hal_timer.c \
155
+ hal/src/hal_usb_device.c \
156
+ hpl/core/hpl_init.c \
157
+ hpl/gclk/hpl_gclk.c \
158
+ hpl/pm/hpl_pm.c \
159
+ hpl/rtc/hpl_rtc.c \
160
+ hpl/systick/hpl_systick.c \
161
+ hpl/tc/hpl_tc.c \
162
+ hpl/usb/hpl_usb.c \
163
+ usb/class/cdc/device/cdcdf_acm.c \
164
+ usb/device/usbdc.c \
165
+ usb/usb_protocol.c \
166
+ hal/utils/src/utils_list.c \
167
+
168
+ ifeq ($(CHIP_FAMILY ) , samd21)
169
+ SRC_ASF += \
170
+ hpl/core/hpl_core_m0plus_base.c \
171
+ hpl/sysctrl/hpl_sysctrl.c \
172
+
173
+ else ifeq ($(CHIP_FAMILY), samd51)
174
+ SRC_ASF += \
175
+ hpl/core/hpl_core_m4.c \
176
+ hpl/mclk/hpl_mclk.c \
177
+ hpl/osc32kctrl/hpl_osc32kctrl.c \
178
+ hpl/oscctrl/hpl_oscctrl.c \
179
+
180
+ endif
181
+
182
+ SRC_ASF := $(addprefix asf4/$(CHIP_FAMILY ) /, $(SRC_ASF ) )
183
+
184
+ # Skip this source for now.
185
+ # access_vfs.c \
186
+ shared_dma.c \
187
+ $(FLASH_IMPL) \
191
188
192
189
SRC_C = \
193
- access_vfs.c \
194
- autoreload.c \
195
190
background.c \
196
191
fatfs_port.c \
197
192
flash_api.c \
198
- main.c \
199
193
mphalport.c \
200
194
reset.c \
201
- samd21_pins.c \
202
- shared_dma.c \
203
- rgb_led_status.c \
195
+ $(CHIP_FAMILY ) _pins.c \
204
196
tick.c \
205
- $( FLASH_IMPL ) \
197
+ usb.c \
206
198
bindings/samd/__init__.c \
207
- asf/common/services/sleepmgr/samd/sleepmgr.c \
208
- asf/common/services/storage/ctrl_access/ctrl_access.c \
209
- asf/common/services/usb/class/cdc/device/udi_cdc.c \
210
- asf/common/services/usb/class/composite/device/udi_composite_desc.c \
211
- asf/common/services/usb/class/hid/device/udi_hid.c \
212
- asf/common/services/usb/class/hid/device/mouse/udi_hid_mouse.c \
213
- asf/common/services/usb/class/hid/device/kbd/udi_hid_kbd.c \
214
- asf/common/services/usb/class/msc/device/udi_msc.c \
215
- asf/common/services/usb/udc/udc.c \
216
- asf/common/utils/interrupt/interrupt_sam_nvic.c \
217
- asf/common2/services/delay/sam0/systick_counter.c \
218
- asf/sam0/utils/cmsis/samd21/source/gcc/startup_samd21.c \
219
- asf/sam0/utils/cmsis/samd21/source/system_samd21.c \
220
- asf/sam0/utils/syscalls/gcc/syscalls.c \
221
199
boards/$(BOARD ) /board.c \
222
200
boards/$(BOARD ) /pins.c \
223
- freetouch/adafruit_ptc.c \
224
201
lib/oofatfs/ff.c \
225
202
lib/oofatfs/option/ccsbcs.c \
226
203
lib/timeutils/timeutils.c \
@@ -231,26 +208,27 @@ SRC_C = \
231
208
lib/utils/stdout_helpers.c \
232
209
lib/utils/sys_stdio_mphal.c \
233
210
lib/libc/string0.c \
234
- lib/mp-readline/readline.c
211
+ lib/mp-readline/readline.c \
212
+ # freetouch/adafruit_ptc.c \
235
213
236
214
SRC_COMMON_HAL = \
237
- analogio/__init__.c \
215
+ board/__init__.c \
216
+ microcontroller/__init__.c \
217
+ microcontroller/Pin.c \
218
+ microcontroller/Processor.c \
219
+ digitalio/__init__.c \
220
+ digitalio/DigitalInOut.c
221
+ # analogio/__init__.c \
238
222
analogio/AnalogIn.c \
239
223
analogio/AnalogOut.c \
240
224
audiobusio/__init__.c \
241
225
audiobusio/PDMIn.c \
242
226
audioio/__init__.c \
243
227
audioio/AudioOut.c \
244
- board/__init__.c \
245
228
busio/__init__.c \
246
229
busio/I2C.c \
247
230
busio/SPI.c \
248
231
busio/UART.c \
249
- digitalio/__init__.c \
250
- digitalio/DigitalInOut.c \
251
- microcontroller/__init__.c \
252
- microcontroller/Pin.c \
253
- microcontroller/Processor.c \
254
232
neopixel_write/__init__.c \
255
233
nvm/__init__.c \
256
234
nvm/ByteArray.c \
@@ -293,12 +271,12 @@ SRC_SHARED_MODULE = \
293
271
SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE ) ) \
294
272
$(addprefix shared-module/, $(SRC_SHARED_MODULE ) )
295
273
296
- OBJ = $(PY_O ) $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
274
+ OBJ = $(PY_O ) $(SUPERVISOR_O ) $( addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
297
275
OBJ += $(addprefix $(BUILD ) /, $(SRC_ASF:.c=.o ) )
298
276
OBJ += $(addprefix $(BUILD ) /, $(SRC_COMMON_HAL_EXPANDED:.c=.o ) )
299
277
OBJ += $(addprefix $(BUILD ) /, $(SRC_SHARED_MODULE_EXPANDED:.c=.o ) )
300
278
301
- SRC_QSTR += $(SRC_C ) $(SRC_COMMON_HAL_EXPANDED ) $(SRC_SHARED_MODULE_EXPANDED ) $(STM_SRC_C )
279
+ SRC_QSTR += $(SRC_C ) $(SRC_SUPERVISOR ) $( SRC_COMMON_HAL_EXPANDED ) $(SRC_SHARED_MODULE_EXPANDED ) $(STM_SRC_C )
302
280
303
281
all : $(BUILD ) /firmware.bin $(BUILD ) /firmware.uf2
304
282
0 commit comments