Skip to content

Commit f20b302

Browse files
committed
Fix Risc-V firmware build
1 parent 37ee6fa commit f20b302

File tree

5 files changed

+19
-26
lines changed

5 files changed

+19
-26
lines changed

src/rp2_common/pico_cyw43_driver/CMakeLists.txt

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -210,22 +210,12 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
210210
WB_FIRMWARE=1
211211
)
212212

213-
target_link_options(${TARGET}_firmware PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
214-
target_link_options(${TARGET}_firmware_tbyb PRIVATE -nostartfiles -nodefaultlibs -Ttext=0x20000000)
213+
target_link_options(${TARGET}_firmware PRIVATE -nostartfiles -nodefaultlibs -N LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
214+
target_link_options(${TARGET}_firmware_tbyb PRIVATE -nostartfiles -nodefaultlibs -N LINKER:--script=${PICO_CYW43_DRIVER_CURRENT_PATH}/wifi_firmware.ld)
215215

216216
target_link_libraries(${TARGET}_firmware boot_picobin_headers)
217217
target_link_libraries(${TARGET}_firmware_tbyb boot_picobin_headers)
218218

219-
if (PICO_RISCV)
220-
# Use pre-generated firmware elfs on Risc-V, as the compiler has issues with the assembly
221-
add_custom_command(TARGET ${TARGET}_firmware POST_BUILD
222-
COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH}/firmware.elf $<TARGET_FILE:${TARGET}_firmware>
223-
)
224-
add_custom_command(TARGET ${TARGET}_firmware_tbyb POST_BUILD
225-
COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH}/firmware_tbyb.elf $<TARGET_FILE:${TARGET}_firmware_tbyb>
226-
)
227-
endif()
228-
229219
get_target_property(hasSigfile ${TARGET} PICOTOOL_SIGFILE)
230220
if (hasSigfile)
231221
pico_sign_binary(${TARGET}_firmware ${sigfile})
@@ -241,19 +231,8 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
241231
pico_package_uf2_output(${TARGET}_firmware 0x10000000)
242232
pico_package_uf2_output(${TARGET}_firmware_tbyb 0x10000000)
243233

244-
if (PICO_RISCV)
245-
# As Arm ELFs are being used for firmware, the bin & dis output generation will fail
246-
# with a Risc-V toolchain
247-
picotool_postprocess_binary(${TARGET}_firmware)
248-
picotool_postprocess_binary(${TARGET}_firmware_tbyb)
249-
if (NOT (PICO_NO_UF2 OR PICO_NO_PICOTOOL))
250-
pico_add_uf2_output(${TARGET}_firmware)
251-
pico_add_uf2_output(${TARGET}_firmware_tbyb)
252-
endif()
253-
else()
254-
pico_add_extra_outputs(${TARGET}_firmware)
255-
pico_add_extra_outputs(${TARGET}_firmware_tbyb)
256-
endif()
234+
pico_add_extra_outputs(${TARGET}_firmware)
235+
pico_add_extra_outputs(${TARGET}_firmware_tbyb)
257236

258237
add_dependencies(${TARGET}
259238
${TARGET}_firmware ${TARGET}_firmware_tbyb)
-232 KB
Binary file not shown.
-232 KB
Binary file not shown.

src/rp2_common/pico_cyw43_driver/wifi_firmware.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#define CRT0_TBYB_FLAG 0
1313
#endif
1414

15-
.section .text
15+
.section .wifi_fw, "a"
1616
.global _start
1717
_start:
1818
.word 0
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
MEMORY
2+
{
3+
RAM(rx) : ORIGIN = 0x20000000, LENGTH = 512k
4+
}
5+
6+
ENTRY(_start)
7+
8+
SECTIONS
9+
{
10+
.wifi_fw : {
11+
*(.wifi_fw*)
12+
. = ALIGN(4);
13+
} > RAM
14+
}

0 commit comments

Comments
 (0)