diff --git a/boards/px4/fmu-v6xrt/src/board_config.h b/boards/px4/fmu-v6xrt/src/board_config.h index 426f14c9a7..201f34f053 100644 --- a/boards/px4/fmu-v6xrt/src/board_config.h +++ b/boards/px4/fmu-v6xrt/src/board_config.h @@ -540,6 +540,8 @@ /* This board provides the board_on_reset interface */ +#define BOARD_HAS_ISP_BOOTLOADER 1 + #define BOARD_HAS_ON_RESET 1 #define PX4_GPIO_INIT_LIST { \ diff --git a/platforms/nuttx/src/px4/nxp/imxrt/board_reset/CMakeLists.txt b/platforms/nuttx/src/px4/nxp/imxrt/board_reset/CMakeLists.txt index 06ccd08203..cba22cb320 100644 --- a/platforms/nuttx/src/px4/nxp/imxrt/board_reset/CMakeLists.txt +++ b/platforms/nuttx/src/px4/nxp/imxrt/board_reset/CMakeLists.txt @@ -35,6 +35,8 @@ px4_add_library(arch_board_reset board_reset.cpp ) +target_link_libraries(arch_board_reset PRIVATE arch_board_romapi) + # up_systemreset if (NOT DEFINED CONFIG_BUILD_FLAT) target_link_libraries(arch_board_reset PRIVATE nuttx_karch) diff --git a/platforms/nuttx/src/px4/nxp/imxrt/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/nxp/imxrt/board_reset/board_reset.cpp index ce3e431e53..6f1e21700d 100644 --- a/platforms/nuttx/src/px4/nxp/imxrt/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/nxp/imxrt/board_reset/board_reset.cpp @@ -44,6 +44,10 @@ #include #include + +#include +#include + #define BOOT_RTC_SIGNATURE 0xb007b007 #define PX4_IMXRT_RTC_REBOOT_REG 3 #define PX4_IMXRT_RTC_REBOOT_REG_ADDRESS IMXRT_SNVS_LPGPR3 @@ -64,6 +68,11 @@ int board_reset(int status) { if (status == REBOOT_TO_BOOTLOADER) { board_reset_enter_bootloader(); + + } else if (status == REBOOT_TO_ISP) { + uint32_t arg = 0xeb100000; + ROM_API_Init(); + ROM_RunBootloader(&arg); } #if defined(BOARD_HAS_ON_RESET)