bl_update: build and include board bootloader if config available

This commit is contained in:
Daniel Agar
2019-11-16 11:43:42 +01:00
committed by Lorenz Meier
parent 850821f47f
commit a694f0bbdd
5 changed files with 80 additions and 9 deletions
+39
View File
@@ -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()