Skip to content

Commit 1e8324a

Browse files
committed
Use hard copies of the firmware for Risc-V builds
The Risc-V compiler doesn't link the firmware blobs as expected, so use Arm ELFs instead
1 parent f2511a9 commit 1e8324a

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/rp2_common/pico_cyw43_driver/CMakeLists.txt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,16 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
206206
target_link_libraries(${TARGET}_firmware boot_picobin_headers)
207207
target_link_libraries(${TARGET}_firmware_tbyb boot_picobin_headers)
208208

209+
if (PICO_RISCV)
210+
# Use pre-generated firmware elfs on Risc-V, as the compiler has issues with the assembly
211+
add_custom_command(TARGET ${TARGET}_firmware POST_BUILD
212+
COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH}/firmware.elf $<TARGET_FILE:${TARGET}_firmware>
213+
)
214+
add_custom_command(TARGET ${TARGET}_firmware_tbyb POST_BUILD
215+
COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH}/firmware_tbyb.elf $<TARGET_FILE:${TARGET}_firmware_tbyb>
216+
)
217+
endif()
218+
209219
get_target_property(hasSigfile ${TARGET} PICOTOOL_SIGFILE)
210220
if (hasSigfile)
211221
pico_sign_binary(${TARGET}_firmware ${sigfile})
@@ -221,8 +231,19 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
221231
pico_package_uf2_output(${TARGET}_firmware 0x10000000)
222232
pico_package_uf2_output(${TARGET}_firmware_tbyb 0x10000000)
223233

224-
pico_add_extra_outputs(${TARGET}_firmware)
225-
pico_add_extra_outputs(${TARGET}_firmware_tbyb)
234+
if (PICO_RISCV)
235+
# As Arm ELFs are being used for firmware, the bin & dis output generation will fail
236+
# with a Risc-V toolchain
237+
picotool_postprocess_binary(${TARGET}_firmware)
238+
picotool_postprocess_binary(${TARGET}_firmware_tbyb)
239+
if (NOT (PICO_NO_UF2 OR PICO_NO_PICOTOOL))
240+
pico_add_uf2_output(${TARGET}_firmware)
241+
pico_add_uf2_output(${TARGET}_firmware_tbyb)
242+
endif()
243+
else()
244+
pico_add_extra_outputs(${TARGET}_firmware)
245+
pico_add_extra_outputs(${TARGET}_firmware_tbyb)
246+
endif()
226247

227248
add_dependencies(${TARGET}
228249
${TARGET}_firmware ${TARGET}_firmware_tbyb)
232 KB
Binary file not shown.
232 KB
Binary file not shown.

0 commit comments

Comments
 (0)