diff --git a/.ackrc b/.ackrc deleted file mode 100644 index 0215ca1eeb..0000000000 --- a/.ackrc +++ /dev/null @@ -1 +0,0 @@ ---ignore-dir=Documentation diff --git a/.github_changelog_generator b/.github_changelog_generator deleted file mode 100644 index b89c58ad05..0000000000 --- a/.github_changelog_generator +++ /dev/null @@ -1,33 +0,0 @@ -# How to install: -# gem install github_changelog_generator -# How to run: -# github_changelog_generator -u PX4 -p Firmware -# Description: -# The following params are sensible defaults for the PX4 project, -# if you want to do a changelog before a release you need to update since-tag and future-releases, - -# Params: -# github_changelog_generator --help for all options - -# max-issues -# max threshold for github api queries -# make sure you set your CHANGELOG_GITHUB_TOKEN before -# running -max-issues=1500 - -# exclude-tags-regex -# excludes release candidates -exclude-tags-regex=rc[0-9]{1,}|beta[0-9]{1,} - -# since-tag -# version of last stable release -# you need to change this depending on what you need -# if you want a changelog between versions this is the lowest version -since-tag=1.6.5 - -# future-release -# version you are about to release -# if you want a changelog between a version and all unreleased changes grouped as a release -# eg: v1.6.5 to v1.7.0 -future-release=v1.7.0 - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 347ccc884c..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -language: cpp - -git: - depth: 100 - submodules: false - -matrix: - fast_finish: true - include: - - os: linux - dist: xenial - # In order to stay under the coverity rate limit, we only run this weekly - # and not on push which is configured in travis-ci settings. - if: branch = main - -before_install: - - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- - -install: - - export PATH=$HOME/.local/bin:$PATH - - pip install --user --upgrade pip - - pip install --user -r Tools/setup/requirements.txt - -script: - - make - -addons: - coverity_scan: - project: - name: "PX4/Firmware" - description: "Build submitted via Travis CI" - notification_email: ci@px4.io - build_command_prepend: "make distclean" - build_command: "make px4_sitl_default" - branch_pattern: coverity_scan diff --git a/.ycm_extra_conf.py b/.ycm_extra_conf.py deleted file mode 100644 index 4f7cfc2020..0000000000 --- a/.ycm_extra_conf.py +++ /dev/null @@ -1,172 +0,0 @@ -# This file is NOT licensed under the GPLv3, which is the license for the rest -# of YouCompleteMe. -# -# Here's the license text for this file: -# -# This is free and unencumbered software released into the public domain. -# -# Anyone is free to copy, modify, publish, use, compile, sell, or -# distribute this software, either in source code form or as a compiled -# binary, for any purpose, commercial or non-commercial, and by any -# means. -# -# In jurisdictions that recognize copyright laws, the author or authors -# of this software dedicate any and all copyright interest in the -# software to the public domain. We make this dedication for the benefit -# of the public at large and to the detriment of our heirs and -# successors. We intend this dedication to be an overt act of -# relinquishment in perpetuity of all present and future rights to this -# software under copyright law. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# For more information, please refer to - -import os -import ycm_core - -# These are the compilation flags that will be used in case there's no -# compilation database set (by default, one is not set). -# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. -flags = [ -'-Wall', -'-Wextra', -'-Werror', -#'-Wc++98-compat', -'-Wno-long-long', -'-Wno-variadic-macros', -'-fexceptions', -'-DNDEBUG', -# You 100% do NOT need -DUSE_CLANG_COMPLETER in your flags; only the YCM -# source code needs it. -#'-DUSE_CLANG_COMPLETER', -# THIS IS IMPORTANT! Without a "-std=" flag, clang won't know which -# language to use when compiling headers. So it will guess. Badly. So C++ -# headers will be compiled as C headers. You don't want that so ALWAYS specify -# a "-std=". -# For a C project, you would set this to something like 'c99' instead of -# 'c++14'. -'-std=c++14', -# ...and the same thing goes for the magic -x option which specifies the -# language that the files to be compiled are written in. This is mostly -# relevant for c++ headers. -# For a C project, you would set this to 'c' instead of 'c++'. -'-x', -'c++', -'-undef', # get rid of standard definitions to allow us to include arm math header -'-I', os.path.join(os.path.expanduser("~"),'gcc-arm-none-eabi-4_7-2013q3/arm-none-eabi/include'), -'-I', 'Build/px4_io-v2_default.build/nuttx-export/include/', -'-I', './NuttX/nuttx/arch/arm/include', -'-include', './src/include/visibility.h', -'-I', './src', -'-I', './src/modules', -'-I', './src/include', -'-I', './src/lib', -'-I', './NuttX', -] - - -# Set this to the absolute path to the folder (NOT the file!) containing the -# compile_commands.json file to use that instead of 'flags'. See here for -# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html -# -# Most projects will NOT need to set this to anything; you can just change the -# 'flags' list of compilation flags. Notice that YCM itself uses that approach. -compilation_database_folder = '' - -if os.path.exists( compilation_database_folder ): - database = ycm_core.CompilationDatabase( compilation_database_folder ) -else: - database = None - -SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] - -def DirectoryOfThisScript(): - return os.path.dirname( os.path.abspath( __file__ ) ) - - -def MakeRelativePathsInFlagsAbsolute( flags, working_directory ): - if not working_directory: - return list( flags ) - new_flags = [] - make_next_absolute = False - path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ] - for flag in flags: - new_flag = flag - - if make_next_absolute: - make_next_absolute = False - if not flag.startswith( '/' ): - new_flag = os.path.join( working_directory, flag ) - - for path_flag in path_flags: - if flag == path_flag: - make_next_absolute = True - break - - if flag.startswith( path_flag ): - path = flag[ len( path_flag ): ] - new_flag = path_flag + os.path.join( working_directory, path ) - break - - if new_flag: - new_flags.append( new_flag ) - return new_flags - - -def IsHeaderFile( filename ): - extension = os.path.splitext( filename )[ 1 ] - return extension in [ '.h', '.hxx', '.hpp', '.hh' ] - - -def GetCompilationInfoForFile( filename ): - # The compilation_commands.json file generated by CMake does not have entries - # for header files. So we do our best by asking the db for flags for a - # corresponding source file, if any. If one exists, the flags for that file - # should be good enough. - if IsHeaderFile( filename ): - basename = os.path.splitext( filename )[ 0 ] - for extension in SOURCE_EXTENSIONS: - replacement_file = basename + extension - if os.path.exists( replacement_file ): - compilation_info = database.GetCompilationInfoForFile( - replacement_file ) - if compilation_info.compiler_flags_: - return compilation_info - return None - return database.GetCompilationInfoForFile( filename ) - - -def FlagsForFile( filename, **kwargs ): - if database: - # Bear in mind that compilation_info.compiler_flags_ does NOT return a - # python list, but a "list-like" StringVec object - compilation_info = GetCompilationInfoForFile( filename ) - if not compilation_info: - return None - - final_flags = MakeRelativePathsInFlagsAbsolute( - compilation_info.compiler_flags_, - compilation_info.compiler_working_dir_ ) - - # NOTE: This is just for YouCompleteMe; it's highly likely that your project - # does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR - # ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT. - #try: - # final_flags.remove( '-stdlib=libc++' ) - #except ValueError: - # pass - else: - relative_to = DirectoryOfThisScript() - final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) - - return { - 'flags': final_flags, - 'do_cache': True - } diff --git a/Firmware.sublime-project b/Firmware.sublime-project deleted file mode 100644 index d89a58de3f..0000000000 --- a/Firmware.sublime-project +++ /dev/null @@ -1,83 +0,0 @@ -{ - "folders": - [ - { - "path": ".", - "file_exclude_patterns": - [ - "*.o", - "*.a", - "*.d", - ".built", - ".context", - ".depend", - ".config", - ".version", - "Make.dep", - ".configured", - "*.sublime-project", - "*.sublime-workspace", - ".project", - ".cproject", - "cscope.out" - ], - "folder_exclude_patterns": - [ - ".settings", - "nuttx/arch/arm/src/board", - "nuttx/arch/arm/src/chip", - "build_*" - ] - } - ], - "settings": - { - "tab_size": 8, - "translate_tabs_to_spaces": false, - "highlight_line": true, - "AStyleFormatter": - { - "options_c": - { - "use_only_additional_options": true, - "additional_options_file": "${project_path}/Tools/astyle/astylerc" - }, - "options_c++": - { - "use_only_additional_options": true, - "additional_options_file": "${project_path}/Tools/astyle/astylerc" - } - } - }, - "build_systems": - [ - { - "name": "PX4: make all", - "working_dir": "${project_path}", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - "cmd": ["make"], - "shell": true - }, - { - "name": "PX4: make and upload", - "working_dir": "${project_path}", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - "cmd": ["make upload px4_fmu-v2_default -j8"], - "shell": true - }, - { - "name": "PX4: make posix", - "working_dir": "${project_path}", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - "cmd": ["make posix"], - "shell": true - }, - { - "name": "MindPX_V2: make and upload", - "working_dir": "${project_path}", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - "cmd": ["make upload mindpx-v2_default -j8"], - "shell": true - } - ] -} diff --git a/_last_entry b/_last_entry deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e7f57cbb2f..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Build version -version: "{build}" -# do not shallow clone because we want to infer the version from the last tag - -branches: - only: - - master - - beta - - stable - -# Build worker image (build VM template) -image: Visual Studio 2017 - -environment: - matrix: - - PX4_CONFIG: tests # this builds posix in px4_sitl_test folder and runs tests - - PX4_CONFIG: px4_fmu-v5_default - -install: -# if the toolchain wasn't restored from build cache download and install it -- ps: >- - if (-not (Test-Path C:\PX4)) { - Invoke-WebRequest https://s3-us-west-2.amazonaws.com/px4-tools/PX4+Windows+Cygwin+Toolchain/PX4+Windows+Cygwin+Toolchain+0.9.msi -OutFile C:\Toolchain.msi - Start-Process -Wait msiexec -ArgumentList '/I C:\Toolchain.msi /quiet /qn /norestart /log C:\install.log' - } - -# Note: using Start-Process -Wait is important -# because otherwise the install begins but non-blocking and the result cannot be used just after - -build_script: -# FIXME Temporary we need to create the home folder because it's not contained in installer 0.5 and CI fails if it doesn't exist -- if not exist "C:\PX4\home" mkdir C:\PX4\home -# setup the environmental variables to work within the installed cygwin toolchain -- call C:\PX4\toolchain\scripts\setup-environment.bat x -# safe the repopath for switching to it in cygwin bash -- for /f %%i in ('cygpath -u %%CD%%') do set repopath=%%i -# build the make target -- call bash --login -c "cd $repopath && make $PX4_CONFIG" - -# Note: using bash --login is important -# because otherwise certain things (like python; import numpy) do not work - -cache: -# cache the entire toolchain installation folder to avoid -# downloading it from AWS S3 and installing the MSI each time -# it's ~1.8GB > 1GB free limit for build caches -- C:\PX4 -> appveyor.yml diff --git a/boards/px4/fmu-v6xrt/init/rc.board_defaults b/boards/px4/fmu-v6xrt/init/rc.board_defaults index b242eebc90..45282796ef 100644 --- a/boards/px4/fmu-v6xrt/init/rc.board_defaults +++ b/boards/px4/fmu-v6xrt/init/rc.board_defaults @@ -16,8 +16,6 @@ param set-default SENS_EN_INA238 0 param set-default SENS_EN_INA228 0 param set-default SENS_EN_INA226 1 -param set-default SYS_USE_IO 1 - safety_button start if param greater -s UAVCAN_ENABLE 0 diff --git a/boards/px4/fmu-v6xrt/src/CMakeLists.txt b/boards/px4/fmu-v6xrt/src/CMakeLists.txt index cd9d6fb6b2..91833ede24 100644 --- a/boards/px4/fmu-v6xrt/src/CMakeLists.txt +++ b/boards/px4/fmu-v6xrt/src/CMakeLists.txt @@ -36,7 +36,6 @@ if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") bootloader_main.c init.c usb.c - imxrt_romapi.c imxrt_flexspi_nor_boot.c imxrt_flexspi_nor_flash.c imxrt_clockconfig.c @@ -48,6 +47,7 @@ if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") nuttx_drivers # sdio px4_layer #gpio arch_io_pins # iotimer + arch_board_romapi bootloader ) target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) @@ -72,7 +72,6 @@ else() spi.cpp timer_config.cpp usb.c - imxrt_romapi.c imxrt_flexspi_fram.c imxrt_flexspi_nor_boot.c imxrt_flexspi_nor_flash.c @@ -83,6 +82,7 @@ else() target_link_libraries(drivers_board PRIVATE arch_board_hw_info + arch_board_romapi arch_spi drivers__led # drv_led_start nuttx_arch # sdio diff --git a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.c b/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.c index eb079e2009..6ae7589d60 100644 --- a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.c +++ b/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.c @@ -22,7 +22,7 @@ * Included Files ****************************************************************************/ -#include "imxrt_flexspi_nor_flash.h" +#include /**************************************************************************** * Public Data diff --git a/boards/px4/fmu-v6xrt/src/init.c b/boards/px4/fmu-v6xrt/src/init.c index daac8cae42..4b2edbc658 100644 --- a/boards/px4/fmu-v6xrt/src/init.c +++ b/boards/px4/fmu-v6xrt/src/init.c @@ -66,8 +66,7 @@ #include "arm_internal.h" #include "imxrt_flexspi_nor_boot.h" -#include "imxrt_flexspi_nor_flash.h" -#include "imxrt_romapi.h" +#include #include "imxrt_iomuxc.h" #include "imxrt_flexcan.h" #include "imxrt_enet.h" @@ -79,10 +78,12 @@ #include + #include #include #include #include +#include #include #include #include diff --git a/eclipse.cproject b/eclipse.cproject deleted file mode 100644 index 711a641270..0000000000 --- a/eclipse.cproject +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - make - px4_fmu-v2_default - true - true - true - - - make - - px4_fmu-v4_default - true - true - true - - - make - all - true - true - true - - - make - - px4_sitl_default - true - true - true - - - make - - check - true - true - true - - - make - clean - true - true - true - - - make - distclean - true - true - true - - - make - - tests - true - true - true - - - make - submodulesclean - false - true - true - - - make - - quick_check - true - true - true - - - - - - - - - - - - - - - - - - - diff --git a/eclipse.project b/eclipse.project deleted file mode 100644 index 0172fa8ceb..0000000000 --- a/eclipse.project +++ /dev/null @@ -1,69 +0,0 @@ - - - PX4-Firmware - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - topics_sources - 2 - uORB_SRC - - - uORB - 2 - uORB_LOC - - - - - 1457837186676 - - 26 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-.git - - - - 1457837186687 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-true-false-build* - - - - - - uORB_LOC - $%7BPROJECT_LOC%7D/build/px4_sitl_default/uORB - - - uORB_SRC - $%7BPROJECT_LOC%7D/build/px4_sitl_default/msg/topics_sources - - - diff --git a/platforms/common/include/px4_platform_common/shutdown.h b/platforms/common/include/px4_platform_common/shutdown.h index f4bd2e9cf6..3e306f3a17 100644 --- a/platforms/common/include/px4_platform_common/shutdown.h +++ b/platforms/common/include/px4_platform_common/shutdown.h @@ -70,6 +70,12 @@ __EXPORT int px4_register_shutdown_hook(shutdown_hook_t hook); */ __EXPORT int px4_unregister_shutdown_hook(shutdown_hook_t hook); +/** Types of reboot requests for PX4 */ +typedef enum { + REBOOT_REQUEST = 0, ///< Normal reboot + REBOOT_TO_BOOTLOADER = 1, ///< Reboot to PX4 bootloader + REBOOT_TO_ISP = 2, ///< Reboot to ISP bootloader +} reboot_request_t; /** * Request the system to reboot. @@ -83,7 +89,7 @@ __EXPORT int px4_unregister_shutdown_hook(shutdown_hook_t hook); * @return 0 on success, <0 on error */ #if defined(CONFIG_BOARDCTL_RESET) -__EXPORT int px4_reboot_request(bool to_bootloader = false, uint32_t delay_us = 0); +__EXPORT int px4_reboot_request(reboot_request_t request = REBOOT_REQUEST, uint32_t delay_us = 0); #endif // CONFIG_BOARDCTL_RESET diff --git a/platforms/common/shutdown.cpp b/platforms/common/shutdown.cpp index dcbd733ceb..878d99c62e 100644 --- a/platforms/common/shutdown.cpp +++ b/platforms/common/shutdown.cpp @@ -108,6 +108,7 @@ static uint16_t shutdown_counter = 0; ///< count how many times the shutdown wor #define SHUTDOWN_ARG_IN_PROGRESS (1<<0) #define SHUTDOWN_ARG_REBOOT (1<<1) #define SHUTDOWN_ARG_TO_BOOTLOADER (1<<2) +#define SHUTDOWN_ARG_TO_ISP (1<<3) static uint8_t shutdown_args = 0; static constexpr int max_shutdown_hooks = 1; @@ -175,7 +176,17 @@ static void shutdown_worker(void *arg) if (shutdown_args & SHUTDOWN_ARG_REBOOT) { #if defined(CONFIG_BOARDCTL_RESET) PX4_INFO_RAW("Reboot NOW."); - boardctl(BOARDIOC_RESET, (shutdown_args & SHUTDOWN_ARG_TO_BOOTLOADER) ? 1 : 0); + + if (shutdown_args & SHUTDOWN_ARG_TO_BOOTLOADER) { + boardctl(BOARDIOC_RESET, (uintptr_t)REBOOT_TO_BOOTLOADER); + + } else if (shutdown_args & SHUTDOWN_ARG_TO_ISP) { + boardctl(BOARDIOC_RESET, (uintptr_t)REBOOT_TO_ISP); + + } else { + boardctl(BOARDIOC_RESET, (uintptr_t)REBOOT_REQUEST); + } + #else PX4_PANIC("board reset not available"); #endif @@ -206,7 +217,7 @@ static void shutdown_worker(void *arg) } #if defined(CONFIG_BOARDCTL_RESET) -int px4_reboot_request(bool to_bootloader, uint32_t delay_us) +int px4_reboot_request(reboot_request_t request, uint32_t delay_us) { pthread_mutex_lock(&shutdown_mutex); @@ -217,8 +228,11 @@ int px4_reboot_request(bool to_bootloader, uint32_t delay_us) shutdown_args |= SHUTDOWN_ARG_REBOOT; - if (to_bootloader) { + if (request == REBOOT_TO_BOOTLOADER) { shutdown_args |= SHUTDOWN_ARG_TO_BOOTLOADER; + + } else if (request == REBOOT_TO_ISP) { + shutdown_args |= SHUTDOWN_ARG_TO_ISP; } shutdown_time_us = hrt_absolute_time(); diff --git a/platforms/nuttx/src/bootloader/nxp/imxrt_common/main.c b/platforms/nuttx/src/bootloader/nxp/imxrt_common/main.c index 280bc1ad5b..1197427a94 100644 --- a/platforms/nuttx/src/bootloader/nxp/imxrt_common/main.c +++ b/platforms/nuttx/src/bootloader/nxp/imxrt_common/main.c @@ -7,8 +7,8 @@ #include #include "hw_config.h" -#include "imxrt_flexspi_nor_flash.h" -#include "imxrt_romapi.h" +#include +#include #include #include #include diff --git a/platforms/nuttx/src/px4/common/cdc_acm_check.cpp b/platforms/nuttx/src/px4/common/cdc_acm_check.cpp index d86556894d..09c7771032 100644 --- a/platforms/nuttx/src/px4/common/cdc_acm_check.cpp +++ b/platforms/nuttx/src/px4/common/cdc_acm_check.cpp @@ -187,7 +187,7 @@ static void mavlink_usb_check(void *arg) if (param1 == 1) { // 1: Reboot autopilot - px4_reboot_request(false, 0); + px4_reboot_request(REBOOT_REQUEST, 0); } else if (param1 == 2) { // 2: Shutdown autopilot @@ -197,7 +197,7 @@ static void mavlink_usb_check(void *arg) } else if (param1 == 3) { // 3: Reboot autopilot and keep it in the bootloader until upgraded. - px4_reboot_request(true, 0); + px4_reboot_request(REBOOT_TO_BOOTLOADER, 0); } } } 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 aa54650834..ce3e431e53 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 @@ -38,6 +38,7 @@ */ #include +#include #include #include #include @@ -61,7 +62,7 @@ static int board_reset_enter_bootloader() int board_reset(int status) { - if (status == 1) { + if (status == REBOOT_TO_BOOTLOADER) { board_reset_enter_bootloader(); } diff --git a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.h b/platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_flexspi_nor_flash.h similarity index 98% rename from boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.h rename to platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_flexspi_nor_flash.h index 66a425ee9e..727744b974 100644 --- a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.h +++ b/platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_flexspi_nor_flash.h @@ -1,5 +1,5 @@ /**************************************************************************** - * boards/px4/fmu-v6xrt/src/imxrt_flexspi_nor_flash.h + * platforms/nuttx/src/px4/nxp/imrt/include/px4_arch/imxrt_flexspi_nor_flash.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ****************************************************************************/ -#ifndef __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_FLEXSPI_NOR_FLASH_H -#define __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_FLEXSPI_NOR_FLASH_H +#ifndef __PX4_ARCH_IMXRT_FLEXSPI_NOR_FLASH_H +#define __PX4_ARCH_IMXRT_FLEXSPI_NOR_FLASH_H /**************************************************************************** * Included Files @@ -349,4 +349,4 @@ extern const struct flexspi_nor_config_s g_flash_config; extern const struct flexspi_nor_config_s g_flash_fast_config; -#endif /* __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_FLEXSPI_NOR_FLASH_H */ +#endif /* __PX4_ARCH_IMXRT_FLEXSPI_NOR_FLASH_H */ diff --git a/boards/px4/fmu-v6xrt/src/imxrt_romapi.h b/platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_romapi.h similarity index 98% rename from boards/px4/fmu-v6xrt/src/imxrt_romapi.h rename to platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_romapi.h index de076c68cd..f51775e2bd 100644 --- a/boards/px4/fmu-v6xrt/src/imxrt_romapi.h +++ b/platforms/nuttx/src/px4/nxp/imxrt/include/px4_arch/imxrt_romapi.h @@ -1,14 +1,14 @@ /**************************************************************************** - * boards/px4/fmu-v6xrt/src/imxrt_romapi.c + * platforms/nuttx/src/px4/nxp/imrt/include/px4_arch/imxrt_romapi.h * - * Copyright 2017-2020 NXP + * Copyright 2017-2024 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * ****************************************************************************/ -#ifndef __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_ROMAPI_H -#define __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_ROMAPI_H +#ifndef __PX4_ARCH_IMXRT_ROMAPI_H +#define __PX4_ARCH_IMXRT_ROMAPI_H /**************************************************************************** * @@ -370,4 +370,8 @@ void ROM_FLEXSPI_NorFlash_ClearCache(uint32_t instance); /*@}*/ -#endif /* __BOARDS_PX4_FMU_V6XRT_SRC_IMXRT_ROMAPI_H */ +#ifdef __cplusplus +} +#endif + +#endif /* __PX4_ARCH_IMXRT_ROMAPI_H */ diff --git a/platforms/nuttx/src/px4/nxp/imxrt/romapi/CMakeLists.txt b/platforms/nuttx/src/px4/nxp/imxrt/romapi/CMakeLists.txt new file mode 100644 index 0000000000..d6508bdd61 --- /dev/null +++ b/platforms/nuttx/src/px4/nxp/imxrt/romapi/CMakeLists.txt @@ -0,0 +1,36 @@ +############################################################################ +# +# Copyright (c) 2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +px4_add_library(arch_board_romapi + imxrt_romapi.c +) diff --git a/boards/px4/fmu-v6xrt/src/imxrt_romapi.c b/platforms/nuttx/src/px4/nxp/imxrt/romapi/imxrt_romapi.c similarity index 98% rename from boards/px4/fmu-v6xrt/src/imxrt_romapi.c rename to platforms/nuttx/src/px4/nxp/imxrt/romapi/imxrt_romapi.c index 0f79d88a0e..68443e3353 100644 --- a/boards/px4/fmu-v6xrt/src/imxrt_romapi.c +++ b/platforms/nuttx/src/px4/nxp/imxrt/romapi/imxrt_romapi.c @@ -1,7 +1,7 @@ /**************************************************************************** - * boards/px4/fmu-v6xrt/src/imxrt_romapi.c + * platforms/nuttx/src/px4/nxp/imrt/romapi/imxrt_romapi.c * - * Copyright 2017-2020 NXP + * Copyright 2017-2024 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -22,8 +22,8 @@ #include "arm_internal.h" -#include "imxrt_flexspi_nor_flash.h" -#include "imxrt_romapi.h" +#include +#include #include diff --git a/platforms/nuttx/src/px4/nxp/kinetis/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/nxp/kinetis/board_reset/board_reset.cpp index 8a073821ce..62066a9cc2 100644 --- a/platforms/nuttx/src/px4/nxp/kinetis/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/nxp/kinetis/board_reset/board_reset.cpp @@ -38,6 +38,7 @@ */ #include +#include #include #include @@ -72,7 +73,7 @@ static int board_reset_enter_bootloader() int board_reset(int status) { - if (status == 1) { + if (status == REBOOT_TO_BOOTLOADER) { board_reset_enter_bootloader(); } diff --git a/platforms/nuttx/src/px4/nxp/rt117x/CMakeLists.txt b/platforms/nuttx/src/px4/nxp/rt117x/CMakeLists.txt index 8875ab56b7..7a1b5a8bdf 100644 --- a/platforms/nuttx/src/px4/nxp/rt117x/CMakeLists.txt +++ b/platforms/nuttx/src/px4/nxp/rt117x/CMakeLists.txt @@ -36,7 +36,7 @@ add_subdirectory(adc) add_subdirectory(../imxrt/board_critmon board_critmon) add_subdirectory(../imxrt/board_hw_info board_hw_info) add_subdirectory(../imxrt/board_reset board_reset) -#add_subdirectory(../imxrt/dshot dshot) +add_subdirectory(../imxrt/romapi romapi) add_subdirectory(../imxrt/hrt hrt) add_subdirectory(../imxrt/led_pwm led_pwm) add_subdirectory(../imxrt/io_pins io_pins) diff --git a/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_flexspi_nor_flash.h b/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_flexspi_nor_flash.h new file mode 100644 index 0000000000..3925012e86 --- /dev/null +++ b/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_flexspi_nor_flash.h @@ -0,0 +1,36 @@ +/**************************************************************************** + * + * Copyright (c) 2024 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ +#pragma once + + +#include "../../../imxrt/include/px4_arch/imxrt_flexspi_nor_flash.h" diff --git a/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_romapi.h b/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_romapi.h new file mode 100644 index 0000000000..aeab841162 --- /dev/null +++ b/platforms/nuttx/src/px4/nxp/rt117x/include/px4_arch/imxrt_romapi.h @@ -0,0 +1,36 @@ +/**************************************************************************** + * + * Copyright (c) 2024 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ +#pragma once + + +#include "../../../imxrt/include/px4_arch/imxrt_romapi.h" diff --git a/platforms/nuttx/src/px4/nxp/s32k1xx/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/nxp/s32k1xx/board_reset/board_reset.cpp index 6883d77f55..98404ffcb8 100644 --- a/platforms/nuttx/src/px4/nxp/s32k1xx/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/nxp/s32k1xx/board_reset/board_reset.cpp @@ -39,6 +39,7 @@ */ #include +#include #include #include #include @@ -96,7 +97,7 @@ int board_configure_reset(reset_mode_e mode, uint32_t arg) int board_reset(int status) { - if (status == 1) { + if (status == REBOOT_TO_BOOTLOADER) { board_reset_enter_bootloader(); } diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/nxp/s32k3xx/board_reset/board_reset.cpp index 0607e174c9..68fb865e97 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/board_reset/board_reset.cpp @@ -39,6 +39,7 @@ */ #include +#include #include #include #include diff --git a/platforms/nuttx/src/px4/rpi/rpi_common/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/rpi/rpi_common/board_reset/board_reset.cpp index 058f07aea1..c5876da853 100644 --- a/platforms/nuttx/src/px4/rpi/rpi_common/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/rpi/rpi_common/board_reset/board_reset.cpp @@ -38,6 +38,7 @@ */ #include +#include #include #include @@ -119,7 +120,7 @@ int board_reset(int status) { - if (status == 1) { + if (status == REBOOT_TO_BOOTLOADER) { // board_configure_reset(BOARD_RESET_MODE_BOOT_TO_BL, 0); } diff --git a/platforms/nuttx/src/px4/stm/stm32_common/board_reset/board_reset.cpp b/platforms/nuttx/src/px4/stm/stm32_common/board_reset/board_reset.cpp index 15dfbd8761..28b5ba5f84 100644 --- a/platforms/nuttx/src/px4/stm/stm32_common/board_reset/board_reset.cpp +++ b/platforms/nuttx/src/px4/stm/stm32_common/board_reset/board_reset.cpp @@ -38,6 +38,7 @@ */ #include +#include #include #include #include @@ -117,7 +118,7 @@ int board_configure_reset(reset_mode_e mode, uint32_t arg) int board_reset(int status) { - if (status == 1) { + if (status == REBOOT_TO_BOOTLOADER) { board_configure_reset(BOARD_RESET_MODE_BOOT_TO_BL, 0); } diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index e7ea1a2100..0b1c41cd67 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -1201,7 +1201,7 @@ Commander::handle_command(const vehicle_command_s &cmd) #if defined(CONFIG_BOARDCTL_RESET) - } else if ((param1 == 1) && !isArmed() && (px4_reboot_request(false, 400_ms) == 0)) { + } else if ((param1 == 1) && !isArmed() && (px4_reboot_request(REBOOT_REQUEST, 400_ms) == 0)) { // 1: Reboot autopilot answer_command(cmd, vehicle_command_ack_s::VEHICLE_CMD_RESULT_ACCEPTED); @@ -1221,7 +1221,7 @@ Commander::handle_command(const vehicle_command_s &cmd) #if defined(CONFIG_BOARDCTL_RESET) - } else if ((param1 == 3) && !isArmed() && (px4_reboot_request(true, 400_ms) == 0)) { + } else if ((param1 == 3) && !isArmed() && (px4_reboot_request(REBOOT_TO_BOOTLOADER, 400_ms) == 0)) { // 3: Reboot autopilot and keep it in the bootloader until upgraded. answer_command(cmd, vehicle_command_ack_s::VEHICLE_CMD_RESULT_ACCEPTED); diff --git a/src/modules/commander/worker_thread.cpp b/src/modules/commander/worker_thread.cpp index bb73c1e6cc..9859da498b 100644 --- a/src/modules/commander/worker_thread.cpp +++ b/src/modules/commander/worker_thread.cpp @@ -177,7 +177,7 @@ void WorkerThread::threadEntry() param_reset_specific(reset_cal, sizeof(reset_cal) / sizeof(reset_cal[0])); _ret_value = param_save_default(true); #if defined(CONFIG_BOARDCTL_RESET) - px4_reboot_request(false, 400_ms); + px4_reboot_request(REBOOT_REQUEST, 400_ms); #endif // CONFIG_BOARDCTL_RESET break; } diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index c730dd0f47..bb26398ba9 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -1669,6 +1669,7 @@ Mavlink::configure_streams_to_default(const char *configure_single_stream) configure_stream_local("SCALED_IMU2", 25.0f); configure_stream_local("SCALED_IMU3", 25.0f); configure_stream_local("SCALED_PRESSURE", 1.0f); + configure_stream_local("SCALED_PRESSURE2", 1.0f); configure_stream_local("SERVO_OUTPUT_RAW_0", 20.0f); configure_stream_local("SERVO_OUTPUT_RAW_1", 20.0f); configure_stream_local("SYS_STATUS", 1.0f); diff --git a/src/systemcmds/netman/netman.cpp b/src/systemcmds/netman/netman.cpp index ec423b8974..0e74bcd586 100644 --- a/src/systemcmds/netman/netman.cpp +++ b/src/systemcmds/netman/netman.cpp @@ -375,7 +375,7 @@ write_reboot: sleep(1); - px4_reboot_request(false); + px4_reboot_request(REBOOT_REQUEST); while (1) { px4_usleep(1); } // this command should not return on success diff --git a/src/systemcmds/reboot/reboot.cpp b/src/systemcmds/reboot/reboot.cpp index 8d0b3419e8..6e5c159d70 100644 --- a/src/systemcmds/reboot/reboot.cpp +++ b/src/systemcmds/reboot/reboot.cpp @@ -44,6 +44,7 @@ #include #include #include +#include static void print_usage() { @@ -51,6 +52,9 @@ static void print_usage() PRINT_MODULE_USAGE_NAME_SIMPLE("reboot", "command"); PRINT_MODULE_USAGE_PARAM_FLAG('b', "Reboot into bootloader", true); +#ifdef BOARD_HAS_ISP_BOOTLOADER + PRINT_MODULE_USAGE_PARAM_FLAG('i', "Reboot into ISP (1st stage bootloader)", true); +#endif PRINT_MODULE_USAGE_ARG("lock|unlock", "Take/release the shutdown lock (for testing)", true); } @@ -58,17 +62,24 @@ static void print_usage() extern "C" __EXPORT int reboot_main(int argc, char *argv[]) { int ch; - bool to_bootloader = false; + reboot_request_t request = REBOOT_REQUEST; int myoptind = 1; const char *myoptarg = nullptr; - while ((ch = px4_getopt(argc, argv, "b", &myoptind, &myoptarg)) != -1) { + while ((ch = px4_getopt(argc, argv, "bi", &myoptind, &myoptarg)) != -1) { switch (ch) { case 'b': - to_bootloader = true; + request = REBOOT_TO_BOOTLOADER; break; +#ifdef BOARD_HAS_ISP_BOOTLOADER + + case 'i': + request = REBOOT_TO_ISP; + break; +#endif + default: print_usage(); return 1; @@ -98,7 +109,7 @@ extern "C" __EXPORT int reboot_main(int argc, char *argv[]) return ret; } - int ret = px4_reboot_request(to_bootloader); + int ret = px4_reboot_request(request); if (ret < 0) { PX4_ERR("reboot failed (%i)", ret);