22
22
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
23
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
24
# THE SOFTWARE.
25
- # DEBUG = 1
26
25
27
26
# Select the board to build for.
28
27
ifeq ($(BOARD ) ,)
@@ -58,21 +57,23 @@ include $(TOP)/py/circuitpy_defns.mk
58
57
59
58
CROSS_COMPILE = arm-none-eabi-
60
59
61
- # ######################################
62
- # CFLAGS
63
- # ######################################
60
+ MCU_SERIES_LOWER = $(shell echo $(MCU_SERIES ) | tr '[:upper:]' '[:lower:]')
61
+ MCU_VARIANT_LOWER = $(shell echo $(MCU_VARIANT ) | tr '[:upper:]' '[:lower:]')
62
+
63
+ HAL_DIR =st_driver/STM32$(MCU_SERIES ) xx_HAL_Driver
64
64
65
65
INC += -I.
66
66
INC += -I../..
67
67
INC += -I$(BUILD )
68
68
INC += -I$(BUILD ) /genhdr
69
- INC += -I./st_driver/STM32F4xx_HAL_Driver /Inc
70
- INC += -I./st_driver/STM32F4xx_HAL_Driver /Inc/Legacy
71
- INC += -I./st_driver/CMSIS/Device/ST/STM32F4xx /Include
69
+ INC += -I./$( HAL_DIR ) /Inc
70
+ INC += -I./$( HAL_DIR ) /Inc/Legacy
71
+ INC += -I./st_driver/CMSIS/Device/ST/STM32 $( MCU_SERIES ) xx /Include
72
72
INC += -I./st_driver/CMSIS/Include
73
73
INC += -I./boards
74
74
INC += -I./boards/$(BOARD )
75
75
INC += -I./peripherals
76
+ INC += -I./packages
76
77
INC += -I../../lib/mp-readline
77
78
INC += -I../../lib/tinyusb/src
78
79
INC += -I../../supervisor/shared/usb
87
88
CFLAGS += -Os -DNDEBUG
88
89
CFLAGS += -ggdb
89
90
# TODO: Test with -flto
90
- # ## CFLAGS += -flto
91
+ # CFLAGS += -flto
91
92
endif
92
93
93
-
94
- C_DEFS = -DMCU_PACKAGE= $(MCU_PACKAGE ) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(CMSIS_MCU )
94
+ # MCU Series is defined by the HAL package and doesn't need to be specified here
95
+ C_DEFS = -D $(MCU_PACKAGE ) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(MCU_VARIANT )
95
96
96
97
CFLAGS += $(INC ) -Werror -Wall -std=gnu11 -nostdlib $(BASE_CFLAGS ) $(C_DEFS ) $(CFLAGS_MOD ) $(COPT )
97
98
@@ -102,17 +103,24 @@ CFLAGS += -Wno-undef
102
103
# STM32 might do casts that increase alignment requirements.
103
104
CFLAGS += -Wno-cast-align
104
105
105
- CFLAGS += \
106
- -mthumb \
107
- -mabi=aapcs-linux \
108
- -mfloat-abi=hard \
109
- -mcpu=cortex-m4 \
110
- -mfpu=fpv4-sp-d16
106
+ CFLAGS += -mthumb -mabi=aapcs-linux
111
107
112
- # TODO: check this
113
- CFLAGS += -D__START=main
108
+ # Arm core selection
109
+ MCU_FLAGS_F4 = -mtune=cortex-m4 -mcpu=cortex-m4
110
+ MCU_FLAGS_F7 = -mtune=cortex-m7 -mcpu=cortex-m7
111
+ MCU_FLAGS_H7 = -mtune=cortex-m7 -mcpu=cortex-m7
112
+ CFLAGS += $(MCU_FLAGS_$(MCU_SERIES ) )
114
113
115
- # need both command and valid file to use uf2 bootloader
114
+ CFLAGS += -DSTM32_HAL_H='<stm32$(MCU_SERIES_LOWER ) xx_hal.h>'
115
+
116
+ # Floating point settings
117
+ ifeq ($(MCU_VARIANT ) ,$(filter $(MCU_VARIANT ) ,STM32F765xx STM32F767xx STM32F769xx STM32H743xx) )
118
+ CFLAGS += -mfpu=fpv5-d16 -mfloat-abi=hard
119
+ else
120
+ CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
121
+ endif
122
+
123
+ # Need both command and valid file to use uf2 bootloader
116
124
ifndef LD_FILE
117
125
ifneq ($(and $(UF2_BOOTLOADER),$(LD_BOOT)),)
118
126
LD_FILE = $(LD_BOOT )
@@ -131,63 +139,60 @@ endif
131
139
LDFLAGS = $(CFLAGS ) -fshort-enums -Wl,-nostdlib -Wl,-T,$(LD_FILE ) -Wl,-Map=$@ .map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
132
140
LIBS := -lgcc -lc
133
141
134
- LDFLAGS += -mthumb -mcpu=cortex-m4
142
+ LDFLAGS += -mthumb $( MCU_FLAGS_ $( MCU_SERIES ) )
135
143
136
144
# Use toolchain libm if we're not using our own.
137
145
ifndef INTERNAL_LIBM
138
146
LIBS += -lm
139
147
endif
140
148
141
149
# TinyUSB defines
142
- CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_STM32F4 -DCFG_TUD_CDC_RX_BUFSIZE=1024 -DCFG_TUD_CDC_TX_BUFSIZE=1024 -DCFG_TUD_MSC_BUFSIZE=4096 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_MIDI_TX_BUFSIZE=128
143
-
144
-
145
- # #####################################
146
- # source
147
- # #####################################
148
-
149
- SRC_STM32 = \
150
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c \
151
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c \
152
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac.c \
153
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dac_ex.c \
154
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c \
155
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c \
156
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c \
157
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c \
158
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c \
159
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c \
160
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c \
161
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \
162
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \
163
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c \
164
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_usart.c \
165
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \
166
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \
167
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \
168
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \
169
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \
170
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \
171
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \
172
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \
173
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \
174
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \
175
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \
176
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \
177
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \
178
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c \
179
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c \
180
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c \
181
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c \
182
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_i2c.c \
183
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c \
184
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c \
185
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usart.c \
186
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rcc.c \
187
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c \
188
- st_driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c \
189
- system_stm32f4xx.c
190
-
150
+ CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_STM32$(MCU_SERIES ) -DCFG_TUD_CDC_RX_BUFSIZE=1024 -DCFG_TUD_CDC_TX_BUFSIZE=1024 -DCFG_TUD_MSC_BUFSIZE=4096 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_MIDI_TX_BUFSIZE=128
151
+
152
+ SRC_STM32 = $(addprefix $(HAL_DIR ) /Src/stm32$(MCU_SERIES_LOWER ) xx_,\
153
+ hal_adc.c \
154
+ hal_adc_ex.c \
155
+ hal_dac.c \
156
+ hal_dac_ex.c \
157
+ hal_i2c.c \
158
+ hal_i2c_ex.c \
159
+ hal_qspi.c \
160
+ hal_rng.c \
161
+ hal_rtc.c \
162
+ hal_rtc_ex.c \
163
+ hal_spi.c \
164
+ hal_tim.c \
165
+ hal_tim_ex.c \
166
+ hal_uart.c \
167
+ hal_usart.c \
168
+ hal_rcc.c \
169
+ hal_rcc_ex.c \
170
+ hal_flash.c \
171
+ hal_flash_ex.c \
172
+ hal_gpio.c \
173
+ hal_dma_ex.c \
174
+ hal_dma.c \
175
+ hal_pwr.c \
176
+ hal_pwr_ex.c \
177
+ hal_cortex.c \
178
+ hal.c \
179
+ hal_exti.c \
180
+ hal_sd.c \
181
+ ll_gpio.c \
182
+ ll_adc.c \
183
+ ll_i2c.c \
184
+ ll_dma.c \
185
+ ll_sdmmc.c \
186
+ ll_usart.c \
187
+ ll_rcc.c \
188
+ ll_utils.c \
189
+ ll_exti.c \
190
+ )
191
+ # removed:
192
+ # hal_flash_ramfunc.c \
193
+ # ll_fsmc.c \
194
+
195
+ SRC_STM32 += system_stm32$(MCU_SERIES_LOWER ) xx.c
191
196
192
197
SRC_C += \
193
198
background.c \
@@ -196,10 +201,11 @@ SRC_C += \
196
201
tick.c \
197
202
boards/$(BOARD ) /board.c \
198
203
boards/$(BOARD ) /pins.c \
199
- peripherals/stm32f4/$(MCU_SUB_VARIANT ) /pins.c \
200
- peripherals/stm32f4/$(MCU_SUB_VARIANT ) /clocks.c \
201
- peripherals/stm32f4/$(MCU_SUB_VARIANT ) /gpio.c \
202
- peripherals/stm32f4/$(MCU_SUB_VARIANT ) /periph.c \
204
+ peripherals/stm32$(MCU_SERIES_LOWER ) /$(MCU_VARIANT_LOWER ) /pins.c \
205
+ peripherals/stm32$(MCU_SERIES_LOWER ) /$(MCU_VARIANT_LOWER ) /clocks.c \
206
+ peripherals/stm32$(MCU_SERIES_LOWER ) /$(MCU_VARIANT_LOWER ) /gpio.c \
207
+ peripherals/stm32$(MCU_SERIES_LOWER ) /$(MCU_VARIANT_LOWER ) /periph.c \
208
+ packages/$(MCU_PACKAGE ) .c\
203
209
lib/libc/string0.c \
204
210
lib/mp-readline/readline.c \
205
211
lib/oofatfs/ff.c \
@@ -219,7 +225,7 @@ endif
219
225
220
226
SRC_S = \
221
227
supervisor/cpu.s \
222
- boards/startup_$(MCU_SUB_VARIANT ) .s
228
+ boards/startup_$(MCU_VARIANT_LOWER ) .s
223
229
224
230
SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL ) ) \
225
231
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS ) ) \
0 commit comments