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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 P)7z15EYr|ZfF<}J1%!|S literal 0 HcmV?d00001 diff --git a/boards/bitcraze/crazyflie/bootloader/bitcraze_crazyflie_bootloader.bin b/boards/bitcraze/crazyflie/bootloader/bitcraze_crazyflie_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..954ef6e89627285be0abd3fa57871057adb6ac88 GIT binary patch literal 9744 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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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 qi|}29w3v75DMg!K0lG~fli2>%-h3erRX 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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 Lu8!a`oQHn{U$R(( 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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 Pyamec#WI3RZwdYvB|0|h 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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

TJ>khB!AW` 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 N^~(7=f{SmV{5R;eIgJ1S 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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 T0{-GWZU($>9!GEiFO>fU7qLqz 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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

  • E$r`HPh;f=Sg_g9%*S$`OT}tp$;#dGL>1jW^ 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

    u}OyeDeZAZw*JyZ3w~ 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 kJr3OCz&#G!z>% 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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 literal 0 HcmV?d00001 diff --git a/boards/px4/fmu-v2/bootloader/px4_fmu-v2_bootloader.bin b/boards/px4/fmu-v2/bootloader/px4_fmu-v2_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..75e1e3a6b8380e01d2b49694394919e1c680d2ed GIT binary patch literal 10640 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 E28vuJc>n+a diff --git a/boards/px4/fmu-v4pro/bootloader/px4_fmu-v4pro_bootloader.bin b/boards/px4/fmu-v4pro/bootloader/px4_fmu-v4pro_bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..0cd3e09ef2f7de1a80c1cc382b1d2f57b74f838e GIT binary patch literal 10580 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%0D`aJk-O$Qf zcI+fGJ=!|jii#_Ohg;z6Qipe*2y3Uf`x_O5r&>n$IspE*RR?QPUImsqwp6xf#DjM! zI$Lkr9~5rv4R~Y3-|NM6)bpT2=IM1ihhRT5o6*XjZ5e9i%5&Ua?d;iS!kF&~!)Wt+ z$dqTfd&7rYEHL6*VX}9la1NM4bDt+-15&=>#h zSCIU`WojcY>+l{K88}(T98h@KE^qR}i;LMK>rm)25)LSK8AVvs8Lyi>9{=%VSG?}( z(fE(AI!}f!Qvzuv)Eg-u4umcG2Eko7k~RLlezn@P%gy+7VLId_TL zh$e=Sr z6^aoWH3g7=)D&QZnF0!GT7-2POxdrCM>GJ*s*_s(hns~)iL>b iVIF@DV!sW58$s1y%;UL$pP0wZfWJPEBe;kc%6|hcf=Oin 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/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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 E513CbPyhe` literal 0 HcmV?d00001 diff --git a/cmake/px4_add_board.cmake b/cmake/px4_add_board.cmake index 1cb021a02b..d718359f41 100644 --- a/cmake/px4_add_board.cmake +++ b/cmake/px4_add_board.cmake @@ -48,7 +48,6 @@ # [ ROMFSROOT ] # [ 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()