From f8eaa6e46b96ecad0987dd6e38eeff7b58842989 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 10 Mar 2021 09:40:49 -0500 Subject: [PATCH] ROMFS handle bl_update generically - include all available legacy bootloaders --- .ci/Jenkinsfile-hardware | 9 ++++++ ROMFS/CMakeLists.txt | 28 ++++++++++++++---- ROMFS/px4fmu_common/extras/README.txt | 5 ---- ROMFS/px4fmu_common/init.d/rcS | 16 ++++++++++ .../airmind_mindpx-v2_bootloader.bin | Bin 0 -> 10580 bytes .../av/x-v1/bootloader/av_x-v1_bootloader.bin | Bin 0 -> 4972 bytes .../bitcraze_crazyflie_bootloader.bin | Bin 0 -> 9744 bytes boards/bitcraze/crazyflie/default.cmake | 4 +-- .../bitcraze_crazyflie21_bootloader.bin | Bin 0 -> 9744 bytes boards/bitcraze/crazyflie21/default.cmake | 11 +++---- boards/bitcraze/crazyflie21/src/spi.cpp | 3 +- boards/cuav/nora/init/rc.board_defaults | 19 ------------ boards/cuav/x7pro/init/rc.board_defaults | 19 ------------ .../cubeorange/init/rc.board_defaults | 18 ----------- .../bootloader/cubepilot_io-v2_bootloader.bin | Bin 0 -> 4096 bytes .../durandal-v1/init/rc.board_defaults | 20 ------------- .../holybro_kakutef7_bootloader.bin | Bin 0 -> 9940 bytes .../bootloader/holybro_pix32v5_bootloader.bin | Bin 0 -> 10452 bytes .../bootloader/modalai_fc-v1_bootloader.bin | Bin 0 -> 10456 bytes .../ctrl-zero-h7-oem/init/rc.board_defaults | 19 ------------ .../mro/ctrl-zero-h7/init/rc.board_defaults | 19 ------------ boards/mro/pixracerpro/init/rc.board_defaults | 19 ------------ .../mro/x21/bootloader/mro_x21_bootloader.bin | Bin 0 -> 10572 bytes .../bootloader/nxp_fmuk66-e_bootloader.bin | Bin 0 -> 18672 bytes boards/nxp/fmuk66-e/default.cmake | 2 +- .../bootloader/nxp_fmuk66-v3_bootloader.bin | Bin 0 -> 18672 bytes boards/nxp/fmuk66-v3/default.cmake | 2 +- .../bootloader/omnibus_f4sd_bootloader.bin | Bin 0 -> 9740 bytes .../bootloader/px4_fmu-v2_bootloader.bin | Bin 0 -> 10640 bytes boards/px4/fmu-v2/default.cmake | 1 - boards/px4/fmu-v2/init/rc.board_defaults | 23 -------------- .../bootloader/px4_fmu-v3_bootloader.bin | Bin 0 -> 10640 bytes boards/px4/fmu-v3/init/rc.board_defaults | 23 -------------- .../bootloader/px4_fmu-v4_bootloader.bin | Bin 10448 -> 10704 bytes .../bootloader/px4_fmu-v4pro_bootloader.bin | Bin 0 -> 10580 bytes .../bootloader/px4_fmu-v5_bootloader.bin | Bin 0 -> 10456 bytes .../bootloader/px4_fmu-v5x_bootloader.bin | Bin 0 -> 10520 bytes boards/px4/fmu-v5x/default.cmake | 4 +-- .../io-v2/bootloader/px4_io-v2_bootloader.bin | Bin 0 -> 4096 bytes .../core/bootloader/uvify_core_bootloader.bin | Bin 0 -> 10700 bytes cmake/px4_add_board.cmake | 6 ---- src/systemcmds/bl_update/CMakeLists.txt | 27 +++++++++++++++-- 42 files changed, 84 insertions(+), 213 deletions(-) delete mode 100644 ROMFS/px4fmu_common/extras/README.txt create mode 100644 boards/airmind/mindpx-v2/bootloader/airmind_mindpx-v2_bootloader.bin create mode 100644 boards/av/x-v1/bootloader/av_x-v1_bootloader.bin create mode 100644 boards/bitcraze/crazyflie/bootloader/bitcraze_crazyflie_bootloader.bin create mode 100644 boards/bitcraze/crazyflie21/bootloader/bitcraze_crazyflie21_bootloader.bin create mode 100644 boards/cubepilot/io-v2/bootloader/cubepilot_io-v2_bootloader.bin create mode 100644 boards/holybro/kakutef7/bootloader/holybro_kakutef7_bootloader.bin create mode 100644 boards/holybro/pix32v5/bootloader/holybro_pix32v5_bootloader.bin create mode 100644 boards/modalai/fc-v1/bootloader/modalai_fc-v1_bootloader.bin create mode 100644 boards/mro/x21/bootloader/mro_x21_bootloader.bin create mode 100644 boards/nxp/fmuk66-e/bootloader/nxp_fmuk66-e_bootloader.bin create mode 100644 boards/nxp/fmuk66-v3/bootloader/nxp_fmuk66-v3_bootloader.bin create mode 100644 boards/omnibus/f4sd/bootloader/omnibus_f4sd_bootloader.bin create mode 100644 boards/px4/fmu-v2/bootloader/px4_fmu-v2_bootloader.bin delete mode 100644 boards/px4/fmu-v2/init/rc.board_defaults create mode 100644 boards/px4/fmu-v3/bootloader/px4_fmu-v3_bootloader.bin delete mode 100644 boards/px4/fmu-v3/init/rc.board_defaults rename ROMFS/px4fmu_common/extras/px4fmuv3_bl.bin => boards/px4/fmu-v4/bootloader/px4_fmu-v4_bootloader.bin (55%) mode change 100755 => 100644 create mode 100644 boards/px4/fmu-v4pro/bootloader/px4_fmu-v4pro_bootloader.bin create mode 100644 boards/px4/fmu-v5/bootloader/px4_fmu-v5_bootloader.bin create mode 100644 boards/px4/fmu-v5x/bootloader/px4_fmu-v5x_bootloader.bin create mode 100644 boards/px4/io-v2/bootloader/px4_io-v2_bootloader.bin create mode 100644 boards/uvify/core/bootloader/uvify_core_bootloader.bin diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index 509b3a01ab..520857465f 100644 --- a/.ci/Jenkinsfile-hardware +++ b/.ci/Jenkinsfile-hardware @@ -258,6 +258,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 13000"' // generic vtol standard + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "px4io forceupdate 14662 /etc/extras/px4_io-v2_default.bin" || true' // force px4io update sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply @@ -333,6 +334,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic multicopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply } @@ -407,6 +409,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 13000"' // generic vtol standard + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "px4io forceupdate 14662 /etc/extras/px4_io-v2_default.bin" || true' // force px4io update sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply @@ -482,6 +485,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic quadcopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "px4io forceupdate 14662 /etc/extras/px4_io-v2_default.bin" || true' // force px4io update sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply @@ -560,6 +564,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set IMU_GYRO_RATEMAX 250"' // limit cpu usage sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic multicopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "px4io forceupdate 14662 /etc/extras/px4_io-v2_default.bin" || true' // force px4io update sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply @@ -635,6 +640,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic quadcopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply } @@ -713,6 +719,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set IMU_GYRO_RATEMAX 250"' // limit cpu usage sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set MAV_0_CONFIG 0"' // limit cpu usage sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic multicopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply } @@ -787,6 +794,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic vtol standardulticopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply } @@ -941,6 +949,7 @@ pipeline { sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set CBRK_BUZZER 782097"' // disable buzzer sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOCONFIG 2"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_AUTOSTART 4001"' // generic multicopter + sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param set SYS_BL_UPDATE 1"' // update bootloader sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "param save"' sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "reboot" || true' // reboot to apply } diff --git a/ROMFS/CMakeLists.txt b/ROMFS/CMakeLists.txt index 25add7e336..3b1c1fd496 100644 --- a/ROMFS/CMakeLists.txt +++ b/ROMFS/CMakeLists.txt @@ -31,11 +31,12 @@ # ############################################################################ -message(STATUS "ROMFS: ${config_romfs_root}") - set(romfs_src_dir ${PX4_SOURCE_DIR}/ROMFS/${config_romfs_root}) set(romfs_gen_root_dir ${PX4_BINARY_DIR}/etc) +file(RELATIVE_PATH romfs_path_relative ${PX4_SOURCE_DIR} ${romfs_src_dir}) +message(STATUS "ROMFS: ${romfs_path_relative}") + set_property(GLOBAL PROPERTY PX4_ROMFS_FILES) set_property(GLOBAL PROPERTY PX4_ROMFS_CMAKE_FILES) @@ -149,9 +150,22 @@ if(config_io_board) copy_px4io_bin ${fw_io_bin} ) + file(RELATIVE_PATH iofw_file_relative ${PX4_SOURCE_DIR} ${fw_io_bin}) + message(STATUS "ROMFS: Adding ${iofw_file_relative} -> /etc/extras/${config_io_board}.bin") endif() -if(config_build_bootloader) + +# board bootloader (built or included) +if(TARGET copy_bootloader_bin) + + if(board_bootloader_firmware) + file(RELATIVE_PATH bl_file_relative ${PX4_SOURCE_DIR} ${board_bootloader_firmware}) + message(STATUS "ROMFS: Adding ${bl_file_relative} -> /etc/extras/bootloader.bin") + else() + file(RELATIVE_PATH bl_file_relative ${PX4_SOURCE_DIR} ${bootloader_bin}) + message(STATUS "ROMFS: Adding ${bl_file_relative} -> /etc/extras/bootloader.bin") + endif() + list(APPEND extras_dependencies copy_bootloader_bin ${bootloader_bin} @@ -162,7 +176,8 @@ endif() # optional board architecture defaults set(board_arch_rc_file "rc.board_arch_defaults") if(EXISTS "${PX4_SOURCE_DIR}/platforms/${PX4_PLATFORM}/init/${CONFIG_ARCH_CHIP}/${board_arch_rc_file}") - message(STATUS "ROMFS: Adding ${board_arch_rc_file}") + file(RELATIVE_PATH rc_file_relative ${PX4_SOURCE_DIR} ${PX4_SOURCE_DIR}/platforms/${PX4_PLATFORM}/init/${CONFIG_ARCH_CHIP}/${board_arch_rc_file}) + message(STATUS "ROMFS: Adding ${rc_file_relative} -> /etc/init.d/${board_arch_rc_file}") add_custom_command( OUTPUT @@ -193,7 +208,8 @@ list(APPEND OPTIONAL_BOARD_RC foreach(board_rc_file ${OPTIONAL_BOARD_RC}) if(EXISTS "${PX4_BOARD_DIR}/init/${board_rc_file}") - message(STATUS "ROMFS: Adding ${board_rc_file}") + file(RELATIVE_PATH rc_file_relative ${PX4_SOURCE_DIR} ${PX4_BOARD_DIR}/init/${board_rc_file}) + message(STATUS "ROMFS: Adding ${rc_file_relative} -> /etc/init.d/${board_rc_file}") add_custom_command( OUTPUT @@ -221,7 +237,7 @@ if(config_uavcan_peripheral_firmware) foreach(uavcan_peripheral_config ${config_uavcan_peripheral_firmware}) # include the px4io binary in ROMFS - message(STATUS "ROMFS: Building and including UAVCAN peripheral ${uavcan_peripheral_config}") + message(STATUS "ROMFS: Adding UAVCAN peripheral ${uavcan_peripheral_config} -> /etc/uavcan/fw/") ExternalProject_Add(build_${uavcan_peripheral_config} SOURCE_DIR ${CMAKE_SOURCE_DIR} DOWNLOAD_COMMAND "" diff --git a/ROMFS/px4fmu_common/extras/README.txt b/ROMFS/px4fmu_common/extras/README.txt deleted file mode 100644 index 4f7639784d..0000000000 --- a/ROMFS/px4fmu_common/extras/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -px4fmuv3_bl.bin: Bootloader binary of the PX4 Bootloader - (https://github.com/PX4/Bootloader) - based on commit 184b813699a9cfd6f43a5a21556a06b4372baf5f - for the target px4fmuv3_bl - diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index f4057b465f..6fc79fde28 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -549,6 +549,22 @@ else . ${R}etc/init.d/rc.autostart.post fi + # + # Bootloader upgrade + # + if param compare -s SYS_BL_UPDATE 1 + then + if [ -f "/etc/extras/bootloader.bin" ] + then + param set SYS_BL_UPDATE 0 + param save + echo "bootloader update..." + bl_update "/etc/extras/bootloader.bin" + echo "bootloader update done, rebooting" + reboot + fi + fi + if ! param compare SYS_PARAM_VER ${PARAM_DEFAULTS_VER} then echo "Switched to different parameter version. Resetting parameters." diff --git a/boards/airmind/mindpx-v2/bootloader/airmind_mindpx-v2_bootloader.bin b/boards/airmind/mindpx-v2/bootloader/airmind_mindpx-v2_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..591d0390604d954a8b77ae0784da9979cda39996 GIT binary patch literal 10580 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 F{u^7TPs#uQ literal 0 HcmV?d00001 diff --git a/boards/av/x-v1/bootloader/av_x-v1_bootloader.bin b/boards/av/x-v1/bootloader/av_x-v1_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..69bb5cee570f01192f927bc8e699d6cdb888125c GIT binary patch literal 4972 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 literal 0 HcmV?d00001 diff --git a/boards/bitcraze/crazyflie/default.cmake b/boards/bitcraze/crazyflie/default.cmake index aafac466d3..7547c13ee1 100644 --- a/boards/bitcraze/crazyflie/default.cmake +++ b/boards/bitcraze/crazyflie/default.cmake @@ -14,8 +14,8 @@ px4_add_board( barometer/lps25h distance_sensor/vl53l0x gps - magnetometer/akm/ak8963 imu/invensense/mpu9250 + magnetometer/akm/ak8963 optical_flow/pmw3901 pwm_out MODULES @@ -45,7 +45,7 @@ px4_add_board( #bl_update dmesg dumpfile - esc_calib + #esc_calib hardfault_log i2cdetect led_control diff --git a/boards/bitcraze/crazyflie21/bootloader/bitcraze_crazyflie21_bootloader.bin b/boards/bitcraze/crazyflie21/bootloader/bitcraze_crazyflie21_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..c4542ff195cc611734a57fbface1f6045e1fcaef GIT binary patch literal 9744 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 literal 0 HcmV?d00001 diff --git a/boards/bitcraze/crazyflie21/default.cmake b/boards/bitcraze/crazyflie21/default.cmake index 7694dc3f21..bddc80c825 100644 --- a/boards/bitcraze/crazyflie21/default.cmake +++ b/boards/bitcraze/crazyflie21/default.cmake @@ -11,12 +11,12 @@ px4_add_board( ROMFSROOT px4fmu_common CONSTRAINED_FLASH DRIVERS + barometer/bmp388 distance_sensor/vl53l1x gps + imu/bosch/bmi088/bmi088_i2c optical_flow/pmw3901 pwm_out - imu/bosch/bmi088/bmi088_i2c - barometer/bmp388 MODULES attitude_estimator_q #camera_feedback @@ -24,7 +24,8 @@ px4_add_board( dataman ekf2 events - gyro_fft + flight_mode_manager + #gyro_fft land_detector landing_target_estimator load_mon @@ -40,10 +41,10 @@ px4_add_board( sensors #temperature_compensation SYSTEMCMDS - bl_update + #bl_update dmesg dumpfile - esc_calib + #esc_calib hardfault_log i2cdetect led_control diff --git a/boards/bitcraze/crazyflie21/src/spi.cpp b/boards/bitcraze/crazyflie21/src/spi.cpp index 8cee5d6ab3..e9beabbdb3 100644 --- a/boards/bitcraze/crazyflie21/src/spi.cpp +++ b/boards/bitcraze/crazyflie21/src/spi.cpp @@ -49,15 +49,14 @@ #include #include "board_config.h" - #include #include #include constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_FLOW_DEVTYPE_PMW3901, SPI::CS{GPIO::PortB, GPIO::Pin4}), initSPIDevice(SPIDEV_MMCSD(0), SPI::CS{GPIO::PortC, GPIO::Pin12}), + initSPIDevice(DRV_FLOW_DEVTYPE_PMW3901, SPI::CS{GPIO::PortB, GPIO::Pin4}), initSPIDevice(DRV_DEVTYPE_UNUSED, SPI::CS{GPIO::PortB, GPIO::Pin5}), }), }; diff --git a/boards/cuav/nora/init/rc.board_defaults b/boards/cuav/nora/init/rc.board_defaults index 5967c4421e..7491c4b0da 100644 --- a/boards/cuav/nora/init/rc.board_defaults +++ b/boards/cuav/nora/init/rc.board_defaults @@ -3,25 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/cuav_nora_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - param set-default BAT_V_DIV 18 param set-default BAT1_V_DIV 18 param set-default BAT2_V_DIV 18 diff --git a/boards/cuav/x7pro/init/rc.board_defaults b/boards/cuav/x7pro/init/rc.board_defaults index 40c6301156..7491c4b0da 100644 --- a/boards/cuav/x7pro/init/rc.board_defaults +++ b/boards/cuav/x7pro/init/rc.board_defaults @@ -3,25 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/cuav_x7pro_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - param set-default BAT_V_DIV 18 param set-default BAT1_V_DIV 18 param set-default BAT2_V_DIV 18 diff --git a/boards/cubepilot/cubeorange/init/rc.board_defaults b/boards/cubepilot/cubeorange/init/rc.board_defaults index 444a67d244..d5e3382247 100644 --- a/boards/cubepilot/cubeorange/init/rc.board_defaults +++ b/boards/cubepilot/cubeorange/init/rc.board_defaults @@ -3,24 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/cubepilot_cubeorange_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - param set-default BAT_V_DIV 10.1 param set-default BAT1_V_DIV 10.1 diff --git a/boards/cubepilot/io-v2/bootloader/cubepilot_io-v2_bootloader.bin b/boards/cubepilot/io-v2/bootloader/cubepilot_io-v2_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..235c65c934c044b0064fbd5172e82e781e6ec2c4 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/boards/holybro/durandal-v1/init/rc.board_defaults b/boards/holybro/durandal-v1/init/rc.board_defaults index b820665a9c..08a6b82a3d 100644 --- a/boards/holybro/durandal-v1/init/rc.board_defaults +++ b/boards/holybro/durandal-v1/init/rc.board_defaults @@ -3,25 +3,5 @@ # Holybro Durandal V1 specific board defaults #------------------------------------------------------------------------------ - -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/holybro_durandal-v1_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - # Enable IMU thermal control param set-default SENS_EN_THERMAL 1 diff --git a/boards/holybro/kakutef7/bootloader/holybro_kakutef7_bootloader.bin b/boards/holybro/kakutef7/bootloader/holybro_kakutef7_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..6948aec7077a9463b5231b9b9d72255a9ddaab9e GIT binary patch literal 9940 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 literal 0 HcmV?d00001 diff --git a/boards/holybro/pix32v5/bootloader/holybro_pix32v5_bootloader.bin b/boards/holybro/pix32v5/bootloader/holybro_pix32v5_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..76d4bf5367ef0e95661481bf6a896be7ed8338d1 GIT binary patch literal 10452 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 gEBkq2p{%F?{tf_WHq)$ literal 0 HcmV?d00001 diff --git a/boards/modalai/fc-v1/bootloader/modalai_fc-v1_bootloader.bin b/boards/modalai/fc-v1/bootloader/modalai_fc-v1_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..ab1887aedd1ec11132f19c6e849b42513692831b GIT binary patch literal 10456 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 literal 0 HcmV?d00001 diff --git a/boards/mro/ctrl-zero-h7-oem/init/rc.board_defaults b/boards/mro/ctrl-zero-h7-oem/init/rc.board_defaults index b3701ff52c..0e211f3539 100644 --- a/boards/mro/ctrl-zero-h7-oem/init/rc.board_defaults +++ b/boards/mro/ctrl-zero-h7-oem/init/rc.board_defaults @@ -3,25 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/mro_ctrl-zero-h7-oem_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - param set-default BAT_V_DIV 10.1 param set-default BAT1_V_DIV 10.1 diff --git a/boards/mro/ctrl-zero-h7/init/rc.board_defaults b/boards/mro/ctrl-zero-h7/init/rc.board_defaults index a85ece0156..0e211f3539 100644 --- a/boards/mro/ctrl-zero-h7/init/rc.board_defaults +++ b/boards/mro/ctrl-zero-h7/init/rc.board_defaults @@ -3,25 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/mro_ctrl-zero-h7_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - param set-default BAT_V_DIV 10.1 param set-default BAT1_V_DIV 10.1 diff --git a/boards/mro/pixracerpro/init/rc.board_defaults b/boards/mro/pixracerpro/init/rc.board_defaults index 52491421d3..6f1b54fa02 100644 --- a/boards/mro/pixracerpro/init/rc.board_defaults +++ b/boards/mro/pixracerpro/init/rc.board_defaults @@ -3,25 +3,6 @@ # board specific defaults #------------------------------------------------------------------------------ -# -# Bootloader upgrade -# -set BL_FILE /etc/extras/mro_pixracerpro_bootloader.bin -if [ -f $BL_FILE ] -then - if param compare SYS_BL_UPDATE 1 - then - param set SYS_BL_UPDATE 0 - param save - echo "BL update..." - bl_update $BL_FILE - echo "BL update done" - reboot - fi -fi -unset BL_FILE - - param set-default BAT_V_DIV 10.1 param set-default BAT1_V_DIV 10.1 diff --git a/boards/mro/x21/bootloader/mro_x21_bootloader.bin b/boards/mro/x21/bootloader/mro_x21_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..d21a0484a6c7aba10028e7bb1d4bbeaa8b21d0d5 GIT binary patch literal 10572 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 BODO;V literal 0 HcmV?d00001 diff --git a/boards/nxp/fmuk66-e/bootloader/nxp_fmuk66-e_bootloader.bin b/boards/nxp/fmuk66-e/bootloader/nxp_fmuk66-e_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..9193278497f46bf7a78d067b3d4247e6b121849d GIT binary patch literal 18672 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 Z-=uHSH|d-7P5LH%lfFscr2oh1e*@6G_CWvu literal 0 HcmV?d00001 diff --git a/boards/nxp/fmuk66-e/default.cmake b/boards/nxp/fmuk66-e/default.cmake index 84427648c6..9049949246 100644 --- a/boards/nxp/fmuk66-e/default.cmake +++ b/boards/nxp/fmuk66-e/default.cmake @@ -82,7 +82,7 @@ px4_add_board( vmount vtol_att_control SYSTEMCMDS - bl_update + #bl_update #dmesg dumpfile esc_calib diff --git a/boards/nxp/fmuk66-v3/bootloader/nxp_fmuk66-v3_bootloader.bin b/boards/nxp/fmuk66-v3/bootloader/nxp_fmuk66-v3_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..e97ecced3a52699c806266c97bf9eefb3005f393 GIT binary patch literal 18672 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 PlLL5bIt`Vn8{hu{E`mvA literal 0 HcmV?d00001 diff --git a/boards/px4/fmu-v5/bootloader/px4_fmu-v5_bootloader.bin b/boards/px4/fmu-v5/bootloader/px4_fmu-v5_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5adff96eef4846a91b34f4074a8477fb234d8db GIT binary patch literal 10456 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 literal 0 HcmV?d00001 diff --git a/boards/px4/fmu-v5x/bootloader/px4_fmu-v5x_bootloader.bin b/boards/px4/fmu-v5x/bootloader/px4_fmu-v5x_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a9cba4c8e0813c3051c74dc69f1a7f028b45c03 GIT binary patch literal 10520 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/boards/px4/fmu-v5x/default.cmake b/boards/px4/fmu-v5x/default.cmake index e4925dbddd..44d09fb55b 100644 --- a/boards/px4/fmu-v5x/default.cmake +++ b/boards/px4/fmu-v5x/default.cmake @@ -37,13 +37,13 @@ px4_add_board( imu/invensense/icm20602 imu/invensense/icm42688p irlock - lights/blinkm + #lights/blinkm lights/rgbled lights/rgbled_ncp5623c magnetometer # all available magnetometer drivers optical_flow # all available optical flow drivers #osd - pca9685 + #pca9685 pca9685_pwm_out power_monitor/ina226 #protocol_splitter diff --git a/boards/px4/io-v2/bootloader/px4_io-v2_bootloader.bin b/boards/px4/io-v2/bootloader/px4_io-v2_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..235c65c934c044b0064fbd5172e82e781e6ec2c4 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/boards/uvify/core/bootloader/uvify_core_bootloader.bin b/boards/uvify/core/bootloader/uvify_core_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..990cfaf5bc99cf44960e367da62484d66aa1f24b GIT binary patch literal 10700 zcmd^leRvzix$ir>D`{mr_S$lSEj#f_>kv6IMX^&bNjR(}XXRKkefgYJpGXD9Vug<# zvzSi;wx_|xj55*|O$)oXAvbfn1sfiszh+6D1blNET%V01>0a$mdOLt94DijtAmE47 zM)G$CxVTYMQ=5uv+k!%Piwf>|ET#X^0wT5L2aKd{?2C(RySKfb4{HO~X6H6$sY%IK zsHgh0v<g zbBygtZ$%_lf@(((^WQ0sj0CCInxB@}4HPv?DyprB7OpJ}ELHb-?WcvnUX_i*7Ire^ z+v6=72K-bS@a<_M`Bek(<}~1vw5R}nG%cx1)t-xdui(F=*M&g_o|Az$ZUR0JK%Cbk z41iRutS6G-=%-I~gO@&QId>vv3G@+RS?%BfRT^YOz_-oRNC$#K7$S3H!URqQ-&bL2 zI;Q!l?wWJB<(F&UY59;W?|bGDT>S-&`C&*ossc_=|11s#DEcme(4$1y^e*9PAFo3q zVCM`iJ8zy~bA|JVZj*DcwyLLT@j4tPd1k~RZefER6N_WCelnLc%_ zCGntUB;%J3#UXcSqHsI4f{az}_T0GP;ao6b-u~fPz-(@QVKIEak#iWyI_KzZyqMv!-h#_{SpodPG#}@9>rT#LeaT4v*QKAus|zM#AL+D(-(I4Ayx$G@ zzI2ZQE*XE=&Fp0{%d&16|E3#BjQA)KmI3}w8t@ON+ZDijr#XcTX7mW~_tHny1Kx$F zn7vTx!yL=>JxYZ7cL^`Mx8)AryUnfTzf?a_#EPW&M#fvY`Fb4GIcC3Yvf8>)sT+Pcvmc6Tme1nS*y^jiogP!DUT>GQhjTL>ra^vbxX zn_GT5Gm6!jwy*D|Jv*-0$7p0##_lh7My)?QNlI$Ky)p_;>&tDo^^E7TqlZoBdstL6 zLW*m+r9Ik!@dHx1&q%&LLnG$r zp;iU(cq;#ujf#&{&MQ%jWdDpwzY^!k49=^62j{sA&W}QN%ofOacj%2cUjP$7$l%J; zSzIxL`{)dvE1A9bQyQ_~%GB!)0Uk`{zrs0uq&#DFf5s}rwr8xi%z*1_QR~aaBH&k2 zAtgJiCEquax6jloG!Jf}_KDB~@~5=VUz`Egmq+hNg{F_h7Zt2KMO&($0atUhB@xvC zuS{)MS`xz=;OkOVfjz6`SXE$`_r{nj5Ey6KQiWQfKERGt)?P}Xy}P_OCBFNUO!V94 zqQ7Eh=#y-w7tP@Q2g>Kg{xUlXW~et$&lDUApT*D6Oe|x|+}7AK1w_CTQ}j7G^_X`g z_K}{cSv!Y3kp_wBd-juz*7pk?BE}z&J@=LGn%; (!)hHb+%%)LE4q6{}DbM9p8) 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 ] # [ BUILD_BOOTLOADER ] # [ IO ] -# [ BOOTLOADER ] # [ UAVCAN_INTERFACES ] # [ UAVCAN_PERIPHERALS ] # [ DRIVERS ] @@ -74,7 +73,6 @@ # ROMFSROOT : relative path to the ROMFS root directory # BUILD_BOOTLOADER : flag to enable building and including the bootloader config # IO : name of IO board to be built and included in the ROMFS (requires a valid ROMFSROOT) -# BOOTLOADER : bootloader file to include for flashing via bl_update (currently NuttX only) # UAVCAN_INTERFACES : number of interfaces for UAVCAN # UAVCAN_PERIPHERALS : list of UAVCAN peripheral firmware to build and embed # DRIVERS : list of drivers to build for this board (relative to src/drivers) @@ -148,7 +146,6 @@ function(px4_add_board) ARCHITECTURE ROMFSROOT IO - BOOTLOADER UAVCAN_INTERFACES UAVCAN_TIMER_OVERRIDE LINKER_PREFIX @@ -210,9 +207,6 @@ function(px4_add_board) set(romfs_extra_files) set(config_romfs_extra_dependencies) - if(BOOTLOADER) - list(APPEND romfs_extra_files ${BOOTLOADER}) - endif() foreach(metadata ${EMBEDDED_METADATA}) if(${metadata} STREQUAL "parameters") list(APPEND romfs_extra_files ${PX4_BINARY_DIR}/params.json.xz) diff --git a/src/systemcmds/bl_update/CMakeLists.txt b/src/systemcmds/bl_update/CMakeLists.txt index 5a02a677c5..cd774646ec 100644 --- a/src/systemcmds/bl_update/CMakeLists.txt +++ b/src/systemcmds/bl_update/CMakeLists.txt @@ -64,10 +64,10 @@ if(config_build_bootloader) 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") + set(board_bootloader_firmware "${BINARY_DIR}/${bootloader_config}.elf" CACHE FILEPATH "bootloader original binary path") + set(bootloader_bin "${PX4_BINARY_DIR}/romfs_extras/bootloader.bin" CACHE FILEPATH "bootloader binary path") - file(RELATIVE_PATH bootloader_exe_relative ${CMAKE_CURRENT_BINARY_DIR} ${bootloader_exe}) + file(RELATIVE_PATH bootloader_exe_relative ${CMAKE_CURRENT_BINARY_DIR} ${board_bootloader_firmware}) file(RELATIVE_PATH bootloader_bin_relative ${CMAKE_CURRENT_BINARY_DIR} ${bootloader_bin}) add_custom_command(OUTPUT ${bootloader_bin} @@ -77,4 +77,25 @@ if(config_build_bootloader) COMMENT "Copying ${bootloader_config} to ROMFS extras" ) add_custom_target(copy_bootloader_bin DEPENDS ${bootloader_bin}) + +elseif(EXISTS "${PX4_BOARD_DIR}/bootloader/") + + if(EXISTS ${PX4_BOARD_DIR}/bootloader/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_bootloader.bin) + set(board_bootloader_firmware ${PX4_BOARD_DIR}/bootloader/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_bootloader.bin CACHE FILEPATH "bootloader original binary path") + set(bootloader_bin "${PX4_BINARY_DIR}/romfs_extras/bootloader.bin" CACHE FILEPATH "bootloader binary path") + + add_custom_command(OUTPUT ${bootloader_bin} + COMMAND ${CMAKE_COMMAND} -E make_directory ${PX4_BINARY_DIR}/romfs_extras + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${board_bootloader_firmware} ${PX4_BINARY_DIR}/romfs_extras/bootloader.bin + DEPENDS ${board_bootloader_firmware} + COMMENT "Copying ${board_bootloader_firmware} to ROMFS extras" + ) + add_custom_target(copy_bootloader_bin DEPENDS ${bootloader_bin}) + + else() + file(GLOB bootloader_bin_files ${PX4_BOARD_DIR}/bootloader/*.bin) + foreach(bin_file ${bootloader_bin_files}) + message(FATAL_ERROR "incorrect bootloader filename ${bin_file} should be ${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_bootloader.bin") + endforeach() + endif() endif()