Skip to content

Commit b51a993

Browse files
authored
Improve pico_use_wifi_firmware_partition docs (#2580)
* Improve pico_use_wifi_firmware_partition docs * Replace assert with hard_assert Fixes compilation warning about unused ret variable in release builds * firmware -> wifi_firmware * Maybe improve wording? * Clarify TBYB, and add `-ux` to firmware load
1 parent d011e8a commit b51a993

File tree

2 files changed

+37
-26
lines changed

2 files changed

+37
-26
lines changed

src/rp2_common/pico_cyw43_driver/CMakeLists.txt

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
179179
# NO_EMBEDDED_PT argument (for example, if you need to chain into the binary, it
180180
# can't contain a partition table).
181181
#
182+
# This will create additional UF2 files for the CYW43 firmware - both a regular version,
183+
# and a TBYB version to use if you're updating it using the TBYB feature (see section
184+
# 5.1.17 of the RP2350 datasheet). You will need to flash your chosen version to each
185+
# new device once, after loading the partition table. For example using picotool:
186+
#
187+
# `picotool load TARGET.uf2`;
188+
# `picotool reboot -u`;
189+
# `picotool load -ux TARGET_wifi_firmware.uf2`;
190+
#
191+
# Then on subsequent updates, you can just flash the TARGET.uf2 file to the device.
192+
#
182193
# \param\ NO_EMBEDDED_PT If set, will not embed a partition table in the binary
183194
function(pico_use_wifi_firmware_partition TARGET)
184195
set(options NO_EMBEDDED_PT)
@@ -204,50 +215,50 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
204215
)
205216

