@@ -57,6 +57,71 @@ CROSS_COMPILE = arm-none-eabi-
5757
5858HAL_DIR =hal/$(MCU_SERIES )
5959
60+ ifeq ($(CIRCUITPY_CYW43 ) ,1)
61+ INC_CYW43 := \
62+ -isystem sdk/src/rp2_common/pico_cyw43_arch/include/ \
63+ -isystem sdk/lib/cyw43-driver/src \
64+ -isystem sdk/lib/cyw43-driver/firmware \
65+
66+ CFLAGS_CYW43 := -DCYW43_LWIP=0 -DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DCYW43_USE_SPI -DIGNORE_GPIO25
67+ SRC_SDK_CYW43 := \
68+ lib/cyw43-driver/src/cyw43_ctrl.c \
69+ lib/cyw43-driver/src/cyw43_ll.c \
70+ lib/cyw43-driver/src/cyw43_lwip.c \
71+ lib/cyw43-driver/src/cyw43_stats.c \
72+ src/common/pico_sync/sem.c \
73+ src/rp2_common/pico_cyw43_arch/cyw43_arch.c \
74+ src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c \
75+ src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c \
76+
77+ SRC_CYW43 := $(wildcard bindings/cyw43/* .c)
78+
79+ PIOASM = $(BUILD ) /sdk/pioasm/pioasm
80+ .PHONY : PioasmBuild
81+ PioasmBuild : $(PIOASM )
82+ $(PIOASM ) :
83+ $(Q ) cmake -S sdk -B $(BUILD ) /sdk
84+ $(Q ) make -C $(BUILD ) /sdk PioasmBuild
85+
86+ $(BUILD ) /cyw43_bus_pio_spi.pio.h : sdk/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.pio $(PIOASM )
87+ $(Q )$(PIOASM ) -o c-sdk $< $@
88+ $(BUILD ) /sdk/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.o : $(BUILD ) /cyw43_bus_pio_spi.pio.h
89+
90+ CYW43_FIRMWARE_BIN = 43439A0-7.95.49.00.combined
91+
92+ $(BUILD ) /cyw43_resource.o : sdk/lib/cyw43-driver/firmware/$(CYW43_FIRMWARE_BIN )
93+ $(Q )$(OBJCOPY ) -I binary -O elf32-littlearm -B arm \
94+ --readonly-text \
95+ --rename-section .data=.big_const,contents,alloc,load,readonly,data \
96+ --redefine-sym _binary_sdk_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_start=fw_43439A0_7_95_49_00_start \
97+ --redefine-sym _binary_sdk_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_size=fw_43439A0_7_95_49_00_size \
98+ --redefine-sym _binary_sdk_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_end=fw_43439A0_7_95_49_00_end \
99+ $< $@
100+ OBJ_CYW43 := $(BUILD ) /cyw43_resource.o
101+ # need to do the equivalent of this in cmake
102+ # ## # cyw43_resource.o contains the WiFi and BT firmware as a binary blob
103+ # ## add_custom_command(
104+ # ## OUTPUT ${CYW43_FIRMWARE_OBJ}
105+ # ## DEPENDS ${PICO_CYW43_DRIVER_PATH}/firmware/${CYW43_FIRMWARE_BIN}
106+ # ## WORKING_DIRECTORY ${PICO_CYW43_DRIVER_PATH}/firmware
107+ # ## COMMAND ${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm
108+ # ## --readonly-text
109+ # ## --rename-section .data=${RESOURCE_SECNAME},${RESOURCE_SECFLAGS}
110+ # ## --redefine-sym _binary_${CYW43_FIRMWARE_BIN_}_start=${CYW43_FIRMWARE_PRETTY}_start
111+ # ## --redefine-sym _binary_${CYW43_FIRMWARE_BIN_}_end=${CYW43_FIRMWARE_PRETTY}_end
112+ # ## --redefine-sym _binary_${CYW43_FIRMWARE_BIN_}_size=${CYW43_FIRMWARE_PRETTY}_size
113+ # ## ${CYW43_FIRMWARE_BIN} ${CYW43_FIRMWARE_OBJ}
114+ # ## )
115+ # ##
116+ else
117+ $(error y u no y fi)
118+ INC_CYW43 :=
119+ CFLAGS_CYW43 :=
120+ SRC_SDK_CYW43 :=
121+ SRC_CYW43 :=
122+ OBJ_CYW43 :=
123+ endif
124+
60125INC += \
61126 -I. \
62127 -I../.. \
@@ -102,6 +167,7 @@ INC += \
102167 -isystem sdk/src/rp2_common/pico_runtime/printf/include/ \
103168 -isystem sdk/src/rp2_common/pico_bootrom/include/ \
104169 -isystem sdk/src/rp2_common/pico_unique_id/include/ \
170+ $(INC_CYW43 ) \
105171 -Isdk_config \
106172 -I../../lib/tinyusb/src \
107173 -I../../supervisor/shared/usb \
@@ -116,6 +182,9 @@ CFLAGS += -DTUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1 -DCFG_TUSB_MCU=OPT_MCU_R
116182# option to override default optimization level, set in boards/$(BOARD)/mpconfigboard.mk
117183CFLAGS += $(OPTIMIZATION_FLAGS )
118184
185+ # flags specific to wifi / cyw43
186+
187+ CFLAGS += $(CFLAGS_CYW43 )
119188# Debugging/Optimization
120189ifeq ($(DEBUG ) , 1)
121190 CFLAGS += -ggdb3 -O3
@@ -133,7 +202,7 @@ endif
133202# Remove -Wno-stringop-overflow after we can test with CI's GCC 10. Mac's looks weird.
134203DISABLE_WARNINGS = -Wno-stringop-overflow -Wno-unused-function -Wno-unused-variable -Wno-strict-overflow -Wno-cast-align -Wno-strict-prototypes -Wno-nested-externs -Wno-double-promotion -Wno-sign-compare
135204
136- CFLAGS += $(INC ) -Wall -Werror -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS ) $(CFLAGS_MOD ) $(COPT ) $(DISABLE_WARNINGS ) -Werror=missing-prototypes
205+ CFLAGS += $(INC ) -Wall -Werror -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS ) $(CFLAGS_MOD ) $(COPT ) $(DISABLE_WARNINGS ) -Werror=missing-prototypes -Wno-error=unused-result
137206
138207CFLAGS += \
139208 -march=armv6-m \
@@ -186,6 +255,7 @@ SRC_SDK := \
186255 src/rp2_common/pico_runtime/runtime.c \
187256 src/rp2_common/pico_stdio/stdio.c \
188257 src/rp2_common/pico_unique_id/unique_id.c \
258+ $(SRC_SDK_CYW43 ) \
189259
190260SRC_SDK := $(addprefix sdk/, $(SRC_SDK ) )
191261$(patsubst % .c,$(BUILD ) /% .o,$(SRC_SDK ) ) : CFLAGS += -Wno-missing-prototypes -Wno-undef
@@ -205,6 +275,7 @@ SRC_C += \
205275 lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c \
206276 lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c \
207277 mphalport.c \
278+ $(SRC_CYW43 ) \
208279
209280SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL ) ) \
210281 $(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS ) ) \
@@ -244,6 +315,7 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
244315OBJ += $(addprefix $(BUILD ) /, $(SRC_S_UPPER:.S=.o ) )
245316OBJ += $(addprefix $(BUILD ) /, $(SRC_MOD:.c=.o ) )
246317OBJ += $(BUILD ) /boot2_padded_checksummed.o
318+ OBJ += $(OBJ_CYW43 )
247319
248320$(BUILD ) /boot2_padded_checksummed.o : $(BUILD ) /boot2_padded_checksummed.S
249321 $(STEPECHO ) " CC $<"
0 commit comments