@@ -155,4 +155,104 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
155
155
endfunction ()
156
156
157
157
pico_promote_common_scope_vars()
158
+
159
+ # Set env var, so it can be accessed in the function
160
+ set (ENV{PICO_CYW43_DRIVER_CURRENT_PATH} ${CMAKE_CURRENT_LIST_DIR} )
161
+ function (pico_use_partition_firmware TARGET )
162
+ target_compile_definitions (${TARGET} PRIVATE CYW43_USE_PARTITION_FIRMWARE=1)
163
+ pico_embed_pt_in_binary(${TARGET} $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /wifi_pt.json)
164
+
165
+ find_package (Python3 REQUIRED COMPONENTS Interpreter)
166
+
167
+ # Wifi firmware blob
168
+ add_custom_target (${TARGET} _firmware_w_blob DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /firmware_w_blob.S)
169
+ add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /firmware_w_blob.S
170
+ COMMAND ${Python3_EXECUTABLE} $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /cyw43_firmware.py ${PICO_CYW43_DRIVER_PATH} /firmware/w43439A0_7_95_49_00_combined.h ${CMAKE_CURRENT_BINARY_DIR} /firmware_w_blob.S
171
+ )
172
+
173
+ # Wifi and bluetooth firmware blob
174
+ add_custom_target (${TARGET} _firmware_wb_blob DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /firmware_wb_blob.S)
175
+ add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /firmware_wb_blob.S
176
+ COMMAND ${Python3_EXECUTABLE} $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /cyw43_firmware.py ${PICO_CYW43_DRIVER_PATH} /firmware/wb43439A0_7_95_49_00_combined.h ${CMAKE_CURRENT_BINARY_DIR} /firmware_wb_blob.S
177
+ )
178
+
179
+ # Create UF2s for all the variants - Wifi vs Wifi+Bluetooth, and TBYB
180
+ add_executable (${TARGET} _firmware_w
181
+ $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /wifi_firmware.S)
182
+ add_executable (${TARGET} _firmware_w_tbyb
183
+ $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /wifi_firmware.S)
184
+ add_executable (${TARGET} _firmware_wb
185
+ $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /wifi_firmware.S)
186
+ add_executable (${TARGET} _firmware_wb_tbyb
187
+ $ENV{PICO_CYW43_DRIVER_CURRENT_PATH} /wifi_firmware.S)
188
+
189
+ add_dependencies (${TARGET} _firmware_w ${TARGET} _firmware_w_blob)
190
+ add_dependencies (${TARGET} _firmware_w_tbyb ${TARGET} _firmware_w_blob)
191
+ add_dependencies (${TARGET} _firmware_wb ${TARGET} _firmware_wb_blob)
192
+ add_dependencies (${TARGET} _firmware_wb_tbyb ${TARGET} _firmware_wb_blob)
193
+
194
+ target_include_directories (${TARGET} _firmware_w PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
195
+ target_include_directories (${TARGET} _firmware_w_tbyb PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
196
+ target_include_directories (${TARGET} _firmware_wb PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
197
+ target_include_directories (${TARGET} _firmware_wb_tbyb PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
198
+
199
+ target_compile_definitions (${TARGET} _firmware_w PRIVATE
200
+ NO_PICO_PLATFORM=1
201
+ )
202
+ target_compile_definitions (${TARGET} _firmware_w_tbyb PRIVATE
203
+ NO_PICO_PLATFORM=1
204
+ PICO_CRT0_IMAGE_TYPE_TBYB=1
205
+ )
206
+ target_compile_definitions (${TARGET} _firmware_wb PRIVATE
207
+ NO_PICO_PLATFORM=1
208
+ WB_FIRMWARE=1
209
+ )
210
+ target_compile_definitions (${TARGET} _firmware_wb_tbyb PRIVATE
211
+ NO_PICO_PLATFORM=1
212
+ PICO_CRT0_IMAGE_TYPE_TBYB=1
213
+ WB_FIRMWARE=1
214
+ )
215
+
216
+ target_link_options (${TARGET} _firmware_w PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
217
+ target_link_options (${TARGET} _firmware_w_tbyb PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
218
+ target_link_options (${TARGET} _firmware_wb PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
219
+ target_link_options (${TARGET} _firmware_wb_tbyb PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
220
+
221
+ target_link_libraries (${TARGET} _firmware_w boot_picobin_headers)
222
+ target_link_libraries (${TARGET} _firmware_w_tbyb boot_picobin_headers)
223
+ target_link_libraries (${TARGET} _firmware_wb boot_picobin_headers)
224
+ target_link_libraries (${TARGET} _firmware_wb_tbyb boot_picobin_headers)
225
+
226
+ get_target_property (hasSigfile ${TARGET} PICOTOOL_SIGFILE)
227
+ if (hasSigfile)
228
+ pico_sign_binary(${TARGET} _firmware_w ${sigfile} )
229
+ pico_sign_binary(${TARGET} _firmware_w_tbyb ${sigfile} )
230
+ pico_sign_binary(${TARGET} _firmware_wb ${sigfile} )
231
+ pico_sign_binary(${TARGET} _firmware_wb_tbyb ${sigfile} )
232
+ endif ()
233
+
234
+ pico_hash_binary(${TARGET} _firmware_w)
235
+ pico_hash_binary(${TARGET} _firmware_w_tbyb)
236
+ pico_hash_binary(${TARGET} _firmware_wb)
237
+ pico_hash_binary(${TARGET} _firmware_wb_tbyb)
238
+
239
+ pico_set_uf2_family(${TARGET} _firmware_w 0x12345678)
240
+ pico_set_uf2_family(${TARGET} _firmware_w_tbyb 0x12345678)
241
+ pico_set_uf2_family(${TARGET} _firmware_wb 0x12345678)
242
+ pico_set_uf2_family(${TARGET} _firmware_wb_tbyb 0x12345678)
243
+
244
+ pico_package_uf2_output(${TARGET} _firmware_w 0x10000000)
245
+ pico_package_uf2_output(${TARGET} _firmware_w_tbyb 0x10000000)
246
+ pico_package_uf2_output(${TARGET} _firmware_wb 0x10000000)
247
+ pico_package_uf2_output(${TARGET} _firmware_wb_tbyb 0x10000000)
248
+
249
+ pico_add_extra_outputs(${TARGET} _firmware_w)
250
+ pico_add_extra_outputs(${TARGET} _firmware_w_tbyb)
251
+ pico_add_extra_outputs(${TARGET} _firmware_wb)
252
+ pico_add_extra_outputs(${TARGET} _firmware_wb_tbyb)
253
+
254
+ add_dependencies (${TARGET}
255
+ ${TARGET} _firmware_w ${TARGET} _firmware_w_tbyb
256
+ ${TARGET} _firmware_wb ${TARGET} _firmware_wb_tbyb)
257
+ endfunction ()
158
258
endif ()
0 commit comments