206217
# Create UF2s for regular and TBYB firmwares
207-
add_executable(${TARGET}_firmware
218+
add_executable(${TARGET}_wifi_firmware
208219
${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.S)
209-
add_executable(${TARGET}_firmware_tbyb
220+
add_executable(${TARGET}_wifi_firmware_tbyb
210221
${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.S)
211222

212-
add_dependencies(${TARGET}_firmware ${TARGET}_firmware_blob)
213-
add_dependencies(${TARGET}_firmware_tbyb ${TARGET}_firmware_blob)
223+
add_dependencies(${TARGET}_wifi_firmware ${TARGET}_firmware_blob)
224+
add_dependencies(${TARGET}_wifi_firmware_tbyb ${TARGET}_firmware_blob)
214225

215-
target_include_directories(${TARGET}_firmware PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
216-
target_include_directories(${TARGET}_firmware_tbyb PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
226+
target_include_directories(${TARGET}_wifi_firmware PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
227+
target_include_directories(${TARGET}_wifi_firmware_tbyb PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
217228

218-
target_compile_definitions(${TARGET}_firmware PRIVATE
229+
target_compile_definitions(${TARGET}_wifi_firmware PRIVATE
219230
NO_PICO_PLATFORM=1
220231
)
221-
target_compile_definitions(${TARGET}_firmware_tbyb PRIVATE
232+
target_compile_definitions(${TARGET}_wifi_firmware_tbyb PRIVATE
222233
NO_PICO_PLATFORM=1
223234
PICO_CRT0_IMAGE_TYPE_TBYB=1
224235
)
225236

226-
target_link_options(${TARGET}_firmware PRIVATE -nostartfiles -nodefaultlibs LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
227-
target_link_options(${TARGET}_firmware_tbyb PRIVATE -nostartfiles -nodefaultlibs LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
237+
target_link_options(${TARGET}_wifi_firmware PRIVATE -nostartfiles -nodefaultlibs LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
238+
target_link_options(${TARGET}_wifi_firmware_tbyb PRIVATE -nostartfiles -nodefaultlibs LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
228239

229-
target_link_libraries(${TARGET}_firmware boot_picobin_headers)
230-
target_link_libraries(${TARGET}_firmware_tbyb boot_picobin_headers)
240+
target_link_libraries(${TARGET}_wifi_firmware boot_picobin_headers)
241+
target_link_libraries(${TARGET}_wifi_firmware_tbyb boot_picobin_headers)
231242

232243
get_target_property(hasSigfile ${TARGET} PICOTOOL_SIGFILE)
233244
if (hasSigfile)
234-
pico_sign_binary(${TARGET}_firmware ${sigfile})
235-
pico_sign_binary(${TARGET}_firmware_tbyb ${sigfile})
245+
pico_sign_binary(${TARGET}_wifi_firmware ${sigfile})
246+
pico_sign_binary(${TARGET}_wifi_firmware_tbyb ${sigfile})
236247
endif()
237248

238-
pico_hash_binary(${TARGET}_firmware)
239-
pico_hash_binary(${TARGET}_firmware_tbyb)
249+
pico_hash_binary(${TARGET}_wifi_firmware)
250+
pico_hash_binary(${TARGET}_wifi_firmware_tbyb)
240251

241-
pico_set_uf2_family(${TARGET}_firmware cyw43-firmware)
242-
pico_set_uf2_family(${TARGET}_firmware_tbyb cyw43-firmware)
252+
pico_set_uf2_family(${TARGET}_wifi_firmware cyw43-firmware)
253+
pico_set_uf2_family(${TARGET}_wifi_firmware_tbyb cyw43-firmware)
243254

244-
pico_package_uf2_output(${TARGET}_firmware 0x10000000)
245-
pico_package_uf2_output(${TARGET}_firmware_tbyb 0x10000000)
255+
pico_package_uf2_output(${TARGET}_wifi_firmware 0x10000000)
256+
pico_package_uf2_output(${TARGET}_wifi_firmware_tbyb 0x10000000)
246257

247-
pico_add_extra_outputs(${TARGET}_firmware)
248-
pico_add_extra_outputs(${TARGET}_firmware_tbyb)
258+
pico_add_extra_outputs(${TARGET}_wifi_firmware)
259+
pico_add_extra_outputs(${TARGET}_wifi_firmware_tbyb)
249260

250261
add_dependencies(${TARGET}
251-
${TARGET}_firmware ${TARGET}_firmware_tbyb)
262+
${TARGET}_wifi_firmware ${TARGET}_wifi_firmware_tbyb)
252263
endfunction()
253264
endif()

src/rp2_common/pico_cyw43_driver/cyw43_driver.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ bool cyw43_driver_init(async_context_t *context) {
119119
uint32_t buffer[(16 * 4) + 1] = {}; // maximum of 16 partitions, each with maximum of 4 words returned, plus 1
120120
int ret = rom_get_partition_table_info(buffer, count_of(buffer), PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_PARTITION_ID);
121121

122-
assert(buffer[0] == (PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_PARTITION_ID));
122+
hard_assert(buffer[0] == (PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_PARTITION_ID));
123123

124124
if (ret > 0) {
125125
int i = 1;
@@ -171,8 +171,8 @@ bool cyw43_driver_init(async_context_t *context) {
171171

172172
CYW43_DEBUG("Chosen CYW43 firmware in partition %d\n", picked_p);
173173
int ret = rom_get_partition_table_info(buffer, count_of(buffer), PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_SINGLE_PARTITION | (picked_p << 24));
174-
assert(buffer[0] == (PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_SINGLE_PARTITION));
175-
assert(ret == 3);
174+
hard_assert(buffer[0] == (PT_INFO_PARTITION_LOCATION_AND_FLAGS | PT_INFO_SINGLE_PARTITION));
175+
hard_assert(ret == 3);
176176

177177
uint32_t location_and_permissions = buffer[1];
178178
uint32_t saddr = ((location_and_permissions >> PICOBIN_PARTITION_LOCATION_FIRST_SECTOR_LSB) & 0x1fffu) * FLASH_SECTOR_SIZE;

0 commit comments

Comments
 (0)