mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-16 21:33:33 +08:00
bl_update: build and include board bootloader if config available
This commit is contained in:
committed by
Lorenz Meier
parent
850821f47f
commit
a694f0bbdd
@@ -38,4 +38,43 @@ px4_add_module(
|
||||
-Wno-cast-align # TODO: fix and enable
|
||||
SRCS
|
||||
bl_update.c
|
||||
)
|
||||
|
||||
if(config_build_bootloader)
|
||||
# include the bootloader binary in ROMFS
|
||||
set(bootloader_config "${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_bootloader")
|
||||
|
||||
if(NOT EXISTS ${PX4_BOARD_DIR}/nuttx-config/bootloader)
|
||||
message(FATAL_ERROR "${bootloader_config} does not exist")
|
||||
endif()
|
||||
|
||||
message(STATUS "Building and including bootloader ${bootloader_config}")
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(bootloader_firmware
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}
|
||||
DOWNLOAD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
CMAKE_ARGS -DCONFIG=${bootloader_config}
|
||||
INSTALL_COMMAND ""
|
||||
USES_TERMINAL_BUILD true
|
||||
DEPENDS git_nuttx git_nuttx_apps
|
||||
BUILD_ALWAYS 1
|
||||
)
|
||||
|
||||
ExternalProject_Get_Property(bootloader_firmware BINARY_DIR)
|
||||
|
||||
set(bootloader_exe "${BINARY_DIR}/${bootloader_config}.elf")
|
||||
set(bootloader_bin "${PX4_BINARY_DIR}/romfs_extras/${bootloader_config}.bin" CACHE FILEPATH "bootloader binary path")
|
||||
|
||||
file(RELATIVE_PATH bootloader_exe_relative ${CMAKE_CURRENT_BINARY_DIR} ${bootloader_exe})
|
||||
file(RELATIVE_PATH bootloader_bin_relative ${CMAKE_CURRENT_BINARY_DIR} ${bootloader_bin})
|
||||
|
||||
add_custom_command(OUTPUT ${bootloader_bin}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PX4_BINARY_DIR}/romfs_extras
|
||||
COMMAND ${CMAKE_OBJCOPY} -O binary ${bootloader_exe_relative} ${bootloader_bin_relative}
|
||||
DEPENDS bootloader_firmware
|
||||
COMMENT "Copying ${bootloader_config} to ROMFS extras"
|
||||
)
|
||||
add_custom_target(copy_bootloader_bin DEPENDS ${bootloader_bin})
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user