diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index d57e4cb48d..0000000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\nci-orchestrator: cache emscripten SDK in failsafe-sim job\n\nCache the _emscripten_sdk directory keyed on version 4.0.15 so\nsubsequent runs skip the git clone and install steps \\(~30s savings\non cache hit\\). The build step sources emsdk_env.sh unchanged.\nEOF\n\\)\")", - "WebFetch(domain:gist.github.com)", - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\nci-orchestrator: upgrade SITL and ROS integration runners to 8cpu\n\nROS Integration Tests \\(31m\\) is the critical path bottleneck,\nfollowed by SITL Tests tailsitter \\(20m\\). Both spend significant\ntime compiling dependencies \\(xrce-dds, ROS2 libs, gazebo\\). Upgrade\nfrom 4cpu to 8cpu to parallelize compilation and reduce wall-clock.\nEOF\n\\)\")", - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\nci-orchestrator: fix flash analysis comment alignment\n\nRemove extra indentation from code fences and bloaty output inside\nthe PR comment body so the column alignment renders correctly in\nGitHub markdown.\nEOF\n\\)\")", - "Bash(docker run:*)", - "Bash(docker rm:*)", - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\nci-orchestrator: increase SITL test speed factor to 20x\n\nBump simulation speed factor from 10x to 20x for MAVSDK SITL tests.\nWith the 8cpu runners this should be sustainable and roughly halve\nthe 18min test execution phase.\nEOF\n\\)\")", - "Bash(docker exec:*)", - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\nci-orchestrator: build Gazebo plugins in cache seed job\n\nAdd Gazebo Classic plugin build to the build-sitl cache seed job so\ndownstream SITL test jobs get ccache hits for both PX4 firmware and\nGazebo objects. Bump ccache max_size from 250M to 400M to fit both.\nEOF\n\\)\")", - "Bash(git -C /Users/rroche/Work/Dronecode/PX4-Autopilot-ci-orchestrator commit -S -s -m \"$\\(cat <<''EOF''\ndocs: update CI orchestrator docs for 4-tier architecture and caching\n\nUpdate documentation to reflect recent changes:\n- 5-tier to 4-tier restructure \\(old T3 merged into T2\\)\n- Add comprehensive caching strategy section covering ccache key\n patterns, scopes, sizes, and the cache seed pattern\n- Document Emscripten SDK cache for failsafe-sim\n- Update runner types \\(8cpu for SITL/ROS, 16cpu for clang-tidy\\)\n- SITL tests now run at 20x speed factor\n- Remove CI summary job references\n- Update tier numbering throughout troubleshooting and best practices\nEOF\n\\)\")", - "Bash(docker build:*)", - "WebFetch(domain:raw.githubusercontent.com)", - "Bash(docker system prune:*)", - "WebSearch", - "WebFetch(domain:hub.docker.com)", - "WebFetch(domain:docs.px4.io)", - "WebFetch(domain:github.com)", - "Bash(find:*)", - "Bash(docker search:*)", - "Bash(docker images:*)", - "Bash(gh pr create --draft --title \"packaging: add PX4 SITL .deb package\" --body \"$\\(cat <<''EOF''\nSingle .deb package for PX4 SITL with Gazebo Harmonic resources. Installs to /opt/px4-sitl with a px4-sitl wrapper script symlinked to /usr/bin.\n\nChanges:\n- cmake/package.cmake: CPack config for px4-sitl .deb with minimal Gazebo runtime deps\n- platforms/posix/CMakeLists.txt: install targets for Gazebo models, worlds, plugins\n- Tools/packaging/px4-sitl.sh: launcher script \\(XDG dirs, gz_env.sh generation, dartsim symlink fix\\)\n- Tools/packaging/postinst, postrm: create/remove /usr/bin/px4-sitl symlink\n- .github/workflows/build_deb_package.yml: CI to build and validate the .deb\n- docs/en/packaging/px4_sitl_deb.md: usage and build docs\n\nTested with PX4_SIM_MODEL=gz_x500 and sihsim_quadx in Ubuntu 24.04 container.\nEOF\n\\)\")", - "Bash(gh gist create:*)", - "Bash(git commit -S -s -m \"$\\(cat <<''EOF''\npackaging: exclude legacy install rules from .deb builds\n\nGate legacy install rules behind if\\(NOT DPKG_PROGRAM\\) so they only\nrun for tarball/ROS workflows. Gate .deb install rules behind\nif\\(DPKG_PROGRAM\\) so they only run when building .deb packages.\n\nWithout this, both rule sets execute during .deb builds, triplicating\nfiles and pulling in the entire source tree \\(integrationtests, launch,\nTools, CMakeLists.txt, gazebo-classic models\\) into the package.\nEOF\n\\)\")", - "Bash(gh issue create:*)", - "Bash(git commit -S -s --amend -m \"$\\(cat <<''EOF''\npackaging: exclude legacy install rules from .deb builds\n\nMove find_program\\(DPKG_PROGRAM dpkg\\) into platforms/posix/CMakeLists.txt\nso it is available before the install rules are processed \\(package.cmake\nruns later\\). Gate both the top-level posix install block and the\nSITL-specific legacy install rules behind if\\(NOT DPKG_PROGRAM\\) so they\nonly run for tarball/ROS workflows.\n\nGate .deb install rules behind if\\(DPKG_PROGRAM\\) so they only run when\nbuilding .deb packages. Mark Gazebo resource installs as OPTIONAL so\nCPack does not fail when the gz submodule is not checked out.\n\nWithout this, both rule sets execute during .deb builds, triplicating\nfiles and pulling in the entire source tree \\(integrationtests, launch,\nTools, CMakeLists.txt, gazebo-classic models\\) into the package.\n\nSigned-off-by: Ramon Roche \nEOF\n\\)\")", - "Bash(git commit:*)", - "Bash(kill:*)", - "WebFetch(domain:cmake.org)", - "Bash(gh run watch:*)", - "Bash(gh pr list:*)", - "Bash(gh pr checks:*)", - "WebFetch(domain:discuss.px4.io)", - "Bash(gh issue list:*)", - "Bash(pkill:*)", - "WebFetch(domain:runs-on.com)", - "Bash(gh release:*)", - "Bash(docker manifest:*)", - "Bash(gh pr:*)", - "Bash(GIT_EDITOR=true git cherry-pick --continue)" - ] - } -} diff --git a/.github/workflows/build_all_targets.yml b/.github/workflows/build_all_targets.yml index 6604f4922a..7c30d8bf24 100644 --- a/.github/workflows/build_all_targets.yml +++ b/.github/workflows/build_all_targets.yml @@ -69,6 +69,7 @@ jobs: runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} + seeders: ${{ steps.set-seeders.outputs.seeders }} timestamp: ${{ steps.set-timestamp.outputs.timestamp }} branchname: ${{ steps.set-branch.outputs.branchname }} steps: @@ -82,19 +83,17 @@ jobs: restore-keys: | ${{ runner.os }}-pip- - - name: Update python packaging to avoid canonicalize_version() error - run: | - pip3 install -U packaging - - name: Install Python Dependencies - uses: py-actions/py-dependency-install@v4 - with: - path: "./Tools/setup/requirements.txt" + run: pip3 install -U packaging -r ./Tools/setup/requirements.txt - id: set-matrix name: Generate Build Matrix run: echo "matrix=$(./Tools/ci/generate_board_targets_json.py --group)" >> $GITHUB_OUTPUT + - id: set-seeders + name: Generate Seeder Matrix + run: echo "seeders=$(./Tools/ci/generate_board_targets_json.py --group --seeders)" >> $GITHUB_OUTPUT + - id: set-timestamp name: Save Current Timestamp run: echo "timestamp=$(date +"%Y%m%d%H%M%S")" >> $GITHUB_OUTPUT @@ -116,11 +115,52 @@ jobs: echo "${{ steps.set-branch.outputs.branchname }}" echo "$(./Tools/ci/generate_board_targets_json.py --group --verbose)" + # =========================================================================== + # CACHE SEEDER JOBS + # =========================================================================== + # Build one representative target per chip family to warm the ccache. + # Matrix jobs fall back to these caches via restore-keys when no + # group-specific cache exists yet. If any seeder fails, the build matrix + # does not start, catching common build errors early. + # =========================================================================== + + seed: + name: Seed [${{ matrix.chip_family }}] + needs: group_targets + runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + strategy: + matrix: ${{ fromJson(needs.group_targets.outputs.seeders) }} + fail-fast: false + container: + image: ${{ matrix.container }} + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: runs-on/action@v2 + - uses: actions/checkout@v6 + with: + fetch-depth: 1 + - name: Configure Git Safe Directory + run: git config --system --add safe.directory '*' + - uses: ./.github/actions/setup-ccache + id: ccache + with: + cache-key-prefix: ccache-${{ matrix.chip_family }}-${{ matrix.runner }}-seeder + max-size: 400M + - name: Build seed target + run: make ${{ matrix.target }} + - uses: ./.github/actions/save-ccache + if: always() + with: + cache-primary-key: ${{ steps.ccache.outputs.cache-primary-key }} + setup: name: Build [${{ matrix.runner }}][${{ matrix.group }}] # runs-on: ubuntu-latest - runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false] - needs: group_targets + runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + needs: [group_targets, seed] + if: "!failure() && !cancelled()" strategy: matrix: ${{ fromJson(needs.group_targets.outputs.matrix) }} fail-fast: false @@ -137,34 +177,29 @@ jobs: - name: Configure Git Safe Directory run: git config --system --add safe.directory '*' - # ccache key breakdown: - # ccache---- - # ccache---- - # ccache---- - - name: Cache Restore from Key - id: cc_restore + - name: Cache - Restore ccache + id: ccache-restore uses: actions/cache/restore@v5 with: path: ~/.ccache - key: ${{ format('ccache-{0}-{1}-{2}', runner.os, matrix.runner, matrix.group) }} + key: ccache-${{ matrix.chip_family }}-${{ matrix.runner }}-${{ matrix.group }}-${{ github.ref_name }}-${{ github.sha }} restore-keys: | - ccache-${{ runner.os }}-${{ matrix.runner }}-${{ matrix.group }}- - ccache-${{ runner.os }}-${{ matrix.runner }}- - ccache-${{ runner.os }}-${{ matrix.runner }}- - ccache-${{ runner.os }}- - ccache- + ccache-${{ matrix.chip_family }}-${{ matrix.runner }}-${{ matrix.group }}-${{ github.ref_name }}- + ccache-${{ matrix.chip_family }}-${{ matrix.runner }}-${{ matrix.group }}-${{ github.base_ref || 'main' }}- + ccache-${{ matrix.chip_family }}-${{ matrix.runner }}-${{ matrix.group }}- + ccache-${{ matrix.chip_family }}-${{ matrix.runner }}- - - name: Cache Config and Stats + - name: Cache - Configure ccache run: | - mkdir -p ~/.ccache - echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - echo "compression_level = 6" >> ~/.ccache/ccache.conf - echo "max_size = 120M" >> ~/.ccache/ccache.conf - echo "hash_dir = false" >> ~/.ccache/ccache.conf - echo "compiler_check = content" >> ~/.ccache/ccache.conf - ccache -s - ccache -z + mkdir -p ~/.ccache + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf + echo "compression = true" >> ~/.ccache/ccache.conf + echo "compression_level = 6" >> ~/.ccache/ccache.conf + echo "max_size = ${{ matrix.cache_size }}" >> ~/.ccache/ccache.conf + echo "hash_dir = false" >> ~/.ccache/ccache.conf + echo "compiler_check = content" >> ~/.ccache/ccache.conf + ccache -s + ccache -z - name: Building Artifacts for [${{ matrix.targets }}] run: | @@ -180,18 +215,10 @@ jobs: name: px4_${{matrix.group}}_build_artifacts path: artifacts/ - - name: Cache Post Build Stats - if: always() - run: | - ccache -s - ccache -z - - - name: Cache Save - if: always() - uses: actions/cache/save@v5 + - uses: ./.github/actions/save-ccache + if: success() with: - path: ~/.ccache - key: ${{ steps.cc_restore.outputs.cache-primary-key }} + cache-primary-key: ${{ steps.ccache-restore.outputs.cache-primary-key }} # =========================================================================== # ARTIFACT UPLOAD JOB diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 70f07da62c..2416fb3611 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -60,7 +60,7 @@ jobs: if: always() && github.event_name == 'pull_request' run: | mkdir -p pr-review - git diff -U0 origin/${{ github.base_ref }}...HEAD \ + git diff -U0 origin/${{ github.base_ref }}...HEAD -- ':!*/test/*' \ | clang-tidy-diff-18.py -p1 \ -path build/px4_sitl_default-clang \ -export-fixes pr-review/fixes.yml \ @@ -78,7 +78,7 @@ jobs: --pr-number "${{ github.event.pull_request.number }}" \ --commit-sha "${{ github.event.pull_request.head.sha }}" \ --out-dir pr-review \ - --event REQUEST_CHANGES + --event COMMENT - name: Upload pr-review artifact if: always() && github.event_name == 'pull_request' diff --git a/.github/workflows/pr-review-poster.yml b/.github/workflows/pr-review-poster.yml index e71f647d1f..a5651fb239 100644 --- a/.github/workflows/pr-review-poster.yml +++ b/.github/workflows/pr-review-poster.yml @@ -25,9 +25,11 @@ name: PR Review Poster # 2. `pr_number` is validated to be a positive integer before use. # `marker` is validated to be printable ASCII only before use. # `commit_sha` is validated to be 40 lowercase hex characters. -# `event` is validated against an allowlist of `COMMENT` and -# `REQUEST_CHANGES`. `APPROVE` is intentionally forbidden so a bot -# cannot approve a pull request. Validation happens inside +# `event` is validated against an allowlist of `COMMENT` only. +# `APPROVE` and `REQUEST_CHANGES` are intentionally forbidden: +# bots should not approve PRs, and REQUEST_CHANGES reviews cannot +# be dismissed by the GITHUB_TOKEN under branch protection rules. +# Validation happens inside # Tools/ci/pr-review-poster.py which is checked out from the base # branch, not from the artifact. # @@ -71,7 +73,7 @@ name: PR Review Poster # { # "pr_number": 12345, // required, int > 0 # "marker": "", // required, printable ASCII -# "event": "REQUEST_CHANGES", // required, "COMMENT" | "REQUEST_CHANGES" +# "event": "COMMENT", // required, "COMMENT" only # "commit_sha": "0123456789abcdef0123456789abcdef01234567", // required, 40 hex chars # "summary": "Optional review summary text" // optional # } diff --git a/.gitignore b/.gitignore index fc09c23fb8..9f78108fa2 100644 --- a/.gitignore +++ b/.gitignore @@ -115,3 +115,6 @@ _emscripten_sdk/ # virtual Python environment .venv + +# Claude Code local settings +.claude/settings.local.json diff --git a/Tools/ci/build_all_config.yml b/Tools/ci/build_all_config.yml new file mode 100644 index 0000000000..b53f8ff6c6 --- /dev/null +++ b/Tools/ci/build_all_config.yml @@ -0,0 +1,71 @@ +# Build All Targets CI Configuration +# +# Controls board grouping, cache sizes, runner specs, and seeder targets +# for the build_all_targets workflow. Forks can customize this file to +# adjust for their infrastructure (e.g., lower cache sizes for GitHub's +# 10GB cache limit, fewer CPU cores for smaller runners). + +# Container images +containers: + default: "ghcr.io/px4/px4-dev:v1.17.0-rc2" + voxl2: "ghcr.io/px4/px4-dev-voxl2:v1.7" + +# Runner specs +runners: + seeder_cpu: 8 + matrix_cpu: 4 + +# Default ccache max-size for build groups +cache: + default_size: "400M" + # Per-chip overrides for groups with many diverse boards + chip_sizes: + stm32h7: "800M" + stm32f4: "800M" + stm32f7: "800M" + imxrt: "800M" + +# Board grouping limits +grouping: + # Max targets per group, tuned for ~10 min wall-clock with warm cache + chip_split_limits: + stm32h7: 10 + stm32f7: 12 + stm32f4: 20 + stm32f1: 39 + imxrt: 12 + kinetis: 14 + s32k: 17 + rp2040: 10 + special: 10 + native: 17 + default_split_limit: 12 + # Minimum targets for a manufacturer to get a named group + lower_limit: 3 + # If last chunk has fewer targets than this, merge into previous chunk + merge_back_threshold: 5 + +# Labels that isolate builds into the "special" group +special_labels: + - lto + - protected + +# NXP chip families are pooled under "nxp-{chip}" regardless of board directory +nxp_chip_families: + - imxrt + - kinetis + - s32k + +# Seeder targets: one representative build per chip family +seeders: + stm32h7: "px4_fmu-v6x_default" + stm32f7: "px4_fmu-v5_default" + stm32f4: "px4_fmu-v4_default" + stm32f1: "px4_io-v2_default" + imxrt: "nxp_mr-tropic_default" + kinetis: "nxp_fmuk66-v3_default" + s32k: "nxp_mr-canhubk3_default" + rp2040: "raspberrypi_pico_default" + special: "px4_fmu-v6x_default" + native: "px4_sitl_default" + voxl2: "modalai_voxl2_default" diff --git a/Tools/ci/build_all_runner.sh b/Tools/ci/build_all_runner.sh index 2d81de2c6a..a47d42dd87 100755 --- a/Tools/ci/build_all_runner.sh +++ b/Tools/ci/build_all_runner.sh @@ -3,7 +3,6 @@ # Please only modify if you know what you are doing set -e -echo "### :clock1: Build Times" >> $GITHUB_STEP_SUMMARY targets=$1 for target in ${targets//,/ } do @@ -14,6 +13,5 @@ do diff=$(($stop-$start)) build_time="$(($diff /60/60))h $(($diff /60))m $(($diff % 60))s elapsed" echo -e "\033[0;32mBuild Time: [$build_time]" - echo "* **$target** - $build_time" >> $GITHUB_STEP_SUMMARY echo "::endgroup::" done diff --git a/Tools/ci/generate_board_targets_json.py b/Tools/ci/generate_board_targets_json.py index 1c73c5bb8d..922c051aaf 100755 --- a/Tools/ci/generate_board_targets_json.py +++ b/Tools/ci/generate_board_targets_json.py @@ -16,6 +16,7 @@ kconf.warn_assign_override = False kconf.warn_assign_redun = False source_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..') +boards_dir = os.path.join(source_dir, '..', 'boards') parser = argparse.ArgumentParser(description='Generate build targets') @@ -26,6 +27,8 @@ parser.add_argument('-p', '--pretty', dest='pretty', action='store_true', parser.add_argument('-g', '--groups', dest='group', action='store_true', help='Groups targets') parser.add_argument('-f', '--filter', dest='filter', help='comma separated list of build target name prefixes to include instead of all e.g. "px4_fmu-v5_"') +parser.add_argument('-s', '--seeders', dest='seeders', action='store_true', + help='Output seeder matrix JSON (one entry per chip family)') args = parser.parse_args() verbose = args.verbose @@ -35,8 +38,14 @@ if args.filter: for target in args.filter.split(','): target_filter.append(target) -default_container = 'ghcr.io/px4/px4-dev:v1.16.0-rc1-258-g0369abd556' -voxl2_container = 'ghcr.io/px4/px4-dev-voxl2:v1.5' +# Load CI configuration from YAML +import yaml +ci_config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'build_all_config.yml') +with open(ci_config_path) as f: + ci_config = yaml.safe_load(f) + +default_container = ci_config['containers']['default'] +voxl2_container = ci_config['containers']['voxl2'] build_configs = [] grouped_targets = {} excluded_boards = ['px4_ros2', 'espressif_esp32'] # TODO: fix and enable @@ -56,6 +65,71 @@ excluded_labels = [ 'uavcanv1', # TODO: fix and enable ] +# Labels that mark isolated/special builds (poor cache reuse with normal builds) +special_labels = ci_config.get('special_labels', ['lto', 'protected']) + +def detect_chip_family(manufacturer_name, board_name, label): + """Detect the chip family for a board by reading its NuttX defconfig. + + Returns a chip family string used for cache grouping: + stm32h7, stm32f7, stm32f4, stm32f1, imxrt, kinetis, s32k, rp2040, native, special + """ + # Special labels get their own group regardless of chip + if label in special_labels: + return 'special' + + board_path = os.path.join(boards_dir, manufacturer_name, board_name) + nsh_defconfig = os.path.join(board_path, 'nuttx-config', 'nsh', 'defconfig') + + if not os.path.exists(nsh_defconfig): + # Try bootloader defconfig as fallback + bl_defconfig = os.path.join(board_path, 'nuttx-config', 'bootloader', 'defconfig') + if os.path.exists(bl_defconfig): + nsh_defconfig = bl_defconfig + else: + return 'native' + + arch_chip = None + specific_chip = None + + with open(nsh_defconfig) as f: + for line in f: + line = line.strip() + if line.startswith('CONFIG_ARCH_CHIP='): + arch_chip = line.split('=')[1].strip('"') + elif line.startswith('CONFIG_ARCH_CHIP_STM32F') and line.endswith('=y'): + specific_chip = line.split('=')[0].replace('CONFIG_ARCH_CHIP_', '') + + if arch_chip is None: + return 'native' + + # Direct matches for chips that have unique CONFIG_ARCH_CHIP values + if arch_chip == 'stm32h7': + return 'stm32h7' + elif arch_chip == 'stm32f7': + return 'stm32f7' + elif arch_chip == 'imxrt': + return 'imxrt' + elif arch_chip == 'kinetis': + return 'kinetis' + elif arch_chip.startswith('s32k'): + return 's32k' + elif arch_chip == 'rp2040': + return 'rp2040' + elif arch_chip == 'stm32': + # Disambiguate STM32 sub-families using specific chip define + if specific_chip: + if specific_chip.startswith('STM32F1'): + return 'stm32f1' + elif specific_chip.startswith('STM32F4'): + return 'stm32f4' + else: + return 'stm32f4' # Default STM32 to F4 + return 'stm32f4' + else: + return 'native' + +target_chip_families = {} # target_name -> chip_family mapping github_action_config = { 'include': build_configs } extra_args = {} if args.pretty: @@ -66,11 +140,21 @@ def chunks(arr, size): for i in range(0, len(arr), size): yield arr[i:i + size] +MERGE_BACK_THRESHOLD = 5 + +def chunks_merged(arr, size): + """Split array into chunks, merging the last chunk back if it's too small.""" + result = list(chunks(arr, size)) + if len(result) > 1 and len(result[-1]) < MERGE_BACK_THRESHOLD: + result[-2] = result[-2] + result[-1] + result.pop() + return result + def comma_targets(targets): # turns array of targets into a comma split string return ",".join(targets) -def process_target(px4board_file, target_name): +def process_target(px4board_file, target_name, manufacturer_name=None, board_dir_name=None, label=None): # reads through the board file and grabs # useful information for building ret = None @@ -107,6 +191,16 @@ def process_target(px4board_file, target_name): if board_name in board_container_overrides: container = board_container_overrides[board_name] + # Detect chip family for cache grouping + chip_family = 'native' + if manufacturer_name and board_dir_name: + if platform == 'nuttx': + chip_family = detect_chip_family(manufacturer_name, board_dir_name, label or '') + elif board_name in board_container_overrides or platform in platform_container_overrides: + chip_family = 'native' # voxl2/qurt targets + else: + chip_family = 'native' + # Boards with container overrides get their own group if board_name in board_container_overrides or platform in platform_container_overrides: group = 'voxl2' @@ -124,7 +218,7 @@ def process_target(px4board_file, target_name): else: if verbose: print(f'unmatched platform: {platform}') - ret = {'target': target_name, 'container': container} + ret = {'target': target_name, 'container': container, 'chip_family': chip_family} if(args.group): ret['arch'] = group @@ -147,6 +241,8 @@ grouped_targets['base']['container'] = default_container grouped_targets['base']['manufacturers'] = {} grouped_targets['base']['manufacturers']['px4'] = [] grouped_targets['base']['manufacturers']['px4'] += metadata_targets +for mt in metadata_targets: + target_chip_families[mt] = 'native' for manufacturer in sorted(os.scandir(os.path.join(source_dir, '../boards')), key=lambda e: e.name): if not manufacturer.is_dir(): @@ -177,7 +273,10 @@ for manufacturer in sorted(os.scandir(os.path.join(source_dir, '../boards')), ke if label in excluded_labels: if verbose: print(f'excluding label {label} ({target_name})') continue - target = process_target(files.path, target_name) + target = process_target(files.path, target_name, + manufacturer_name=manufacturer.name, + board_dir_name=board.name, + label=label) if (args.group and target is not None): if (target['arch'] not in grouped_targets): grouped_targets[target['arch']] = {} @@ -186,6 +285,7 @@ for manufacturer in sorted(os.scandir(os.path.join(source_dir, '../boards')), ke if(manufacturer.name not in grouped_targets[target['arch']]['manufacturers']): grouped_targets[target['arch']]['manufacturers'][manufacturer.name] = [] grouped_targets[target['arch']]['manufacturers'][manufacturer.name].append(target_name) + target_chip_families[target_name] = target['chip_family'] if target is not None: build_configs.append(target) @@ -246,6 +346,9 @@ for manufacturer in sorted(os.scandir(os.path.join(source_dir, '../boards')), ke if manufacturer.name not in grouped_targets[group]['manufacturers']: grouped_targets[group]['manufacturers'][manufacturer.name] = [] grouped_targets[group]['manufacturers'][manufacturer.name].append(deb_target) + # Inherit chip_family from the default target + default_chip = target_chip_families.get(default_target, 'native') + target_chip_families[deb_target] = default_chip build_configs.append(target_entry) if(verbose): @@ -261,109 +364,227 @@ if(verbose): print("===================") if (args.group): - # if we are using this script for grouping builds - # we loop trough the manufacturers list and split their targets - # if a manufacturer has more than a LIMIT of boards then we split that - # into sub groups such as "arch-manufacturer name-index" - # example: - # nuttx-px4-0 - # nuttx-px4-1 - # nuttx-px4-2 - # nuttx-ark-0 - # nuttx-ark-1 - # if the manufacturer doesn't have more targets than LIMIT then we add - # them to a generic group with the following structure "arch-index" - # example: - # nuttx-0 - # nuttx-1 + # Group targets by chip family for better ccache reuse. + # Targets sharing the same MCU family (e.g. stm32h7) benefit from + # a shared ccache seed since they compile the same NuttX kernel and HAL. + # + # Grouping strategy: + # 1. Collect all targets per (arch, chip_family, manufacturer) + # 2. Within each chip_family, large manufacturers get their own groups + # named "{manufacturer}-{chip_family}[-N]" + # 3. Small manufacturers are merged into "misc-{chip_family}[-N]" + # 4. Special groups: "special" (lto/protected/allyes), "io" (stm32f1), + # "voxl2-0" (unchanged) + # 5. Non-NuttX groups: "base-N", "aarch64-N", "armhf-N" (unchanged) final_groups = [] - last_man = '' - last_arch = '' - SPLIT_LIMIT = 10 - LOWER_LIMIT = 5 + # Load grouping and cache config + grouping_config = ci_config.get('grouping', {}) + CHIP_SPLIT_LIMITS = grouping_config.get('chip_split_limits', {}) + DEFAULT_SPLIT_LIMIT = grouping_config.get('default_split_limit', 12) + LOWER_LIMIT = grouping_config.get('lower_limit', 3) + + cache_config = ci_config.get('cache', {}) + DEFAULT_CACHE_SIZE = cache_config.get('default_size', '400M') + CHIP_CACHE_SIZES = cache_config.get('chip_sizes', {}) + if(verbose): print(f'=:Architectures: [{grouped_targets.keys()}]') + for arch in grouped_targets: - runner = 'x64' if arch in ('nuttx', 'voxl2') else 'arm64' + runner = 'x64' + # armhf and aarch64 Linux boards need the arm64 container image + # which ships the arm-linux-gnueabihf and aarch64-linux-gnu cross compilers + # (the x64 container image does not include them) + if arch in ('armhf', 'aarch64'): + runner = 'arm64' if(verbose): print(f'=:Processing: [{arch}]') - temp_group = [] - for man in grouped_targets[arch]['manufacturers']: - if(verbose): - print(f'=:Processing: [{arch}][{man}]') - man_len = len(grouped_targets[arch]['manufacturers'][man]) - if(man_len > LOWER_LIMIT and man_len < (SPLIT_LIMIT + 1)): - # Manufacturers can have their own group + + if arch == 'nuttx': + # Re-bucket NuttX targets by chip_family then manufacturer + chip_man_buckets = {} # (chip_family, manufacturer) -> [target_names] + for man in grouped_targets[arch]['manufacturers']: + for target in grouped_targets[arch]['manufacturers'][man]: + chip = target_chip_families.get(target, 'native') + key = (chip, man) + if key not in chip_man_buckets: + chip_man_buckets[key] = [] + chip_man_buckets[key].append(target) + + # Collect all chip families present + chip_families_seen = sorted(set(k[0] for k in chip_man_buckets.keys())) + + for chip in chip_families_seen: + SPLIT_LIMIT = CHIP_SPLIT_LIMITS.get(chip, DEFAULT_SPLIT_LIMIT) + # Special naming for certain chip families + if chip == 'special': + chip_label = 'special' + elif chip == 'stm32f1': + chip_label = 'io' + elif chip == 'rp2040': + chip_label = 'special' # rp2040 goes into special group + else: + chip_label = chip + + # Gather all (manufacturer -> targets) for this chip family + # NXP chip families (imxrt, kinetis, s32k) pool all manufacturers + # under "nxp" since all boards use NXP silicon regardless of + # which directory they live in (e.g., px4/fmu-v6xrt is imxrt). + nxp_chips = tuple(ci_config.get('nxp_chip_families', ['imxrt', 'kinetis', 's32k'])) + man_targets = {} + for (c, m), targets in chip_man_buckets.items(): + if c == chip: + man_key = 'nxp' if chip in nxp_chips else m + if man_key not in man_targets: + man_targets[man_key] = [] + man_targets[man_key].extend(targets) + + # Merge rp2040 targets into a flat list for the special group + if chip in ('special', 'rp2040'): + all_targets = [] + for m in sorted(man_targets.keys()): + all_targets.extend(man_targets[m]) + # These get added to the special bucket below + # We'll handle after the chip loop + continue + if(verbose): - print(f'=:Processing: [{arch}][{man}][{man_len}]==Manufacturers can have their own group') - group_name = arch + "-" + man - targets = comma_targets(grouped_targets[arch]['manufacturers'][man]) - final_groups.append({ - "container": grouped_targets[arch]['container'], - "targets": targets, - "arch": arch, - "runner": runner, - "group": group_name, - "len": len(grouped_targets[arch]['manufacturers'][man]) - }) - elif(man_len >= (SPLIT_LIMIT + 1)): - # Split big man groups into subgroups - # example: Pixhawk - if(verbose): - print(f'=:Processing: [{arch}][{man}][{man_len}]==Manufacturers has multiple own groups') - chunk_limit = SPLIT_LIMIT + print(f'=:Processing chip_family: [{chip}] ({chip_label})') + + # Split into large-manufacturer groups and misc groups + # For NXP-exclusive chip families, always use the nxp name + # regardless of target count (there's no other manufacturer to pool with) + force_named = chip in nxp_chips + temp_group = [] # small manufacturers pooled here + for man in sorted(man_targets.keys()): + man_len = len(man_targets[man]) + if (force_named or man_len > LOWER_LIMIT) and man_len <= SPLIT_LIMIT: + group_name = f"{man}-{chip_label}" + if(verbose): + print(f'=: [{man}][{man_len}] -> {group_name}') + final_groups.append({ + "container": grouped_targets[arch]['container'], + "targets": comma_targets(man_targets[man]), + "arch": arch, + "chip_family": chip, + "runner": runner, + "group": group_name, + "len": man_len, + }) + elif man_len > SPLIT_LIMIT: + chunk_counter = 0 + for chunk in chunks_merged(man_targets[man], SPLIT_LIMIT): + group_name = f"{man}-{chip_label}-{chunk_counter}" + if(verbose): + print(f'=: [{man}][{man_len}] -> {group_name} ({len(chunk)})') + final_groups.append({ + "container": grouped_targets[arch]['container'], + "targets": comma_targets(chunk), + "arch": arch, + "chip_family": chip, + "runner": runner, + "group": group_name, + "len": len(chunk), + }) + chunk_counter += 1 + else: + if(verbose): + print(f'=: [{man}][{man_len}] -> misc pool') + temp_group.extend(man_targets[man]) + + # Emit misc groups for small manufacturers + if temp_group: + misc_chunks = chunks_merged(temp_group, SPLIT_LIMIT) + num_misc_chunks = len(misc_chunks) + chunk_counter = 0 + for chunk in misc_chunks: + if num_misc_chunks == 1: + group_name = f"misc-{chip_label}" + else: + group_name = f"misc-{chip_label}-{chunk_counter}" + if(verbose): + print(f'=: [misc][{len(chunk)}] -> {group_name}') + final_groups.append({ + "container": grouped_targets[arch]['container'], + "targets": comma_targets(chunk), + "arch": arch, + "chip_family": chip, + "runner": runner, + "group": group_name, + "len": len(chunk), + }) + chunk_counter += 1 + + # Now handle special + rp2040 targets + SPLIT_LIMIT = CHIP_SPLIT_LIMITS.get('special', DEFAULT_SPLIT_LIMIT) + special_targets = [] + for (c, m), targets in chip_man_buckets.items(): + if c in ('special', 'rp2040'): + special_targets.extend(targets) + if special_targets: chunk_counter = 0 - for chunk in chunks(grouped_targets[arch]['manufacturers'][man], chunk_limit): - group_name = arch + "-" + man + "-" + str(chunk_counter) - targets = comma_targets(chunk) + for chunk in chunks_merged(special_targets, SPLIT_LIMIT): + if len(special_targets) <= SPLIT_LIMIT: + group_name = 'special' + else: + group_name = f'special-{chunk_counter}' + if(verbose): + print(f'=: [special][{len(chunk)}] -> {group_name}') final_groups.append({ "container": grouped_targets[arch]['container'], - "targets": targets, + "targets": comma_targets(chunk), "arch": arch, + "chip_family": "special", "runner": runner, "group": group_name, "len": len(chunk), }) chunk_counter += 1 - else: - if(verbose): - print(f'=:Processing: [{arch}][{man}][{man_len}]==Manufacturers too small group with others') - temp_group.extend(grouped_targets[arch]['manufacturers'][man]) - temp_len = len(temp_group) - chunk_counter = 0 - if(temp_len > 0 and temp_len < (SPLIT_LIMIT + 1)): - if(verbose): - print(f'=:Processing: [{arch}][orphan][{temp_len}]==Leftover arch can have their own group') - group_name = arch + "-" + str(chunk_counter) - targets = comma_targets(temp_group) - final_groups.append({ - "container": grouped_targets[arch]['container'], - "targets": targets, - "arch": arch, - "runner": runner, - "group": group_name, - "len": temp_len - }) - elif(temp_len >= (SPLIT_LIMIT + 1)): - # Split big man groups into subgroups - # example: Pixhawk - if(verbose): - print(f'=:Processing: [{arch}][orphan][{temp_len}]==Leftover arch can has multpile group') - chunk_limit = SPLIT_LIMIT - chunk_counter = 0 - for chunk in chunks(temp_group, chunk_limit): - group_name = arch + "-" + str(chunk_counter) - targets = comma_targets(chunk) + elif arch == 'voxl2': + # VOXL2 stays as its own group + all_targets = [] + for man in grouped_targets[arch]['manufacturers']: + all_targets.extend(grouped_targets[arch]['manufacturers'][man]) + if all_targets: final_groups.append({ "container": grouped_targets[arch]['container'], - "targets": targets, + "targets": comma_targets(all_targets), "arch": arch, + "chip_family": "native", "runner": runner, - "group": group_name, - "len": len(chunk), + "group": "voxl2-0", + "len": len(all_targets), }) - chunk_counter += 1 + + else: + # Non-NuttX groups (base, aarch64, armhf) - keep simple grouping + SPLIT_LIMIT = CHIP_SPLIT_LIMITS.get('native', DEFAULT_SPLIT_LIMIT) + all_targets = [] + for man in grouped_targets[arch]['manufacturers']: + all_targets.extend(grouped_targets[arch]['manufacturers'][man]) + if all_targets: + chunk_counter = 0 + for chunk in chunks_merged(all_targets, SPLIT_LIMIT): + if len(all_targets) <= SPLIT_LIMIT: + group_name = f"{arch}-0" + else: + group_name = f"{arch}-{chunk_counter}" + final_groups.append({ + "container": grouped_targets[arch]['container'], + "targets": comma_targets(chunk), + "arch": arch, + "chip_family": "native", + "runner": runner, + "group": group_name, + "len": len(chunk), + }) + chunk_counter += 1 + + # Add cache_size to each group based on chip family + for g in final_groups: + g['cache_size'] = CHIP_CACHE_SIZES.get(g['chip_family'], DEFAULT_CACHE_SIZE) + if(verbose): import pprint print("================") @@ -375,6 +596,58 @@ if (args.group): print("= JSON output =") print("===============") - print(json.dumps({ "include": final_groups }, **extra_args)) + if args.seeders: + # Generate one seeder entry per chip family present in the groups. + # Each seeder builds a representative target to warm the ccache for + # all groups sharing that chip family. + seeder_targets = ci_config.get('seeders', {}) + seeder_containers = { + 'native': default_container, + } + # Determine which chip families actually have groups + active_families = set() + for g in final_groups: + cf = g['chip_family'] + active_families.add(cf) + # voxl2 gets its own seeder with a different container + if g['group'].startswith('voxl2'): + active_families.add('voxl2') + + seeders = [] + for cf in sorted(active_families): + if cf == 'special': + continue # special group seeds from stm32h7 + if cf == 'voxl2': + seeders.append({ + 'chip_family': 'voxl2', + 'target': 'modalai_voxl2_default', + 'container': voxl2_container, + 'runner': 'x64', + }) + elif cf == 'native': + # One seeder per runner arch that has native groups (exclude voxl2 + # which has its own seeder with a different container) + native_runners = set() + for g in final_groups: + if g['chip_family'] == 'native' and not g['group'].startswith('voxl2'): + native_runners.add(g['runner']) + for r in sorted(native_runners): + seeders.append({ + 'chip_family': 'native', + 'target': seeder_targets['native'], + 'container': default_container, + 'runner': r, + }) + else: + seeders.append({ + 'chip_family': cf, + 'target': seeder_targets.get(cf, seeder_targets['stm32h7']), + 'container': seeder_containers.get(cf, default_container), + 'runner': 'x64', + }) + + print(json.dumps({ "include": seeders }, **extra_args)) + else: + print(json.dumps({ "include": final_groups }, **extra_args)) else: print(json.dumps(github_action_config, **extra_args)) diff --git a/Tools/ci/pr-review-poster.py b/Tools/ci/pr-review-poster.py index 9e91a33eeb..f46f8616a6 100644 --- a/Tools/ci/pr-review-poster.py +++ b/Tools/ci/pr-review-poster.py @@ -20,7 +20,7 @@ Artifact contract (directory passed on the command line): { "pr_number": 12345, (required, int > 0) "marker": "", (required, printable ASCII) - "event": "REQUEST_CHANGES", (required, "COMMENT" | "REQUEST_CHANGES") + "event": "COMMENT", (required, "COMMENT" only) "commit_sha": "0123456789abcdef0123456789abcdef01234567",(required, 40 hex chars) "summary": "Optional review body text" (optional) } @@ -34,8 +34,10 @@ Artifact contract (directory passed on the command line): "side": "RIGHT", "start_side": "RIGHT", "body": "..."} ] -Note: an `APPROVE` event is intentionally NOT supported. Bots should never -approve a pull request. +Note: `APPROVE` and `REQUEST_CHANGES` events are intentionally NOT +supported. Bots should never approve a pull request, and REQUEST_CHANGES +cannot be dismissed by the GITHUB_TOKEN when branch protection restricts +review dismissals, leading to undismissable spam on every push. Security: this script is run in a write-token context from a workflow that MUST NOT check out PR code. Both manifest.json and comments.json are @@ -90,7 +92,7 @@ COMMENTS_PER_REVIEW = 10 # and cuts user-visible latency. SLEEP_BETWEEN_CHUNKS_SECONDS = 5 -ACCEPTED_EVENTS = ('COMMENT', 'REQUEST_CHANGES') +ACCEPTED_EVENTS = ('COMMENT',) ACCEPTED_SIDES = ('LEFT', 'RIGHT') COMMIT_SHA_RE = re.compile(r'^[0-9a-f]{40}$') @@ -194,8 +196,9 @@ def validate_manifest(directory): event = manifest.get('event') if event not in ACCEPTED_EVENTS: - _fail('event must be one of {} (got {!r}). APPROVE is intentionally ' - 'forbidden.'.format(', '.join(ACCEPTED_EVENTS), event)) + _fail('event must be one of {} (got {!r}). APPROVE and ' + 'REQUEST_CHANGES are intentionally forbidden.'.format( + ', '.join(ACCEPTED_EVENTS), event)) commit_sha = manifest.get('commit_sha') if not isinstance(commit_sha, str) or not COMMIT_SHA_RE.match(commit_sha): @@ -254,13 +257,17 @@ def find_stale_reviews(client, repo, pr_number, marker): def dismiss_stale_reviews(client, repo, pr_number, marker): - """Dismiss (or, for PENDING reviews, delete) every stale matching review.""" + """Dismiss (or, for PENDING reviews, delete) every stale matching review. + + Returns the number of reviews that could NOT be dismissed (still active). + """ dismissal_message = 'Superseded by a newer run' + failed_dismissals = 0 for review_id, state in find_stale_reviews(client, repo, pr_number, marker): if review_id is None: continue - if state == 'DISMISSED': - # Already inert; nothing to do. + if state in ('DISMISSED', 'COMMENTED'): + # Already inert or non-blocking; nothing to do. continue if state == 'PENDING': # PENDING reviews cannot be dismissed; they must be deleted. @@ -271,8 +278,7 @@ def dismiss_stale_reviews(client, repo, pr_number, marker): 'repos/{}/pulls/{}/reviews/{}'.format( repo, pr_number, review_id)) except RuntimeError as e: - # Don't abort the run on dismissal failure: the new review - # will still be posted. + failed_dismissals += 1 print('warning: failed to delete pending review {}: {}'.format( review_id, e), file=sys.stderr) continue @@ -288,8 +294,10 @@ def dismiss_stale_reviews(client, repo, pr_number, marker): }, ) except RuntimeError as e: + failed_dismissals += 1 print('warning: failed to dismiss review {}: {}'.format( review_id, e), file=sys.stderr) + return failed_dismissals # --------------------------------------------------------------------------- @@ -417,12 +425,17 @@ def cmd_post(args): try: client = _github_helpers.GitHubClient(token, user_agent=USER_AGENT) - dismiss_stale_reviews( + undismissed = dismiss_stale_reviews( client=client, repo=repo, pr_number=result['pr_number'], marker=result['marker'], ) + + if undismissed > 0: + print('{} prior review(s) could not be dismissed (likely ' + 'branch protection).'.format(undismissed)) + post_review( client=client, repo=repo, diff --git a/boards/holybro/kakuteh7mini/extras/holybro_kakuteh7mini_bootloader.bin b/boards/holybro/kakuteh7mini/extras/holybro_kakuteh7mini_bootloader.bin index 4efdeb5b21..b2112eb720 100755 Binary files a/boards/holybro/kakuteh7mini/extras/holybro_kakuteh7mini_bootloader.bin and b/boards/holybro/kakuteh7mini/extras/holybro_kakuteh7mini_bootloader.bin differ diff --git a/boards/xc-fly/xc-slam/bootloader.px4board b/boards/xc-fly/xc-slam/bootloader.px4board deleted file mode 100644 index 19b6e662be..0000000000 --- a/boards/xc-fly/xc-slam/bootloader.px4board +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_ROMFSROOT="" diff --git a/boards/xc-fly/xc-slam/default.px4board b/boards/xc-fly/xc-slam/default.px4board deleted file mode 100644 index 77fa872875..0000000000 --- a/boards/xc-fly/xc-slam/default.px4board +++ /dev/null @@ -1,89 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0" -CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS1" -CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3" -CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" -CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS7" -CONFIG_BOARD_SERIAL_RC="/dev/ttyS4" -CONFIG_BOARD_SERIAL_EXT2="/dev/ttyS2" -CONFIG_DRIVERS_ADC_BOARD_ADC=y -CONFIG_DRIVERS_BAROMETER_DPS310=y -CONFIG_DRIVERS_CAMERA_CAPTURE=y -CONFIG_DRIVERS_CAMERA_TRIGGER=y -CONFIG_DRIVERS_CDCACM_AUTOSTART=y -CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y -CONFIG_DRIVERS_DISTANCE_SENSOR_TF02PRO=y -CONFIG_DRIVERS_DISTANCE_SENSOR_TFMINI=y -CONFIG_DRIVERS_DSHOT=y -CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_IMU_BOSCH_BMI088=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y -CONFIG_DRIVERS_MAGNETOMETER_ISENTEK_IST8310=y -CONFIG_DRIVERS_MAGNETOMETER_QMC5883L=y -CONFIG_DRIVERS_PWM_OUT=y -CONFIG_DRIVERS_RC_INPUT=y -CONFIG_COMMON_TELEMETRY=y -CONFIG_DRIVERS_TONE_ALARM=y -CONFIG_DRIVERS_UAVCAN=y -CONFIG_BOARD_UAVCAN_INTERFACES=1 -CONFIG_MODULES_BATTERY_STATUS=y -CONFIG_MODULES_CAMERA_FEEDBACK=y -CONFIG_MODULES_COMMANDER=y -CONFIG_MODULES_CONTROL_ALLOCATOR=y -CONFIG_MODULES_DATAMAN=y -CONFIG_MODULES_EKF2=y -CONFIG_MODULES_ESC_BATTERY=y -CONFIG_MODULES_EVENTS=y -CONFIG_MODULES_FLIGHT_MODE_MANAGER=y -CONFIG_MODULES_FW_ATT_CONTROL=y -CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y -CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y -CONFIG_MODULES_FW_MODE_MANAGER=y -CONFIG_MODULES_FW_RATE_CONTROL=y -CONFIG_MODULES_GIMBAL=y -CONFIG_MODULES_GYRO_CALIBRATION=y -CONFIG_MODULES_GYRO_FFT=y -CONFIG_MODULES_LAND_DETECTOR=y -CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y -CONFIG_MODULES_LOAD_MON=y -CONFIG_MODULES_LOCAL_POSITION_ESTIMATOR=y -CONFIG_MODULES_LOGGER=y -CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y -CONFIG_MODULES_MANUAL_CONTROL=y -CONFIG_MODULES_MAVLINK=y -CONFIG_MODULES_MC_ATT_CONTROL=y -CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y -CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y -CONFIG_MODULES_MC_POS_CONTROL=y -CONFIG_MODULES_MC_RATE_CONTROL=y -CONFIG_MODULES_NAVIGATOR=y -CONFIG_MODULES_RC_UPDATE=y -CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=y -CONFIG_MODULES_VTOL_ATT_CONTROL=y -CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y -CONFIG_SYSTEMCMDS_BL_UPDATE=y -CONFIG_SYSTEMCMDS_DMESG=y -CONFIG_SYSTEMCMDS_DUMPFILE=y -CONFIG_SYSTEMCMDS_GPIO=y -CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y -CONFIG_SYSTEMCMDS_I2CDETECT=y -CONFIG_SYSTEMCMDS_LED_CONTROL=y -CONFIG_SYSTEMCMDS_MFT=y -CONFIG_SYSTEMCMDS_MTD=y -CONFIG_SYSTEMCMDS_NSHTERM=y -CONFIG_SYSTEMCMDS_PARAM=y -CONFIG_SYSTEMCMDS_PERF=y -CONFIG_SYSTEMCMDS_REBOOT=y -CONFIG_SYSTEMCMDS_SD_BENCH=y -CONFIG_SYSTEMCMDS_SD_STRESS=y -CONFIG_SYSTEMCMDS_SYSTEM_TIME=y -CONFIG_SYSTEMCMDS_TOP=y -CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y -CONFIG_SYSTEMCMDS_TUNE_CONTROL=y -CONFIG_SYSTEMCMDS_UORB=y -CONFIG_SYSTEMCMDS_USB_CONNECTED=y -CONFIG_SYSTEMCMDS_VER=y -CONFIG_SYSTEMCMDS_WORK_QUEUE=y -CONFIG_EXAMPLES_FAKE_GPS=y diff --git a/boards/xc-fly/xc-slam/extras/xc-fly_xc-slam_bootloader.bin b/boards/xc-fly/xc-slam/extras/xc-fly_xc-slam_bootloader.bin deleted file mode 100755 index b8f290f227..0000000000 Binary files a/boards/xc-fly/xc-slam/extras/xc-fly_xc-slam_bootloader.bin and /dev/null differ diff --git a/boards/xc-fly/xc-slam/firmware.prototype b/boards/xc-fly/xc-slam/firmware.prototype deleted file mode 100644 index 9d3f72a26b..0000000000 --- a/boards/xc-fly/xc-slam/firmware.prototype +++ /dev/null @@ -1,13 +0,0 @@ -{ - "board_id": 319, - "magic": "PX4FWv1", - "description": "Firmware for the XC-FLY board", - "image": "", - "build_time": 0, - "summary": "XC-FLY", - "version": "0.1", - "image_size": 0, - "image_maxsize": 1835008, - "git_identity": "", - "board_revision": 0 -} diff --git a/boards/xc-fly/xc-slam/init/rc.board_defaults b/boards/xc-fly/xc-slam/init/rc.board_defaults deleted file mode 100644 index 828c3f01ba..0000000000 --- a/boards/xc-fly/xc-slam/init/rc.board_defaults +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# -# board specific defaults -#------------------------------------------------------------------------------ -param set-default BAT1_A_PER_V 17 -param set-default BAT1_N_CELLS 4 -param set-default BAT1_V_CHARGED 4.2 -param set-default BAT1_V_DIV 10.1 -param set-default BAT1_V_EMPTY 3.2 - -param set-default SYS_HAS_MAG 1 -param set-default PWM_MAIN_TIM0 -4 -param set-default RC_INPUT_PROTO -1 - -param set-default IMU_GYRO_RATEMAX 2000 -param set-default SYS_AUTOSTART 4001 -param set-default MC_PITCHRATE_K 0.4 -param set-default MC_ROLLRATE_K 0.35 -param set-default MC_YAWRATE_K 1.2 -param set-default MC_YAWRATE_MAX 360 -param set-default MAV_TYPE 2 -param set-default CA_AIRFRAME 0 -param set-default CA_ROTOR_COUNT 4 -param set-default CBRK_SUPPLY_CHK 894281 - -param set-default USB_MAV_MODE 5 diff --git a/boards/xc-fly/xc-slam/init/rc.board_extras b/boards/xc-fly/xc-slam/init/rc.board_extras deleted file mode 100644 index a6f12267a3..0000000000 --- a/boards/xc-fly/xc-slam/init/rc.board_extras +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# -# board specific extras init -#------------------------------------------------------------------------------ - -# DShot telemetry is always on UART7 -# dshot telemetry -d /dev/ttyS5 diff --git a/boards/xc-fly/xc-slam/init/rc.board_sensors b/boards/xc-fly/xc-slam/init/rc.board_sensors deleted file mode 100644 index 4f27cd2cf3..0000000000 --- a/boards/xc-fly/xc-slam/init/rc.board_sensors +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# -# board specific sensors init -#------------------------------------------------------------------------------ - -board_adc start -# heater start - -# BMI088 -bmi088 -A -R 2 -s start -bmi088 -G -R 2 -s start - -# 42688P -icm42688p -s start - -# baro -dps310 -I start -a 119 - -# internal mag -ist8310 -I -R 2 start diff --git a/boards/xc-fly/xc-slam/nuttx-config/Kconfig b/boards/xc-fly/xc-slam/nuttx-config/Kconfig deleted file mode 100644 index bb33d3cfda..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/Kconfig +++ /dev/null @@ -1,17 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see misc/tools/kconfig-language.txt. -# -config BOARD_HAS_PROBES - bool "Board provides GPIO or other Hardware for signaling to timing analyze." - default y - ---help--- - This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers. - -config BOARD_USE_PROBES - bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11" - default n - depends on BOARD_HAS_PROBES - - ---help--- - Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers. diff --git a/boards/xc-fly/xc-slam/nuttx-config/bootloader/defconfig b/boards/xc-fly/xc-slam/nuttx-config/bootloader/defconfig deleted file mode 100644 index d3186f6ac1..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/bootloader/defconfig +++ /dev/null @@ -1,90 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DEV_CONSOLE is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_SPI_EXCHANGE is not set -# CONFIG_STM32H7_SYSCFG is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/xc-fly/xc-slam/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=768 -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_BOARDCTL=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BOARD_INITTHREAD_PRIORITY=254 -CONFIG_BOARD_LATE_INITIALIZE=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_CDCACM=y -CONFIG_CDCACM_IFLOWCONTROL=y -CONFIG_CDCACM_PRODUCTID=0x0036 -CONFIG_CDCACM_PRODUCTSTR="XC-FLY XC-SLAM Bootloader" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C -CONFIG_CDCACM_VENDORSTR="XC-FLY" -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEBUG_TCBINFO=y -CONFIG_DEFAULT_SMALL=y -CONFIG_EXPERIMENTAL=y -CONFIG_FDCLONE_DISABLE=y -CONFIG_FDCLONE_STDIO=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_INIT_ENTRYPOINT="bootloader_main" -CONFIG_INIT_STACKSIZE=3194 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SPI=y -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=32 -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_USART6=y -CONFIG_SYSTEMTICK_HOOK=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_TTY_SIGINT=y -CONFIG_TTY_SIGINT_CHAR=0x03 -CONFIG_TTY_SIGTSTP=y -CONFIG_USART6_RXBUFSIZE=600 -CONFIG_USART6_TXBUFSIZE=300 -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 diff --git a/boards/xc-fly/xc-slam/nuttx-config/include/board.h b/boards/xc-fly/xc-slam/nuttx-config/include/board.h deleted file mode 100644 index e9546956be..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/include/board.h +++ /dev/null @@ -1,491 +0,0 @@ -/************************************************************************************ - * nuttx-configs/px4_fmu-v6u/include/board.h - * - * Copyright (C) 2016-2019 Gregory Nutt. All rights reserved. - * Authors: David Sidrane - * - * 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 NuttX 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. - * - ************************************************************************************/ -#ifndef __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H -#define __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H - -/************************************************************************************ - * Included Files - ************************************************************************************/ - -#include "board_dma_map.h" - -#include - -#ifndef __ASSEMBLY__ -# include -#endif - -#include "stm32_rcc.h" -#include "stm32_sdmmc.h" - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ - -/* Clocking *************************************************************************/ -/* The MatekH743-Slim board provides the following clock sources: - * - * X1: 16 MHz crystal for HSE - * - * So we have these clock source available within the STM32 - * - * HSI: 16 MHz RC factory-trimmed - * HSE: 16 MHz crystal for HSE - */ - -#define STM32_BOARD_XTAL 8000000ul - -#define STM32_HSI_FREQUENCY 16000000ul -#define STM32_LSI_FREQUENCY 32000 -#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL -#define STM32_LSE_FREQUENCY 32768 - -/* Main PLL Configuration. - * - * PLL source is HSE = 16,000,000 - * - * PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN - * Subject to: - * - * 1 <= PLLM <= 63 - * 4 <= PLLN <= 512 - * 150 MHz <= PLL_VCOL <= 420MHz - * 192 MHz <= PLL_VCOH <= 836MHz - * - * SYSCLK = PLL_VCO / PLLP - * CPUCLK = SYSCLK / D1CPRE - * Subject to - * - * PLLP1 = {2, 4, 6, 8, ..., 128} - * PLLP2,3 = {2, 3, 4, ..., 128} - * CPUCLK <= 480 MHz - */ - -#define STM32_BOARD_USEHSE - -#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE - -/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR - * - * PLL1_VCO = (8,000,000 / 1) * 120 = 960 MHz - * - * PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz - * PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz - * PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz - */ - -#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP1EN | \ - RCC_PLLCFGR_DIVQ1EN | \ - RCC_PLLCFGR_DIVR1EN) -#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1) -#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(120) -#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2) -#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4) -#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8) - -#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 120) -#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2) -#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4) -#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8) - -/* PLL2 */ - -#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP2EN | \ - RCC_PLLCFGR_DIVQ2EN | \ - RCC_PLLCFGR_DIVR2EN) -#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(2) -#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48) -#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2) -#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2) -#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2) - -#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2) - -/* PLL3 */ - -#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVQ3EN) -#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(2) -#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48) -#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2) -#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4) -#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2) - -#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2) -#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4) -#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2) - -/* SYSCLK = PLL1P = 480MHz - * CPUCLK = SYSCLK / 1 = 480 MHz - */ - -#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK) -#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY) -#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1) - -/* Configure Clock Assignments */ - -/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max) - * HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240 - */ - -#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */ -#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */ -#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */ -#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ - -/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */ -#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ -#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ -#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ - -#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ -#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* Timer clock frequencies */ - -/* Timers driven from APB1 will be twice PCLK1 */ - -#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) - -/* Timers driven from APB2 will be twice PCLK2 */ - -#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY) - -/* Kernel Clock Configuration - * - * Note: look at Table 54 in ST Manual - */ - -/* I2C123 clock source */ - -#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI - -/* I2C4 clock source */ - -#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI - -/* SPI123 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 - -/* SPI45 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 - -/* SPI6 clock source */ - -#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 - -/* USB 1 and 2 clock source */ - -#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 - -/* ADC 1 2 3 clock source */ - -#define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2 - -/* FDCAN 1 clock source */ - -// #define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ - -#define STM32_FDCANCLK STM32_HSE_FREQUENCY - -/* FLASH wait states - * - * ------------ ---------- ----------- - * Vcore MAX ACLK WAIT STATES - * ------------ ---------- ----------- - * 1.15-1.26 V 70 MHz 0 - * (VOS1 level) 140 MHz 1 - * 210 MHz 2 - * 1.05-1.15 V 55 MHz 0 - * (VOS2 level) 110 MHz 1 - * 165 MHz 2 - * 220 MHz 3 - * 0.95-1.05 V 45 MHz 0 - * (VOS3 level) 90 MHz 1 - * 135 MHz 2 - * 180 MHz 3 - * 225 MHz 4 - * ------------ ---------- ----------- - */ - -#define BOARD_FLASH_WAITSTATES 2 - -/* SDMMC definitions ********************************************************/ - -/* Init 400kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */ - -#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) - -/* 25 MHz Max for now, 25 mHZ = PLL1Q/(2*div), div = PLL1Q/(2*freq) - * div = 4.8 = 240 / 50, So round up to 5 for default speed 24 MB/s - */ - -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_MMCXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_SDXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif - -#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE - -/* LED definitions ******************************************************************/ -/* The board has two, LED_GREEN a Green LED and LED_BLUE a Blue LED, - * that can be controlled by software. - * - * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way. - * The following definitions are used to access individual LEDs. - */ - -/* LED index values for use with board_userled() */ - -#define BOARD_LED1 0 -#define BOARD_LED2 1 -#define BOARD_LED3 2 -#define BOARD_NLEDS 3 - -#define BOARD_LED_RED BOARD_LED1 -#define BOARD_LED_GREEN BOARD_LED2 -#define BOARD_LED_BLUE BOARD_LED3 - -/* LED bits for use with board_userled_all() */ - -#define BOARD_LED1_BIT (1 << BOARD_LED1) -#define BOARD_LED2_BIT (1 << BOARD_LED2) -#define BOARD_LED3_BIT (1 << BOARD_LED3) - -/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in - * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related - * events as follows: - * - * - * SYMBOL Meaning LED state - * Red Green Blue - * ---------------------- -------------------------- ------ ------ ----*/ - -#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ -#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ -#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ -#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ -#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ -#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ -#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ -#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ -#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ - -/* Thus if the Green LED is statically on, NuttX has successfully booted and - * is, apparently, running normally. If the Red LED is flashing at - * approximately 2Hz, then a fatal error has been detected and the system - * has halted. - */ - -/* Alternate function pin selections ************************************************/ - -#define GPIO_USART1_RX GPIO_USART1_RX_2 /* PBA10 */ -#define GPIO_USART1_TX GPIO_USART1_TX_2 /* PA9 */ -#define GPIO_USART1_CK GPIO_USART1_CK /* PB8 NC */ - -#define GPIO_USART2_RX GPIO_USART2_RX_2 /* PD6 */ -#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ -#define GPIO_USART2_CK GPIO_USART2_CK_2 /* PD7 NC */ - -#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ -#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ -#define GPIO_USART3_CK GPIO_USART3_CK_3 /* PD10 NC */ - -#define GPIO_UART4_RX GPIO_UART4_RX_3 /* PB8 */ -#define GPIO_UART4_TX GPIO_UART4_TX_3 /* PB9 */ - -#define GPIO_UART5_RX GPIO_UART5_RX_1 /* PB12 */ -#define GPIO_UART5_TX GPIO_UART5_TX_1 /* PB13 */ - -#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ -#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */ - -#define GPIO_UART7_RX GPIO_UART7_RX_3 /* PE7 */ -#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 NC */ - -#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */ -#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ - - - -/* SPI - * - - */ - -#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) - -#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ -#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 /* PA7 */ -#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */ - -#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */ -#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_3 /* PC3 */ -#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_5) /* PD3 */ - -#define GPIO_SPI3_MISO GPIO_SPI3_MISO_1 /* PB4 */ -#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_3 /* PB2 */ -#define GPIO_SPI3_SCK ADJ_SLEW_RATE(GPIO_SPI3_SCK_1) /* PB3 */ - -#define GPIO_SPI4_MISO GPIO_SPI4_MISO_2 /* PE5 */ -#define GPIO_SPI4_MOSI GPIO_SPI4_MOSI_2 /* PE6 */ -#define GPIO_SPI4_SCK ADJ_SLEW_RATE(GPIO_SPI4_SCK_2) /* PE2 */ - -/* I2C - * - - * - */ - -#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1 /* PB6 */ -#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */ - -#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6) -#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7) - -#define GPIO_I2C4_SCL GPIO_I2C4_SCL_1 /* PD12 */ -#define GPIO_I2C4_SDA GPIO_I2C4_SDA_1 /* PD13 */ - -#define GPIO_I2C4_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN12) -#define GPIO_I2C4_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN13) - -#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ -#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ - -/* SDMMC1 - * - * SDMMC1_D0 PC8 - * SDMMC1_D1 PC9 - * SDMMC1_D2 PC10 - * SDMMC1_D3 PC11 - * SDMMC1_CK PC12 - * SDMMC1_CMD PD2 - */ - -// #define GPIO_SDMMC1_D0 GPIO_SDMMC1_D0 /* PC8 */ -// #define GPIO_SDMMC1_D1 GPIO_SDMMC1_D1 /* PC9 */ -// #define GPIO_SDMMC1_D2 GPIO_SDMMC1_D2 /* PC10 */ -// #define GPIO_SDMMC1_D3 GPIO_SDMMC1_D3 /* PC11 */ -// #define GPIO_SDMMC1_CK GPIO_SDMMC1_CK /* PC12 */ -// #define GPIO_SDMMC1_CMD GPIO_SDMMC1_CMD /* PD2 */ - - -/* USB - * - * OTG_FS_DM PA11 - * OTG_FS_DP PA12 - * VBUS PA9 - */ - - -/* Board provides GPIO or other Hardware for signaling to timing analyzer */ - -// #if defined(CONFIG_BOARD_USE_PROBES) -// # include "stm32_gpio.h" -// # define PROBE_N(n) (1<<((n)-1)) -// # define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ -// # define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ -// # define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ -// # define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ -// # define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ -// # define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ -// # define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ -// # define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ -// # define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ - -// # define PROBE_INIT(mask) \ -// do { \ -// if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ -// if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ -// if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ -// if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ -// if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ -// if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ -// if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ -// if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ -// if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ -// } while(0) - -// # define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) -// # define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) -// #else -// # define PROBE_INIT(mask) -// # define PROBE(n,s) -// # define PROBE_MARK(n) -// #endif - -#endif /*__NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H */ diff --git a/boards/xc-fly/xc-slam/nuttx-config/include/board_dma_map.h b/boards/xc-fly/xc-slam/nuttx-config/include/board_dma_map.h deleted file mode 100644 index a27735b354..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/include/board_dma_map.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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 -// #define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* DMA1:37 */ -// #define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* DMA1:38 */ - -#define DMAMAP_SPI2_RX DMAMAP_DMA12_SPI2RX_0 /* DMA1:39 */ -#define DMAMAP_SPI2_TX DMAMAP_DMA12_SPI2TX_0 /* DMA1:40 */ - -// DMAMUX2 -// #define DMAMAP_SPI3_RX DMAMAP_DMA12_SPI3RX_0 /* DMA1:61 */ -// #define DMAMAP_SPI3_TX DMAMAP_DMA12_SPI3TX_0 /* DMA1:62 */ - -// #define DMAMAP_SPI6_RX DMAMAP_BDMA_SPI6_RX /* BDMA:11 */ -// #define DMAMAP_SPI6_TX DMAMAP_BDMA_SPI6_TX /* BDMA:12 */ - -//TODO: UART DMA test -// #define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_1 /*DMA2:41*/ -// #define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_1 /*DMA2:42*/ - -// #define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_1 /* DMA2:43 */ -// #define DMAMAP_USART2_TX DMAMAP_DMA12_USART2TX_1 /* DMA2:44 */ - -// #define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 /* DMA2:45 */ -// #define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 /* DMA2:46 */ - -#define DMAMAP_UART4_RX DMAMAP_DMA12_UART4RX_1 /* DMA1:63 */ -#define DMAMAP_UART4_TX DMAMAP_DMA12_UART4TX_1 /* DMA1:64 */ - -// #define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_0 /* DMA1:65 */ -// #define DMAMAP_UART5_TX DMAMAP_DMA12_UART5RX_0 /* DMA1:66 */ diff --git a/boards/xc-fly/xc-slam/nuttx-config/nsh/defconfig b/boards/xc-fly/xc-slam/nuttx-config/nsh/defconfig deleted file mode 100644 index 64dc7a4b0c..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/nsh/defconfig +++ /dev/null @@ -1,268 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DISABLE_ENVIRON is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set -# CONFIG_MMCSD_HAVE_CARDDETECT is not set -# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set -# CONFIG_MMCSD_MMCSUPPORT is not set -# CONFIG_MMCSD_SPI is not set -# CONFIG_NSH_DISABLEBG is not set -# CONFIG_NSH_DISABLESCRIPT is not set -# CONFIG_NSH_DISABLE_CAT is not set -# CONFIG_NSH_DISABLE_CD is not set -# CONFIG_NSH_DISABLE_CP is not set -# CONFIG_NSH_DISABLE_DATE is not set -# CONFIG_NSH_DISABLE_DF is not set -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_EXEC is not set -# CONFIG_NSH_DISABLE_EXIT is not set -# CONFIG_NSH_DISABLE_EXPORT is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_GET is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_ITEF is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LOOPS is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MKFATFS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PS is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE is not set -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_RM is not set -# CONFIG_NSH_DISABLE_RMDIR is not set -# CONFIG_NSH_DISABLE_SEMICOLON is not set -# CONFIG_NSH_DISABLE_SET is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_TIME is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/xc-fly/xc-slam/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=768 -CONFIG_ARCH_STACKDUMP=y -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_DCACHE=y -CONFIG_ARMV7M_DTCM=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_ARM_MPU_EARLY_RESET=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BOARD_CRASHDUMP=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BUILTIN=y -CONFIG_CDCACM=y -CONFIG_CDCACM_IFLOWCONTROL=y -CONFIG_CDCACM_PRODUCTID=0x0036 -CONFIG_CDCACM_PRODUCTSTR="X-MAV AP-H743v2" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C -CONFIG_CDCACM_VENDORSTR="X-MAV" -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_HARDFAULT_ALERT=y -CONFIG_DEBUG_MEMFAULT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEFAULT_SMALL=y -CONFIG_DEV_FIFO_SIZE=0 -CONFIG_DEV_PIPE_MAXSIZE=1024 -CONFIG_DEV_PIPE_SIZE=70 -CONFIG_EXPERIMENTAL=y -CONFIG_FAT_DMAMEMORY=y -CONFIG_FAT_LCNAMES=y -CONFIG_FAT_LFN=y -CONFIG_FAT_LFN_ALIAS_HASH=y -CONFIG_FDCLONE_STDIO=y -CONFIG_FS_BINFS=y -CONFIG_FS_CROMFS=y -CONFIG_FS_FAT=y -CONFIG_FS_FATTIME=y -CONFIG_FS_PROCFS=y -CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y -CONFIG_FS_PROCFS_MAX_TASKS=64 -CONFIG_FS_PROCFS_REGISTER=y -CONFIG_FS_ROMFS=y -CONFIG_GRAN=y -CONFIG_GRAN_INTR=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_I2C=y -CONFIG_I2C_RESET=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_INIT_ENTRYPOINT="nsh_main" -CONFIG_INIT_STACKSIZE=3194 -CONFIG_IOB_NBUFFERS=24 -CONFIG_IOB_NCHAINS=24 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_MAX_EXITFUNS=1 -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_MMCSD=y -CONFIG_MMCSD_SDIO=y -CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y -CONFIG_MM_IOB=y -CONFIG_MM_REGIONS=4 -CONFIG_MTD=y -CONFIG_MTD_BYTE_WRITE=y -CONFIG_MTD_PARTITION=y -CONFIG_MTD_PROGMEM=y -CONFIG_MTD_RAMTRON=y -CONFIG_MTD_W25=y -CONFIG_NAME_MAX=40 -CONFIG_NSH_ARCHINIT=y -CONFIG_NSH_ARGCAT=y -CONFIG_NSH_BUILTIN_APPS=y -CONFIG_NSH_CMDPARMS=y -CONFIG_NSH_CROMFSETC=y -CONFIG_NSH_LINELEN=128 -CONFIG_NSH_MAXARGUMENTS=15 -CONFIG_NSH_NESTDEPTH=8 -CONFIG_NSH_QUOTE=y -CONFIG_NSH_ROMFSETC=y -CONFIG_NSH_ROMFSSECTSIZE=128 -CONFIG_NSH_STRERROR=y -CONFIG_NSH_VARS=y -CONFIG_OTG_ID_GPIO_DISABLE=y -CONFIG_PIPES=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PRIORITY_INHERITANCE=y -CONFIG_PTHREAD_MUTEX_ROBUST=y -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAMTRON_SETSPEED=y -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_READLINE_CMD_HISTORY=y -CONFIG_READLINE_TABCOMPLETION=y -CONFIG_RTC_DATETIME=y -CONFIG_SCHED_HPWORK=y -CONFIG_SCHED_HPWORKPRIORITY=249 -CONFIG_SCHED_HPWORKSTACKSIZE=1280 -CONFIG_SCHED_INSTRUMENTATION=y -CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y -CONFIG_SCHED_INSTRUMENTATION_SWITCH=y -CONFIG_SCHED_LPWORK=y -CONFIG_SCHED_LPWORKPRIORITY=50 -CONFIG_SCHED_LPWORKSTACKSIZE=1632 -CONFIG_SCHED_WAITPID=y -CONFIG_SDMMC1_SDIO_PULLUP=y -CONFIG_SEM_PREALLOCHOLDERS=32 -CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SIG_SIGWORK=4 -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=256 -CONFIG_STM32H7_ADC1=y -CONFIG_STM32H7_ADC2=y -CONFIG_STM32H7_ADC3=y -CONFIG_STM32H7_BBSRAM=y -CONFIG_STM32H7_BBSRAM_FILES=5 -CONFIG_STM32H7_BDMA=y -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_DMA2=y -CONFIG_STM32H7_DMACAPABLE=y -CONFIG_STM32H7_FLASH_OVERRIDE_I=y -CONFIG_STM32H7_FLOWCONTROL_BROKEN=y -CONFIG_STM32H7_I2C1=y -CONFIG_STM32H7_I2C4=y -CONFIG_STM32H7_I2C_DYNTIMEO=y -CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10 -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_RTC=y -CONFIG_STM32H7_RTC_HSECLOCK=y -CONFIG_STM32H7_RTC_MAGIC_REG=1 -CONFIG_STM32H7_SAVE_CRASHDUMP=y -CONFIG_STM32H7_SDMMC1=y -CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_SPI1=y -CONFIG_STM32H7_SPI2=y -CONFIG_STM32H7_SPI2_DMA=y -CONFIG_STM32H7_SPI2_DMA_BUFFER=4096 -CONFIG_STM32H7_SPI3=y -CONFIG_STM32H7_SPI4=y -CONFIG_STM32H7_SPI_DMATHRESHOLD=8 -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_TIM2=y -CONFIG_STM32H7_TIM3=y -CONFIG_STM32H7_TIM4=y -CONFIG_STM32H7_TIM8=y -CONFIG_STM32H7_UART4=y -CONFIG_STM32H7_UART5=y -CONFIG_STM32H7_UART7=y -CONFIG_STM32H7_UART8=y -CONFIG_STM32H7_USART1=y -CONFIG_STM32H7_USART2=y -CONFIG_STM32H7_USART3=y -CONFIG_STM32H7_USART6=y -CONFIG_STM32H7_USART_BREAKS=y -CONFIG_STM32H7_USART_INVERT=y -CONFIG_STM32H7_USART_SINGLEWIRE=y -CONFIG_STM32H7_USART_SWAP=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_SYSTEM_NSH=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_UART4_BAUD=921600 -CONFIG_UART4_RXBUFSIZE=3000 -CONFIG_UART4_RXDMA=y -CONFIG_UART4_TXBUFSIZE=3000 -CONFIG_UART4_TXDMA=y -CONFIG_UART5_BAUD=57600 -CONFIG_UART5_RXBUFSIZE=600 -CONFIG_UART5_TXBUFSIZE=1500 -CONFIG_UART7_BAUD=57600 -CONFIG_UART7_RXBUFSIZE=600 -CONFIG_UART7_TXBUFSIZE=3000 -CONFIG_UART8_BAUD=57600 -CONFIG_UART8_RXBUFSIZE=600 -CONFIG_UART8_TXBUFSIZE=3000 -CONFIG_USART1_BAUD=57600 -CONFIG_USART1_RXBUFSIZE=600 -CONFIG_USART1_TXBUFSIZE=1500 -CONFIG_USART2_BAUD=57600 -CONFIG_USART2_RXBUFSIZE=600 -CONFIG_USART2_TXBUFSIZE=3000 -CONFIG_USART3_BAUD=57600 -CONFIG_USART3_RXBUFSIZE=180 -CONFIG_USART3_TXBUFSIZE=1500 -CONFIG_USART6_BAUD=57600 -CONFIG_USART6_RXBUFSIZE=180 -CONFIG_USART6_SERIAL_CONSOLE=y -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 -CONFIG_WATCHDOG=y -CONFIG_WQUEUE_NOTIFIER=y diff --git a/boards/xc-fly/xc-slam/nuttx-config/scripts/bootloader_script.ld b/boards/xc-fly/xc-slam/nuttx-config/scripts/bootloader_script.ld deleted file mode 100644 index fb877cc443..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/scripts/bootloader_script.ld +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The Durandal-v1 uses an STM32H743II has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * The Durandal has a Switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the swiutch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - flash (rx) : ORIGIN = 0x08000000, LENGTH = 2048K - dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K - sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K - sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K - sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K - sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K - bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > flash - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > flash - - - .ARM.extab : { - *(.ARM.extab*) - } > flash - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > flash - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - } > sram AT > flash - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > sram - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/xc-fly/xc-slam/nuttx-config/scripts/script.ld b/boards/xc-fly/xc-slam/nuttx-config/scripts/script.ld deleted file mode 100644 index 1dc1a0ef97..0000000000 --- a/boards/xc-fly/xc-slam/nuttx-config/scripts/script.ld +++ /dev/null @@ -1,228 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2020 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The board uses an STM32H743II and has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * There's a switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the switch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1792K - - DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - AXI_SRAM (rwx) : ORIGIN = 0x24000000, LENGTH = 512K /* D1 domain AXI bus */ - SRAM1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K /* D2 domain AHB bus */ - SRAM4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K /* D3 domain */ - BKPRAM (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > FLASH - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > FLASH - - - .ARM.extab : { - *(.ARM.extab*) - } > FLASH - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > FLASH - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - - /* Pad out last section as the STM32H7 Flash write size is 256 bits. 32 bytes */ - . = ALIGN(16); - FILL(0xffff) - . += 16; - } > AXI_SRAM AT > FLASH = 0xffff - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > AXI_SRAM - - /* Emit the the D3 power domain section for locating BDMA data */ - - .sram4_reserve (NOLOAD) : - { - *(.sram4) - . = ALIGN(4); - _sram4_heap_start = ABSOLUTE(.); - } > SRAM4 - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/xc-fly/xc-slam/src/CMakeLists.txt b/boards/xc-fly/xc-slam/src/CMakeLists.txt deleted file mode 100644 index 798c524347..0000000000 --- a/boards/xc-fly/xc-slam/src/CMakeLists.txt +++ /dev/null @@ -1,69 +0,0 @@ -############################################################################ -# -# Copyright (c) 2021 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. -# -############################################################################ -if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") - add_library(drivers_board - bootloader_main.c - usb.c - ) - target_link_libraries(drivers_board - PRIVATE - nuttx_arch - nuttx_drivers - bootloader - ) - target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) - -else() - add_library(drivers_board - i2c.cpp - init.c - led.c - sdio.c - spi.cpp - timer_config.cpp - usb.c - mtd.cpp - ) - # add_dependencies(drivers_board arch_board_hw_info) - - target_link_libraries(drivers_board - PRIVATE - arch_io_pins - arch_spi - arch_board_hw_info - drivers__led - nuttx_arch - nuttx_drivers - px4_layer - ) -endif() diff --git a/boards/xc-fly/xc-slam/src/board_config.h b/boards/xc-fly/xc-slam/src/board_config.h deleted file mode 100644 index 94c52d9489..0000000000 --- a/boards/xc-fly/xc-slam/src/board_config.h +++ /dev/null @@ -1,234 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file board_config.h - * - * Board internal definitions - */ - -#pragma once - -/**************************************************************************************************** - * Included Files - ****************************************************************************************************/ - -#include -#include -#include - -#include - -/**************************************************************************************************** - * Definitions - ****************************************************************************************************/ - -#define FLASH_BASED_PARAMS - - -/* LEDs are driven with push open drain to support Anode to 5V or 3.3V */ - -# define GPIO_nLED_RED /* PD15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN15) -# define GPIO_nLED_GREEN /* PD11 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN11) -# define GPIO_nLED_BLUE /* PB15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN15) - -# define BOARD_HAS_CONTROL_STATUS_LEDS 1 -# define BOARD_OVERLOAD_LED LED_RED -# define BOARD_ARMED_STATE_LED LED_BLUE - -/* - * ADC channels - * - * These are the channel numbers of the ADCs of the microcontroller that - * can be used by the Px4 Firmware in the adc driver - */ - -/* ADC defines to be used in sensors.cpp to read from a particular channel */ - -#define SYSTEM_ADC_BASE STM32_ADC1_BASE - -#define ADC12_CH(n) (n) - -#define PX4_ADC_GPIO \ - /* PC4 */ GPIO_ADC12_INP4, \ - /* PC5 */ GPIO_ADC12_INP8 - -/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ -/* Define Channel numbers must match above GPIO pin IN(n)*/ -#define ADC_BATTERY_VOLTAGE_CHANNEL ADC12_CH(4) -#define ADC_BATTERY_CURRENT_CHANNEL ADC12_CH(8) - -#define ADC_CHANNELS \ - ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY_CURRENT_CHANNEL)) - -#define BOARD_ADC_OPEN_CIRCUIT_V (1.6f) - - - -/* Define Battery 1 Voltage Divider and A per V - */ - -// #define BOARD_BATTERY1_V_DIV (11.0f) /* measured with the provided PM board */ -// #define BOARD_BATTERY1_A_PER_V (40.0f) -// #define BOARD_BATTERY2_V_DIV (11.0f) /* measured with the provided PM board */ - -/* PWM - */ -#define DIRECT_PWM_OUTPUT_CHANNELS 8 - -#define BOARD_HAS_PWM DIRECT_PWM_OUTPUT_CHANNELS - - - - -// /* HEATER PA15 TIM2_CH1 -// * PWM in future -// */ -// #define GPIO_HEATER1_OUTPUT /* PA15 T2CH1 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -// #define HEATER1_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER1_OUTPUT, (on_true)) - - - - -/* Spare GPIO */ -#define GPIO_PA4 /* PA4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTA|GPIO_PIN4) -#define GPIO_PC0 /* PC0 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN0) -#define GPIO_PC1 /* PC1 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN1) -/* Tone alarm output */ - -#define TONE_ALARM_TIMER 2 /* Timer 2*/ -#define TONE_ALARM_CHANNEL 1 /* PA15 GPIO_TIM2_CH1 NC */ -/*NC can be modified with Spare GPIO then connected with hardware */ -#define GPIO_BUZZER_1 /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) - -#define GPIO_TONE_ALARM_IDLE GPIO_BUZZER_1 -#define GPIO_TONE_ALARM GPIO_BUZZER_1 -#define GPIO_TONE_ALARM_GPIO /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN15) - -/* USB OTG FS - * - * PE15 OTG_FS_VBUS VBUS sensing - */ -#define GPIO_OTGFS_VBUS /* PE15 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTE|GPIO_PIN15) -#define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS)) - -/* High-resolution timer */ -#define HRT_TIMER 8 /* use timer1 for the HRT */ -#define HRT_TIMER_CHANNEL 1 /* use capture/compare channel 1 */ - -/* RC Serial port */ -#define RC_SERIAL_PORT "/dev/ttyS4" -#define BOARD_SUPPORTS_RC_SERIAL_PORT_OUTPUT - -// #define GPIO_SBUS_INV (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) -// #define RC_INVERT_INPUT(_invert_true) px4_arch_gpiowrite(GPIO_SBUS_INV, _invert_true); - -/* SD card bringup does not work if performed on the IDLE thread because it - * will cause waiting. Use either: - * - * CONFIG_LIB_BOARDCTL=y, OR - * CONFIG_BOARD_INITIALIZE=y && CONFIG_BOARD_INITTHREAD=y - */ -#define SDIO_SLOTNO 0 /* Only one slot */ -#define SDIO_MINOR 0 -#if defined(CONFIG_BOARD_INITIALIZE) && !defined(CONFIG_LIB_BOARDCTL) && \ - !defined(CONFIG_BOARD_INITTHREAD) -# warning SDIO initialization cannot be perfomed on the IDLE thread -#endif - -/* This board provides a DMA pool and APIs */ -#define BOARD_DMA_ALLOC_POOL_SIZE 5120 - -/* This board provides the board_on_reset interface */ -#define BOARD_HAS_ON_RESET 1 - -#define PX4_GPIO_INIT_LIST { \ - GPIO_CAN1_TX,\ - GPIO_CAN1_RX, \ - PX4_ADC_GPIO, \ - GPIO_PC0, \ - GPIO_PC1, \ - GPIO_TONE_ALARM_IDLE, \ - } - -#define BOARD_ENABLE_CONSOLE_BUFFER - -#define BOARD_NUM_IO_TIMERS 5 - - -__BEGIN_DECLS - -/**************************************************************************************************** - * Public Types - ****************************************************************************************************/ - -/**************************************************************************************************** - * Public data - ****************************************************************************************************/ - -#ifndef __ASSEMBLY__ - -/**************************************************************************************************** - * Public Functions - ****************************************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void); - -/**************************************************************************************************** - * Name: stm32_spiinitialize - * - * Description: - * Called to configure SPI chip select GPIO pins for the board. - * - ****************************************************************************************************/ - -extern void stm32_spiinitialize(void); - -extern void stm32_usbinitialize(void); - -extern void board_peripheral_reset(int ms); - -#include - -#endif /* __ASSEMBLY__ */ - -__END_DECLS diff --git a/boards/xc-fly/xc-slam/src/bootloader_main.c b/boards/xc-fly/xc-slam/src/bootloader_main.c deleted file mode 100644 index 5670308a29..0000000000 --- a/boards/xc-fly/xc-slam/src/bootloader_main.c +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file bootloader_main.c - * - * FMU-specific early startup code for bootloader -*/ - -#include "board_config.h" -#include "bl.h" - -#include -#include -#include -#include -#include -#include "arm_internal.h" -#include - -extern int sercon_main(int c, char **argv); - -__EXPORT void board_on_reset(int status) {} - -__EXPORT void stm32_boardinitialize(void) -{ - /* configure USB interfaces */ - stm32_usbinitialize(); -} - -__EXPORT int board_app_initialize(uintptr_t arg) -{ - return 0; -} - -void board_late_initialize(void) -{ - sercon_main(0, NULL); -} - -extern void sys_tick_handler(void); -void board_timerhook(void) -{ - sys_tick_handler(); -} diff --git a/boards/xc-fly/xc-slam/src/flash_w25q128.c b/boards/xc-fly/xc-slam/src/flash_w25q128.c deleted file mode 100644 index 3a3e2cee1f..0000000000 --- a/boards/xc-fly/xc-slam/src/flash_w25q128.c +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2020 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. - * - ****************************************************************************/ - -/** - * @file flash_w25q128.c - * - * Board-specific external flash W25Q128 functions. - */ - - -#include "board_config.h" -#include "qspi.h" -#include "arm_internal.h" -#include -#include - - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ -/* Configuration ********************************************************************/ - -#define N25Q128_SECTOR_SIZE (4*1024) -#define N25Q128_SECTOR_SHIFT (12) -#define N25Q128_SECTOR_COUNT (4096) -#define N25Q128_PAGE_SIZE (256) -#define N25Q128_PAGE_SHIFT (8) - -#define W25Q_DUMMY_CYCLES_FAST_READ_QUAD 6 -#define W25Q_INSTR_FAST_READ_QUAD 0xEB -#define W25Q_ADDRESS_SIZE 3 // 3 bytes -> 24 bits - -#define N25QXXX_READ_STATUS 0x05 /* Read status register: * - * 0x05 | SR */ -#define N25QXXX_PAGE_PROGRAM 0x02 /* Page Program: * - * 0x02 | ADDR(MS) | ADDR(MID) | * - * ADDR(LS) | data */ -#define N25QXXX_WRITE_ENABLE 0x06 /* Write enable: * - * 0x06 */ -#define N25QXXX_WRITE_DISABLE 0x04 /* Write disable command code: * - * 0x04 */ -#define N25QXXX_SUBSECTOR_ERASE 0x20 /* Sub-sector Erase (4 kB) * - * 0x20 | ADDR(MS) | ADDR(MID) | * - * ADDR(LS) */ - - -/* N25QXXX Registers ****************************************************************/ -/* Status register bit definitions */ - -#define STATUS_BUSY_MASK (1 << 0) /* Bit 0: Device ready/busy status */ -# define STATUS_READY (0 << 0) /* 0 = Not Busy */ -# define STATUS_BUSY (1 << 0) /* 1 = Busy */ -#define STATUS_WEL_MASK (1 << 1) /* Bit 1: Write enable latch status */ -# define STATUS_WEL_DISABLED (0 << 1) /* 0 = Not Write Enabled */ -# define STATUS_WEL_ENABLED (1 << 1) /* 1 = Write Enabled */ -#define STATUS_BP_SHIFT (2) /* Bits 2-4: Block protect bits */ -#define STATUS_BP_MASK (7 << STATUS_BP_SHIFT) -# define STATUS_BP_NONE (0 << STATUS_BP_SHIFT) -# define STATUS_BP_ALL (7 << STATUS_BP_SHIFT) -#define STATUS_TB_MASK (1 << 5) /* Bit 5: Top / Bottom Protect */ -# define STATUS_TB_TOP (0 << 5) /* 0 = BP2-BP0 protect Top down */ -# define STATUS_TB_BOTTOM (1 << 5) /* 1 = BP2-BP0 protect Bottom up */ -#define STATUS_BP3_MASK (1 << 5) /* Bit 6: BP3 */ -#define STATUS_SRP0_MASK (1 << 7) /* Bit 7: Status register protect 0 */ -# define STATUS_SRP0_UNLOCKED (0 << 7) /* 0 = WP# no effect / PS Lock Down */ -# define STATUS_SRP0_LOCKED (1 << 7) /* 1 = WP# protect / OTP Lock Down */ - -/************************************************************************************ - * Private Types - ************************************************************************************/ - -/* This type represents the state of the MTD device. The struct mtd_dev_s must - * appear at the beginning of the definition so that you can freely cast between - * pointers to struct mtd_dev_s and struct n25qxxx_dev_s. - */ - -struct n25qxxx_dev_s { - //struct mtd_dev_s mtd; /* MTD interface */ - FAR struct qspi_dev_s *qspi; /* Saved QuadSPI interface instance */ - uint16_t nsectors; /* Number of erase sectors */ - uint8_t sectorshift; /* Log2 of sector size */ - uint8_t pageshift; /* Log2 of page size */ - FAR uint8_t *cmdbuf; /* Allocated command buffer */ - FAR uint8_t *readbuf; /* Allocated status read buffer */ -}; - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -struct qspi_dev_s *ptr_qspi_dev; -struct qspi_meminfo_s qspi_meminfo = { - .flags = QSPIMEM_QUADIO, - .addrlen = W25Q_ADDRESS_SIZE, - .dummies = W25Q_DUMMY_CYCLES_FAST_READ_QUAD, - .cmd = W25Q_INSTR_FAST_READ_QUAD -}; - -struct n25qxxx_dev_s n25qxxx_dev; -uint8_t cmdbuf[4] = {0u}; -uint8_t readbuf[1] = {0u}; - -/************************************************************************************ - * Private Functions - ************************************************************************************/ -__ramfunc__ int n25qxxx_command(FAR struct qspi_dev_s *qspi, uint8_t cmd); -__ramfunc__ uint8_t n25qxxx_read_status(FAR struct n25qxxx_dev_s *priv); -__ramfunc__ int n25qxxx_command_read(FAR struct qspi_dev_s *qspi, uint8_t cmd, - FAR void *buffer, size_t buflen); -__ramfunc__ void n25qxxx_write_enable(FAR struct n25qxxx_dev_s *priv); -__ramfunc__ void n25qxxx_write_disable(FAR struct n25qxxx_dev_s *priv); - -__ramfunc__ int n25qxxx_write_page(struct n25qxxx_dev_s *priv, FAR const uint8_t *buffer, - off_t address, size_t buflen); - -__ramfunc__ int n25qxxx_write_one_page(struct n25qxxx_dev_s *priv, struct qspi_meminfo_s *meminfo); - -__ramfunc__ int n25qxxx_erase_sector(struct n25qxxx_dev_s *priv, off_t sector); - -__ramfunc__ bool n25qxxx_isprotected(FAR struct n25qxxx_dev_s *priv, uint8_t status, - off_t address); - -__ramfunc__ int n25qxxx_command_address(FAR struct qspi_dev_s *qspi, uint8_t cmd, - off_t addr, uint8_t addrlen); - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -void flash_w25q128_init(void) -{ - int qspi_interface_number = 0; - ptr_qspi_dev = stm32h7_qspi_initialize(qspi_interface_number); - n25qxxx_dev.qspi = ptr_qspi_dev; - n25qxxx_dev.cmdbuf = cmdbuf; - n25qxxx_dev.readbuf = readbuf; - n25qxxx_dev.sectorshift = N25Q128_SECTOR_SHIFT; - n25qxxx_dev.pageshift = N25Q128_PAGE_SHIFT; - n25qxxx_dev.nsectors = N25Q128_SECTOR_COUNT; -} - -__ramfunc__ ssize_t up_progmem_ext_getpage(size_t addr) -{ - ssize_t page_address = (addr - STM32_FMC_BANK4) / N25Q128_SECTOR_COUNT; - - return page_address; -} - -__ramfunc__ ssize_t up_progmem_ext_eraseblock(size_t block) -{ - ssize_t size = N25Q128_SECTOR_COUNT; - - irqstate_t irqstate = px4_enter_critical_section(); - stm32h7_qspi_exit_memorymapped(ptr_qspi_dev); - - n25qxxx_erase_sector(&n25qxxx_dev, block); - - stm32h7_qspi_enter_memorymapped(ptr_qspi_dev, &qspi_meminfo, 0); - px4_leave_critical_section(irqstate); - return size; -} - -__ramfunc__ ssize_t up_progmem_ext_write(size_t addr, FAR const void *buf, size_t count) -{ - ssize_t ret_val = 0; - - irqstate_t irqstate = px4_enter_critical_section(); - stm32h7_qspi_exit_memorymapped(ptr_qspi_dev); - - addr &= 0xFFFFFF; - n25qxxx_write_page(&n25qxxx_dev, buf, (off_t)addr, count); - - stm32h7_qspi_enter_memorymapped(ptr_qspi_dev, &qspi_meminfo, 0); - px4_leave_critical_section(irqstate); - - return ret_val; -} - -/************************************************************************************ - * Name: n25qxxx_command - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command(FAR struct qspi_dev_s *qspi, uint8_t cmd) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 "\n", cmd); - - cmdinfo.flags = 0; - cmdinfo.addrlen = 0; - cmdinfo.cmd = cmd; - cmdinfo.buflen = 0; - cmdinfo.addr = 0; - cmdinfo.buffer = NULL; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} - -/************************************************************************************ - * Name: n25qxxx_read_status - ************************************************************************************/ - -__ramfunc__ uint8_t n25qxxx_read_status(FAR struct n25qxxx_dev_s *priv) -{ - DEBUGVERIFY(n25qxxx_command_read(priv->qspi, N25QXXX_READ_STATUS, - (FAR void *)&priv->readbuf[0], 1)); - return priv->readbuf[0]; -} - -/************************************************************************************ - * Name: n25qxxx_command_read - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command_read(FAR struct qspi_dev_s *qspi, uint8_t cmd, - FAR void *buffer, size_t buflen) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 " buflen: %zu\n", cmd, buflen); - - cmdinfo.flags = QSPICMD_READDATA; - cmdinfo.addrlen = 0; - cmdinfo.cmd = cmd; - cmdinfo.buflen = buflen; - cmdinfo.addr = 0; - cmdinfo.buffer = buffer; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} - - -/************************************************************************************ - * Name: n25qxxx_write_enable - ************************************************************************************/ - -__ramfunc__ void n25qxxx_write_enable(FAR struct n25qxxx_dev_s *priv) -{ - uint8_t status; - - do { - n25qxxx_command(priv->qspi, N25QXXX_WRITE_ENABLE); - status = n25qxxx_read_status(priv); - } while ((status & STATUS_WEL_MASK) != STATUS_WEL_ENABLED); -} - -/************************************************************************************ - * Name: n25qxxx_write_disable - ************************************************************************************/ - -__ramfunc__ void n25qxxx_write_disable(FAR struct n25qxxx_dev_s *priv) -{ - uint8_t status; - - do { - n25qxxx_command(priv->qspi, N25QXXX_WRITE_DISABLE); - status = n25qxxx_read_status(priv); - } while ((status & STATUS_WEL_MASK) != STATUS_WEL_DISABLED); -} - -/************************************************************************************ - * Name: n25qxxx_write_page - ************************************************************************************/ - -__ramfunc__ int n25qxxx_write_page(struct n25qxxx_dev_s *priv, FAR const uint8_t *buffer, - off_t address, size_t buflen) -{ - struct qspi_meminfo_s meminfo; - unsigned int pagesize; - unsigned int npages; - unsigned int firstpagesize = 0; - int ret = OK; - unsigned int i; - - finfo("address: %08jx buflen: %zu\n", (intmax_t)address, buflen); - - pagesize = (1 << priv->pageshift); - - /* Set up non-varying parts of transfer description */ - - meminfo.flags = QSPIMEM_WRITE; - meminfo.cmd = N25QXXX_PAGE_PROGRAM; - meminfo.addrlen = 3; - meminfo.dummies = 0; - meminfo.buffer = (void *)buffer; - - if (0 != (address % pagesize)) { - firstpagesize = pagesize - (address % pagesize); - } - - if (buflen <= firstpagesize) { - meminfo.addr = address; - meminfo.buflen = buflen; - ret = n25qxxx_write_one_page(priv, &meminfo); - - } else { - - if (firstpagesize > 0) { - meminfo.addr = address; - meminfo.buflen = firstpagesize; - ret = n25qxxx_write_one_page(priv, &meminfo); - - buffer += firstpagesize; - address += firstpagesize; - buflen -= firstpagesize; - } - - npages = (buflen >> priv->pageshift); - - meminfo.buflen = pagesize; - - /* Then write each page */ - - for (i = 0; (i < npages) && (ret == OK); i++) { - /* Set up varying parts of the transfer description */ - - meminfo.addr = address; - meminfo.buffer = (void *)buffer; - - ret = n25qxxx_write_one_page(priv, &meminfo); - - /* Update for the next time through the loop */ - - buffer += pagesize; - address += pagesize; - buflen -= pagesize; - } - - if ((ret == OK) && (buflen > 0)) { - meminfo.addr = address; - meminfo.buffer = (void *)buffer; - meminfo.buflen = buflen; - - ret = n25qxxx_write_one_page(priv, &meminfo); - } - } - - return ret; -} - -__ramfunc__ int n25qxxx_write_one_page(struct n25qxxx_dev_s *priv, struct qspi_meminfo_s *meminfo) -{ - int ret; - - n25qxxx_write_enable(priv); - ret = qspi_memory(priv->qspi, meminfo); - n25qxxx_write_disable(priv); - - if (ret < 0) { - ferr("ERROR: QSPI_MEMORY failed writing address=%06" PRIx32 "\n", - meminfo->addr); - } - - return ret; -} - -/************************************************************************************ - * Name: n25qxxx_erase_sector - ************************************************************************************/ - -__ramfunc__ int n25qxxx_erase_sector(struct n25qxxx_dev_s *priv, off_t sector) -{ - off_t address; - uint8_t status; - - finfo("sector: %08jx\n", (intmax_t) sector); - - /* Check that the flash is ready and unprotected */ - - status = n25qxxx_read_status(priv); - - if ((status & STATUS_BUSY_MASK) != STATUS_READY) { - ferr("ERROR: Flash busy: %02" PRIx8, status); - return -EBUSY; - } - - /* Get the address associated with the sector */ - - address = (off_t)sector << priv->sectorshift; - - if ((status & (STATUS_BP3_MASK | STATUS_BP_MASK)) != 0 && - n25qxxx_isprotected(priv, status, address)) { - ferr("ERROR: Flash protected: %02" PRIx8, status); - return -EACCES; - } - - /* Send the sector erase command */ - - n25qxxx_write_enable(priv); - n25qxxx_command_address(priv->qspi, N25QXXX_SUBSECTOR_ERASE, address, 3); - - /* Wait for erasure to finish */ - - while ((n25qxxx_read_status(priv) & STATUS_BUSY_MASK) != 0); - - return OK; -} - -/************************************************************************************ - * Name: n25qxxx_isprotected - ************************************************************************************/ - -__ramfunc__ bool n25qxxx_isprotected(FAR struct n25qxxx_dev_s *priv, uint8_t status, - off_t address) -{ - off_t protstart; - off_t protend; - off_t protsize; - unsigned int bp; - - /* The BP field is spread across non-contiguous bits */ - - bp = (status & STATUS_BP_MASK) >> STATUS_BP_SHIFT; - - if (status & STATUS_BP3_MASK) { - bp |= 8; - } - - /* the BP field is essentially the power-of-two of the number of 64k sectors, - * saturated to the device size. - */ - - if (0 == bp) { - return false; - } - - protsize = 0x00010000; - protsize <<= (protsize << (bp - 1)); - protend = (1 << priv->sectorshift) * priv->nsectors; - - if (protsize > protend) { - protsize = protend; - } - - /* The final protection range then depends on if the protection region is - * configured top-down or bottom up (assuming CMP=0). - */ - - if ((status & STATUS_TB_MASK) != 0) { - protstart = 0x00000000; - protend = protstart + protsize; - - } else { - protstart = protend - protsize; - /* protend already computed above */ - } - - return (address >= protstart && address < protend); -} - -/************************************************************************************ - * Name: n25qxxx_command_address - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command_address(FAR struct qspi_dev_s *qspi, uint8_t cmd, - off_t addr, uint8_t addrlen) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 " Address: %04jx addrlen=%" PRIx8 "\n", cmd, (intmax_t) addr, addrlen); - - cmdinfo.flags = QSPICMD_ADDRESS; - cmdinfo.addrlen = addrlen; - cmdinfo.cmd = cmd; - cmdinfo.buflen = 0; - cmdinfo.addr = addr; - cmdinfo.buffer = NULL; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} diff --git a/boards/xc-fly/xc-slam/src/hw_config.h b/boards/xc-fly/xc-slam/src/hw_config.h deleted file mode 100644 index e986fe0e90..0000000000 --- a/boards/xc-fly/xc-slam/src/hw_config.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -/**************************************************************************** - * 10-8--2016: - * To simplify the ripple effect on the tools, we will be using - * /dev/serial/by-id/PX4 to locate PX4 devices. Therefore - * moving forward all Bootloaders must contain the prefix "PX4 BL " - * in the USBDEVICESTRING - * This Change will be made in an upcoming BL release - ****************************************************************************/ -/* - * Define usage to configure a bootloader - * - * - * Constant example Usage - * APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed - * BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request - * BOARD_FMUV2 - * INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading - * INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading - * USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string - * USBPRODUCTID 0x0011 - PID Should match defconfig - * BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom - * delay provided by an APP FW - * BOARD_TYPE 9 - Must match .prototype boad_id - * _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection - * BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector - * BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector - * BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time. - * (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted - * programmatically - * - * BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing. - * This is to allow sectors to be reserved for app fw usage. That will NOT be erased - * during a FW upgrade. - * The default is 0, and selects the first sector to be erased, as the 0th entry in the - * flash_sectors table. Which is the second physical sector of FLASH in the device. - * The first physical sector of FLASH is used by the bootloader, and is not defined - * in the table. - * - * APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus - * BOOTLOADER_RESERVATION_SIZE will be deducted from - * BOARD_FLASH_SIZE to determine the size of the App FW - * and hence the address space of FLASH to erase and program. - * USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.) - * SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL - * - * * Other defines are somewhat self explanatory. - */ - -/* Boot device selection list*/ -#define USB0_DEV 0x01 -#define SERIAL0_DEV 0x02 -#define SERIAL1_DEV 0x04 - -#define APP_LOAD_ADDRESS 0x08020000 -#define BOOTLOADER_DELAY 5000 -#define INTERFACE_USB 1 -#define INTERFACE_USB_CONFIG "/dev/ttyACM0" -#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) - -//#define USE_VBUS_PULL_DOWN -#define INTERFACE_USART 6 -#define INTERFACE_USART_CONFIG "/dev/ttyS5,57600" -#define BOOT_DELAY_ADDRESS 0x000001a0 -#define BOARD_TYPE 319 -#define BOARD_FLASH_SECTORS (14) -#define BOARD_FLASH_SIZE (16 * 128 * 1024) -#define APP_RESERVATION_SIZE (1 * 128 * 1024) - -#define OSC_FREQ 16 - -#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE -#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_RED // RED -#define BOARD_LED_ON 1 -#define BOARD_LED_OFF 0 - -#define SERIAL_BREAK_DETECT_DISABLED 1 - -#if !defined(ARCH_SN_MAX_LENGTH) -# define ARCH_SN_MAX_LENGTH 12 -#endif - -#if !defined(APP_RESERVATION_SIZE) -# define APP_RESERVATION_SIZE 0 -#endif - -#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE) -# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1 -#endif - -#if !defined(USB_DATA_ALIGN) -# define USB_DATA_ALIGN -#endif - -#ifndef BOOT_DEVICES_SELECTION -# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif - -#ifndef BOOT_DEVICES_FILTER_ONUSB -# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif diff --git a/boards/xc-fly/xc-slam/src/i2c.cpp b/boards/xc-fly/xc-slam/src/i2c.cpp deleted file mode 100644 index d557e692af..0000000000 --- a/boards/xc-fly/xc-slam/src/i2c.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -#include - -constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { - initI2CBusInternal(1), - initI2CBusExternal(4), -}; diff --git a/boards/xc-fly/xc-slam/src/init.c b/boards/xc-fly/xc-slam/src/init.c deleted file mode 100644 index cd7d3d2162..0000000000 --- a/boards/xc-fly/xc-slam/src/init.c +++ /dev/null @@ -1,210 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file init.c - * - * FMU-specific early startup code. This file implements the - * board_app_initialize() function that is called early by nsh during startup. - * - * Code here is run before the rcS script is invoked; it should start required - * subsystems and perform board-specific initialisation. - */ - -#include "board_config.h" - -#include - -#include -#include -#include -#include -#include -#include "arm_internal.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -# if defined(FLASH_BASED_PARAMS) -# include -#endif - -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -__END_DECLS - -/************************************************************************************ - * Name: board_peripheral_reset - * - * Description: - * - ************************************************************************************/ -__EXPORT void board_peripheral_reset(int ms) -{ - UNUSED(ms); -} - -/************************************************************************************ - * Name: board_on_reset - * - * Description: - * Optionally provided function called on entry to board_system_reset - * It should perform any house keeping prior to the rest. - * - * status - 1 if resetting to boot loader - * 0 if just resetting - * - ************************************************************************************/ -__EXPORT void board_on_reset(int status) -{ - for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { - px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i))); - } - - /* - * On resets invoked from system (not boot) ensure we establish a low - * output state on PWM pins to disarm the ESC and prevent the reset from potentially - * spinning up the motors. - */ - if (status >= 0) { - up_mdelay(100); - } -} - -/************************************************************************************ - * Name: stm32_boardinitialize - * - * Description: - * All STM32 architectures must provide the following entry point. This entry point - * is called early in the initialization -- after all memory has been configured - * and mapped but before any devices have been initialized. - * - ************************************************************************************/ -__EXPORT void stm32_boardinitialize(void) -{ - /* Reset PWM first thing */ - board_on_reset(-1); - - /* configure LEDs */ - board_autoled_initialize(); - - /* configure pins */ - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure SPI interfaces */ - stm32_spiinitialize(); - - /* configure USB interfaces */ - stm32_usbinitialize(); - -} - -/**************************************************************************** - * Name: board_app_initialize - * - * Description: - * Perform application specific initialization. This function is never - * called directly from application code, but only indirectly via the - * (non-standard) boardctl() interface using the command BOARDIOC_INIT. - * - * Input Parameters: - * arg - The boardctl() argument is passed to the board_app_initialize() - * implementation without modification. The argument has no - * meaning to NuttX; - * - * Returned Value: - * Zero (OK) is returned on success; a negated errno value is returned on - * any failure to indicate the nature of the failure. - * - ****************************************************************************/ -__EXPORT int board_app_initialize(uintptr_t arg) -{ - /* Need hrt running before using the ADC */ - px4_platform_init(); - - /* configure the DMA allocator */ - if (board_dma_alloc_init() < 0) { - syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); - } - - /* initial LED state */ - drv_led_start(); - led_off(LED_RED); - led_off(LED_BLUE); - - if (board_hardfault_init(2, true) != 0) { - led_on(LED_BLUE); - } - -#ifdef CONFIG_MMCSD - int ret = stm32_sdio_initialize(); - - if (ret != OK) { - led_on(LED_BLUE); - return ret; - } - -#endif - -// TODO:internal flash store parameters -#if defined(FLASH_BASED_PARAMS) - static sector_descriptor_t params_sector_map[] = { - {15, 128 * 1024, 0x081E0000}, - {0, 0, 0}, - }; - - /* Initialize the flashfs layer to use heap allocated memory */ - int result = parameter_flashfs_init(params_sector_map, NULL, 0); - - if (result != OK) { - syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result); - led_on(LED_RED); - } - -#endif - - /* Configure the HW based on the manifest */ - px4_platform_configure(); - - return OK; -} diff --git a/boards/xc-fly/xc-slam/src/led.c b/boards/xc-fly/xc-slam/src/led.c deleted file mode 100644 index 0420c1da2e..0000000000 --- a/boards/xc-fly/xc-slam/src/led.c +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file led.c - * - * LED backend. - */ - -#include - -#include - -#include "chip.h" -#include "stm32_gpio.h" -#include "board_config.h" - -#include -#include - -/* - * Ideally we'd be able to get these from arm_internal.h, - * but since we want to be able to disable the NuttX use - * of leds for system indication at will and there is no - * separate switch, we need to build independent of the - * CONFIG_ARCH_LEDS configuration switch. - */ -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -extern void led_toggle(int led); -__END_DECLS - -# define xlat(p) (p) -static uint32_t g_ledmap[] = { - GPIO_nLED_GREEN, // Indexed by BOARD_LED_GREEN - GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE - GPIO_nLED_RED, // Indexed by BOARD_LED_RED -}; - -__EXPORT void led_init(void) -{ - /* Configure LED GPIOs for output */ - for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { - if (g_ledmap[l] != 0) { - stm32_configgpio(g_ledmap[l]); - } - } -} - -static void phy_set_led(int led, bool state) -{ - /* Drive Low to switch on */ - if (g_ledmap[led] != 0) { - stm32_gpiowrite(g_ledmap[led], !state); - } -} - -static bool phy_get_led(int led) -{ - /* If Low it is on */ - if (g_ledmap[led] != 0) { - return !stm32_gpioread(g_ledmap[led]); - } - - return false; -} - -__EXPORT void led_on(int led) -{ - phy_set_led(xlat(led), true); -} - -__EXPORT void led_off(int led) -{ - phy_set_led(xlat(led), false); -} - -__EXPORT void led_toggle(int led) -{ - phy_set_led(xlat(led), !phy_get_led(xlat(led))); -} diff --git a/boards/xc-fly/xc-slam/src/manifest.c b/boards/xc-fly/xc-slam/src/manifest.c deleted file mode 100644 index ab9c952cdd..0000000000 --- a/boards/xc-fly/xc-slam/src/manifest.c +++ /dev/null @@ -1,131 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2018-2021 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. - * - ****************************************************************************/ - -/** - * @file manifest.c - * - * This module supplies the interface to the manifest of hardware that is - * optional and dependent on the HW REV and HW VER IDs - * - * The manifest allows the system to know whether a hardware option - * say for example the PX4IO is an no-pop option vs it is broken. - * - */ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include - -#include "systemlib/px4_macros.h" - -/**************************************************************************** - * Pre-Processor Definitions - ****************************************************************************/ - -typedef struct { - uint32_t hw_ver_rev; /* the version and revision */ - const px4_hw_mft_item_t *mft; /* The first entry */ - uint32_t entries; /* the length of the list */ -} px4_hw_mft_list_entry_t; - -typedef px4_hw_mft_list_entry_t *px4_hw_mft_list_entry; -#define px4_hw_mft_list_uninitialized (px4_hw_mft_list_entry) -1 - -static const px4_hw_mft_item_t device_unsupported = {0, 0, 0}; - -// List of components on a specific board configuration -// The index of those components is given by the enum (px4_hw_mft_item_id_t) -// declared in board_common.h -static const px4_hw_mft_item_t hw_mft_list_v0600[] = { - { - .present = 0, - .mandatory = 0, - .connection = px4_hw_con_unknown, - }, -}; - -static px4_hw_mft_list_entry_t mft_lists[] = { - {V6U00, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)}, -}; - -/************************************************************************************ - * Name: board_query_manifest - * - * Description: - * Optional returns manifest item. - * - * Input Parameters: - * manifest_id - the ID for the manifest item to retrieve - * - * Returned Value: - * 0 - item is not in manifest => assume legacy operations - * pointer to a manifest item - * - ************************************************************************************/ - -__EXPORT px4_hw_mft_item board_query_manifest(px4_hw_mft_item_id_t id) -{ - static px4_hw_mft_list_entry boards_manifest = px4_hw_mft_list_uninitialized; - - if (boards_manifest == px4_hw_mft_list_uninitialized) { - uint32_t ver_rev = board_get_hw_version() << 16; - ver_rev |= board_get_hw_revision(); - - for (unsigned i = 0; i < arraySize(mft_lists); i++) { - if (mft_lists[i].hw_ver_rev == ver_rev) { - boards_manifest = &mft_lists[i]; - break; - } - } - - if (boards_manifest == px4_hw_mft_list_uninitialized) { - syslog(LOG_ERR, "[boot] Board %08" PRIx32 " is not supported!\n", ver_rev); - } - } - - px4_hw_mft_item rv = &device_unsupported; - - if (boards_manifest != px4_hw_mft_list_uninitialized && - id < boards_manifest->entries) { - rv = &boards_manifest->mft[id]; - } - - return rv; -} diff --git a/boards/xc-fly/xc-slam/src/mtd.cpp b/boards/xc-fly/xc-slam/src/mtd.cpp deleted file mode 100644 index e89e53e03b..0000000000 --- a/boards/xc-fly/xc-slam/src/mtd.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2020 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. - * - ****************************************************************************/ -//TODO:Prepare for NxtDual - -#include -#include -// KiB BS nB -static const px4_mft_device_t spi2 = { // FM25V02A on FMUM native: 32K X 8, emulated as (1024 Blocks of 32) - .bus_type = px4_mft_device_t::SPI, - .devid = SPIDEV_FLASH(2) // SPIDEV_FLASH(0) -}; - -static const px4_mtd_entry_t fmum_flash = { - .device = &spi2, - .npart = 1, - .partd = { - { - .type = MTD_PARAMETERS, - .path = "/fs/mtd_params", - .nblocks = 32 - - } - }, -}; - -static const px4_mtd_manifest_t board_mtd_config = { - .nconfigs = 1, - .entries = { - &fmum_flash - } -}; - -static const px4_mft_entry_s mtd_mft = { - .type = MTD, - .pmft = (void *) &board_mtd_config, -}; - -static const px4_mft_s mft = { - .nmft = 1, - .mfts = { - &mtd_mft - } -}; - -const px4_mft_s *board_get_manifest(void) -{ - return &mft; -} diff --git a/boards/xc-fly/xc-slam/src/sdio.c b/boards/xc-fly/xc-slam/src/sdio.c deleted file mode 100644 index 869d757756..0000000000 --- a/boards/xc-fly/xc-slam/src/sdio.c +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "chip.h" -#include "board_config.h" -#include "stm32_gpio.h" -#include "stm32_sdmmc.h" - -#ifdef CONFIG_MMCSD - - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Card detections requires card support and a card detection GPIO */ - -#define HAVE_NCD 1 -#if !defined(GPIO_SDMMC1_NCD) -# undef HAVE_NCD -#endif - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -static FAR struct sdio_dev_s *sdio_dev; -#ifdef HAVE_NCD -static bool g_sd_inserted = 0xff; /* Impossible value */ -#endif - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_ncd_interrupt - * - * Description: - * Card detect interrupt handler. - * - ****************************************************************************/ - -#ifdef HAVE_NCD -static int stm32_ncd_interrupt(int irq, FAR void *context) -{ - bool present; - - present = !stm32_gpioread(GPIO_SDMMC1_NCD); - - if (sdio_dev && present != g_sd_inserted) { - sdio_mediachange(sdio_dev, present); - g_sd_inserted = present; - } - - return OK; -} -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void) -{ - int ret; - -#ifdef HAVE_NCD - /* Card detect */ - - bool cd_status; - - /* Configure the card detect GPIO */ - - stm32_configgpio(GPIO_SDMMC1_NCD); - - /* Register an interrupt handler for the card detect pin */ - - stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); -#endif - - /* Mount the SDIO-based MMC/SD block driver */ - /* First, get an instance of the SDIO interface */ - - finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); - - sdio_dev = sdio_initialize(SDIO_SLOTNO); - - if (!sdio_dev) { - syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); - return -ENODEV; - } - - /* Now bind the SDIO interface to the MMC/SD driver */ - - finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); - - ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); - - if (ret != OK) { - syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); - return ret; - } - - finfo("Successfully bound SDIO to the MMC/SD driver\n"); - -#ifdef HAVE_NCD - /* Use SD card detect pin to check if a card is g_sd_inserted */ - - cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); - finfo("Card detect : %d\n", cd_status); - - sdio_mediachange(sdio_dev, cd_status); -#else - /* Assume that the SD card is inserted. What choice do we have? */ - - sdio_mediachange(sdio_dev, true); -#endif - - return OK; -} - -#endif /* CONFIG_MMCSD */ diff --git a/boards/xc-fly/xc-slam/src/spi.cpp b/boards/xc-fly/xc-slam/src/spi.cpp deleted file mode 100644 index afaacd4eef..0000000000 --- a/boards/xc-fly/xc-slam/src/spi.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -#include -#include -#include - - -constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { - initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin3}, SPI::DRDY{GPIO::PortA, GPIO::Pin1}), - initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin2}, SPI::DRDY{GPIO::PortA, GPIO::Pin0}), - }), - initSPIBus(SPI::Bus::SPI2, { - initSPIDevice(SPIDEV_FLASH(2), SPI::CS{GPIO::PortD, GPIO::Pin4}) - }), - initSPIBus(SPI::Bus::SPI3, { - //initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortA, GPIO::Pin15}) - }), - initSPIBus(SPI::Bus::SPI4, { - initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortE, GPIO::Pin4}), - }), -}; - -static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/xc-fly/xc-slam/src/timer_config.cpp b/boards/xc-fly/xc-slam/src/timer_config.cpp deleted file mode 100644 index a1e8d8672b..0000000000 --- a/boards/xc-fly/xc-slam/src/timer_config.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - * - * * TIM2_CH1 T HEATER > PWM OUT or GPIO PA15 - ****************************************************************************/ - - -#include - -constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { - initIOTimer(Timer::Timer1, DMA{DMA::Index1}), - initIOTimer(Timer::Timer2, DMA{DMA::Index1}), - initIOTimer(Timer::Timer3, DMA{DMA::Index1}), - // initIOTimer(Timer::Timer2), - // initIOTimer(Timer::Timer3), -}; - -constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortE, GPIO::Pin9}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel3}, {GPIO::PortE, GPIO::Pin13}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel4}, {GPIO::PortE, GPIO::Pin14}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortB, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel3}, {GPIO::PortB, GPIO::Pin10}), - initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel4}, {GPIO::PortB, GPIO::Pin11}), - - -}; - -constexpr io_timers_channel_mapping_t io_timers_channel_mapping = - initIOTimerChannelMapping(io_timers, timer_io_channels); diff --git a/boards/xc-fly/xc-slam/src/usb.c b/boards/xc-fly/xc-slam/src/usb.c deleted file mode 100644 index 9591784866..0000000000 --- a/boards/xc-fly/xc-slam/src/usb.c +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -/** - * @file usb.c - * - * Board-specific USB functions. - */ - -#include "board_config.h" -#include -#include -#include -#include - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32H7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - -/************************************************************************************ - * Name: stm32_usbsuspend - * - * Description: - * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is - * used. This function is called whenever the USB enters or leaves suspend mode. - * This is an opportunity for the board logic to shutdown clocks, power, etc. - * while the USB is suspended. - * - ************************************************************************************/ -__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) -{ - uinfo("resume: %d\n", resume); -} diff --git a/boards/xc-fly/xc-slim/bootloader.px4board b/boards/xc-fly/xc-slim/bootloader.px4board deleted file mode 100644 index 19b6e662be..0000000000 --- a/boards/xc-fly/xc-slim/bootloader.px4board +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_ROMFSROOT="" diff --git a/boards/xc-fly/xc-slim/default.px4board b/boards/xc-fly/xc-slim/default.px4board deleted file mode 100644 index 77fa872875..0000000000 --- a/boards/xc-fly/xc-slim/default.px4board +++ /dev/null @@ -1,89 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0" -CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS1" -CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3" -CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" -CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS7" -CONFIG_BOARD_SERIAL_RC="/dev/ttyS4" -CONFIG_BOARD_SERIAL_EXT2="/dev/ttyS2" -CONFIG_DRIVERS_ADC_BOARD_ADC=y -CONFIG_DRIVERS_BAROMETER_DPS310=y -CONFIG_DRIVERS_CAMERA_CAPTURE=y -CONFIG_DRIVERS_CAMERA_TRIGGER=y -CONFIG_DRIVERS_CDCACM_AUTOSTART=y -CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y -CONFIG_DRIVERS_DISTANCE_SENSOR_TF02PRO=y -CONFIG_DRIVERS_DISTANCE_SENSOR_TFMINI=y -CONFIG_DRIVERS_DSHOT=y -CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_IMU_BOSCH_BMI088=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y -CONFIG_DRIVERS_MAGNETOMETER_ISENTEK_IST8310=y -CONFIG_DRIVERS_MAGNETOMETER_QMC5883L=y -CONFIG_DRIVERS_PWM_OUT=y -CONFIG_DRIVERS_RC_INPUT=y -CONFIG_COMMON_TELEMETRY=y -CONFIG_DRIVERS_TONE_ALARM=y -CONFIG_DRIVERS_UAVCAN=y -CONFIG_BOARD_UAVCAN_INTERFACES=1 -CONFIG_MODULES_BATTERY_STATUS=y -CONFIG_MODULES_CAMERA_FEEDBACK=y -CONFIG_MODULES_COMMANDER=y -CONFIG_MODULES_CONTROL_ALLOCATOR=y -CONFIG_MODULES_DATAMAN=y -CONFIG_MODULES_EKF2=y -CONFIG_MODULES_ESC_BATTERY=y -CONFIG_MODULES_EVENTS=y -CONFIG_MODULES_FLIGHT_MODE_MANAGER=y -CONFIG_MODULES_FW_ATT_CONTROL=y -CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y -CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y -CONFIG_MODULES_FW_MODE_MANAGER=y -CONFIG_MODULES_FW_RATE_CONTROL=y -CONFIG_MODULES_GIMBAL=y -CONFIG_MODULES_GYRO_CALIBRATION=y -CONFIG_MODULES_GYRO_FFT=y -CONFIG_MODULES_LAND_DETECTOR=y -CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y -CONFIG_MODULES_LOAD_MON=y -CONFIG_MODULES_LOCAL_POSITION_ESTIMATOR=y -CONFIG_MODULES_LOGGER=y -CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y -CONFIG_MODULES_MANUAL_CONTROL=y -CONFIG_MODULES_MAVLINK=y -CONFIG_MODULES_MC_ATT_CONTROL=y -CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y -CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y -CONFIG_MODULES_MC_POS_CONTROL=y -CONFIG_MODULES_MC_RATE_CONTROL=y -CONFIG_MODULES_NAVIGATOR=y -CONFIG_MODULES_RC_UPDATE=y -CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=y -CONFIG_MODULES_VTOL_ATT_CONTROL=y -CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y -CONFIG_SYSTEMCMDS_BL_UPDATE=y -CONFIG_SYSTEMCMDS_DMESG=y -CONFIG_SYSTEMCMDS_DUMPFILE=y -CONFIG_SYSTEMCMDS_GPIO=y -CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y -CONFIG_SYSTEMCMDS_I2CDETECT=y -CONFIG_SYSTEMCMDS_LED_CONTROL=y -CONFIG_SYSTEMCMDS_MFT=y -CONFIG_SYSTEMCMDS_MTD=y -CONFIG_SYSTEMCMDS_NSHTERM=y -CONFIG_SYSTEMCMDS_PARAM=y -CONFIG_SYSTEMCMDS_PERF=y -CONFIG_SYSTEMCMDS_REBOOT=y -CONFIG_SYSTEMCMDS_SD_BENCH=y -CONFIG_SYSTEMCMDS_SD_STRESS=y -CONFIG_SYSTEMCMDS_SYSTEM_TIME=y -CONFIG_SYSTEMCMDS_TOP=y -CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y -CONFIG_SYSTEMCMDS_TUNE_CONTROL=y -CONFIG_SYSTEMCMDS_UORB=y -CONFIG_SYSTEMCMDS_USB_CONNECTED=y -CONFIG_SYSTEMCMDS_VER=y -CONFIG_SYSTEMCMDS_WORK_QUEUE=y -CONFIG_EXAMPLES_FAKE_GPS=y diff --git a/boards/xc-fly/xc-slim/extras/xc-fly_xc-slam_bootloader.bin b/boards/xc-fly/xc-slim/extras/xc-fly_xc-slam_bootloader.bin deleted file mode 100755 index b8f290f227..0000000000 Binary files a/boards/xc-fly/xc-slim/extras/xc-fly_xc-slam_bootloader.bin and /dev/null differ diff --git a/boards/xc-fly/xc-slim/firmware.prototype b/boards/xc-fly/xc-slim/firmware.prototype deleted file mode 100644 index 9d3f72a26b..0000000000 --- a/boards/xc-fly/xc-slim/firmware.prototype +++ /dev/null @@ -1,13 +0,0 @@ -{ - "board_id": 319, - "magic": "PX4FWv1", - "description": "Firmware for the XC-FLY board", - "image": "", - "build_time": 0, - "summary": "XC-FLY", - "version": "0.1", - "image_size": 0, - "image_maxsize": 1835008, - "git_identity": "", - "board_revision": 0 -} diff --git a/boards/xc-fly/xc-slim/init/rc.board_defaults b/boards/xc-fly/xc-slim/init/rc.board_defaults deleted file mode 100644 index 828c3f01ba..0000000000 --- a/boards/xc-fly/xc-slim/init/rc.board_defaults +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# -# board specific defaults -#------------------------------------------------------------------------------ -param set-default BAT1_A_PER_V 17 -param set-default BAT1_N_CELLS 4 -param set-default BAT1_V_CHARGED 4.2 -param set-default BAT1_V_DIV 10.1 -param set-default BAT1_V_EMPTY 3.2 - -param set-default SYS_HAS_MAG 1 -param set-default PWM_MAIN_TIM0 -4 -param set-default RC_INPUT_PROTO -1 - -param set-default IMU_GYRO_RATEMAX 2000 -param set-default SYS_AUTOSTART 4001 -param set-default MC_PITCHRATE_K 0.4 -param set-default MC_ROLLRATE_K 0.35 -param set-default MC_YAWRATE_K 1.2 -param set-default MC_YAWRATE_MAX 360 -param set-default MAV_TYPE 2 -param set-default CA_AIRFRAME 0 -param set-default CA_ROTOR_COUNT 4 -param set-default CBRK_SUPPLY_CHK 894281 - -param set-default USB_MAV_MODE 5 diff --git a/boards/xc-fly/xc-slim/init/rc.board_extras b/boards/xc-fly/xc-slim/init/rc.board_extras deleted file mode 100644 index a6f12267a3..0000000000 --- a/boards/xc-fly/xc-slim/init/rc.board_extras +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# -# board specific extras init -#------------------------------------------------------------------------------ - -# DShot telemetry is always on UART7 -# dshot telemetry -d /dev/ttyS5 diff --git a/boards/xc-fly/xc-slim/init/rc.board_sensors b/boards/xc-fly/xc-slim/init/rc.board_sensors deleted file mode 100644 index 4f27cd2cf3..0000000000 --- a/boards/xc-fly/xc-slim/init/rc.board_sensors +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# -# board specific sensors init -#------------------------------------------------------------------------------ - -board_adc start -# heater start - -# BMI088 -bmi088 -A -R 2 -s start -bmi088 -G -R 2 -s start - -# 42688P -icm42688p -s start - -# baro -dps310 -I start -a 119 - -# internal mag -ist8310 -I -R 2 start diff --git a/boards/xc-fly/xc-slim/nuttx-config/Kconfig b/boards/xc-fly/xc-slim/nuttx-config/Kconfig deleted file mode 100644 index bb33d3cfda..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/Kconfig +++ /dev/null @@ -1,17 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see misc/tools/kconfig-language.txt. -# -config BOARD_HAS_PROBES - bool "Board provides GPIO or other Hardware for signaling to timing analyze." - default y - ---help--- - This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers. - -config BOARD_USE_PROBES - bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11" - default n - depends on BOARD_HAS_PROBES - - ---help--- - Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers. diff --git a/boards/xc-fly/xc-slim/nuttx-config/bootloader/defconfig b/boards/xc-fly/xc-slim/nuttx-config/bootloader/defconfig deleted file mode 100644 index c4942fb50e..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/bootloader/defconfig +++ /dev/null @@ -1,90 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DEV_CONSOLE is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_SPI_EXCHANGE is not set -# CONFIG_STM32H7_SYSCFG is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/xc-fly/xc-slim/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=768 -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_BOARDCTL=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BOARD_INITTHREAD_PRIORITY=254 -CONFIG_BOARD_LATE_INITIALIZE=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_CDCACM=y -CONFIG_CDCACM_IFLOWCONTROL=y -CONFIG_CDCACM_PRODUCTID=0x0036 -CONFIG_CDCACM_PRODUCTSTR="XC-FLY XC-SLIM Bootloader" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C -CONFIG_CDCACM_VENDORSTR="XC-FLY" -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEBUG_TCBINFO=y -CONFIG_DEFAULT_SMALL=y -CONFIG_EXPERIMENTAL=y -CONFIG_FDCLONE_DISABLE=y -CONFIG_FDCLONE_STDIO=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_INIT_ENTRYPOINT="bootloader_main" -CONFIG_INIT_STACKSIZE=3194 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SPI=y -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=32 -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_USART6=y -CONFIG_SYSTEMTICK_HOOK=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_TTY_SIGINT=y -CONFIG_TTY_SIGINT_CHAR=0x03 -CONFIG_TTY_SIGTSTP=y -CONFIG_USART6_RXBUFSIZE=600 -CONFIG_USART6_TXBUFSIZE=300 -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 diff --git a/boards/xc-fly/xc-slim/nuttx-config/include/board.h b/boards/xc-fly/xc-slim/nuttx-config/include/board.h deleted file mode 100644 index e9546956be..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/include/board.h +++ /dev/null @@ -1,491 +0,0 @@ -/************************************************************************************ - * nuttx-configs/px4_fmu-v6u/include/board.h - * - * Copyright (C) 2016-2019 Gregory Nutt. All rights reserved. - * Authors: David Sidrane - * - * 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 NuttX 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. - * - ************************************************************************************/ -#ifndef __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H -#define __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H - -/************************************************************************************ - * Included Files - ************************************************************************************/ - -#include "board_dma_map.h" - -#include - -#ifndef __ASSEMBLY__ -# include -#endif - -#include "stm32_rcc.h" -#include "stm32_sdmmc.h" - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ - -/* Clocking *************************************************************************/ -/* The MatekH743-Slim board provides the following clock sources: - * - * X1: 16 MHz crystal for HSE - * - * So we have these clock source available within the STM32 - * - * HSI: 16 MHz RC factory-trimmed - * HSE: 16 MHz crystal for HSE - */ - -#define STM32_BOARD_XTAL 8000000ul - -#define STM32_HSI_FREQUENCY 16000000ul -#define STM32_LSI_FREQUENCY 32000 -#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL -#define STM32_LSE_FREQUENCY 32768 - -/* Main PLL Configuration. - * - * PLL source is HSE = 16,000,000 - * - * PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN - * Subject to: - * - * 1 <= PLLM <= 63 - * 4 <= PLLN <= 512 - * 150 MHz <= PLL_VCOL <= 420MHz - * 192 MHz <= PLL_VCOH <= 836MHz - * - * SYSCLK = PLL_VCO / PLLP - * CPUCLK = SYSCLK / D1CPRE - * Subject to - * - * PLLP1 = {2, 4, 6, 8, ..., 128} - * PLLP2,3 = {2, 3, 4, ..., 128} - * CPUCLK <= 480 MHz - */ - -#define STM32_BOARD_USEHSE - -#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE - -/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR - * - * PLL1_VCO = (8,000,000 / 1) * 120 = 960 MHz - * - * PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz - * PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz - * PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz - */ - -#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP1EN | \ - RCC_PLLCFGR_DIVQ1EN | \ - RCC_PLLCFGR_DIVR1EN) -#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1) -#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(120) -#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2) -#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4) -#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8) - -#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 120) -#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2) -#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4) -#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8) - -/* PLL2 */ - -#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP2EN | \ - RCC_PLLCFGR_DIVQ2EN | \ - RCC_PLLCFGR_DIVR2EN) -#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(2) -#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48) -#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2) -#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2) -#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2) - -#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2) - -/* PLL3 */ - -#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVQ3EN) -#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(2) -#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48) -#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2) -#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4) -#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2) - -#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2) -#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4) -#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2) - -/* SYSCLK = PLL1P = 480MHz - * CPUCLK = SYSCLK / 1 = 480 MHz - */ - -#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK) -#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY) -#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1) - -/* Configure Clock Assignments */ - -/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max) - * HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240 - */ - -#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */ -#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */ -#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */ -#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ - -/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */ -#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ -#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ -#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ - -#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ -#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* Timer clock frequencies */ - -/* Timers driven from APB1 will be twice PCLK1 */ - -#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) - -/* Timers driven from APB2 will be twice PCLK2 */ - -#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY) - -/* Kernel Clock Configuration - * - * Note: look at Table 54 in ST Manual - */ - -/* I2C123 clock source */ - -#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI - -/* I2C4 clock source */ - -#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI - -/* SPI123 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 - -/* SPI45 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 - -/* SPI6 clock source */ - -#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 - -/* USB 1 and 2 clock source */ - -#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 - -/* ADC 1 2 3 clock source */ - -#define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2 - -/* FDCAN 1 clock source */ - -// #define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ - -#define STM32_FDCANCLK STM32_HSE_FREQUENCY - -/* FLASH wait states - * - * ------------ ---------- ----------- - * Vcore MAX ACLK WAIT STATES - * ------------ ---------- ----------- - * 1.15-1.26 V 70 MHz 0 - * (VOS1 level) 140 MHz 1 - * 210 MHz 2 - * 1.05-1.15 V 55 MHz 0 - * (VOS2 level) 110 MHz 1 - * 165 MHz 2 - * 220 MHz 3 - * 0.95-1.05 V 45 MHz 0 - * (VOS3 level) 90 MHz 1 - * 135 MHz 2 - * 180 MHz 3 - * 225 MHz 4 - * ------------ ---------- ----------- - */ - -#define BOARD_FLASH_WAITSTATES 2 - -/* SDMMC definitions ********************************************************/ - -/* Init 400kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */ - -#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) - -/* 25 MHz Max for now, 25 mHZ = PLL1Q/(2*div), div = PLL1Q/(2*freq) - * div = 4.8 = 240 / 50, So round up to 5 for default speed 24 MB/s - */ - -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_MMCXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_SDXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif - -#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE - -/* LED definitions ******************************************************************/ -/* The board has two, LED_GREEN a Green LED and LED_BLUE a Blue LED, - * that can be controlled by software. - * - * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way. - * The following definitions are used to access individual LEDs. - */ - -/* LED index values for use with board_userled() */ - -#define BOARD_LED1 0 -#define BOARD_LED2 1 -#define BOARD_LED3 2 -#define BOARD_NLEDS 3 - -#define BOARD_LED_RED BOARD_LED1 -#define BOARD_LED_GREEN BOARD_LED2 -#define BOARD_LED_BLUE BOARD_LED3 - -/* LED bits for use with board_userled_all() */ - -#define BOARD_LED1_BIT (1 << BOARD_LED1) -#define BOARD_LED2_BIT (1 << BOARD_LED2) -#define BOARD_LED3_BIT (1 << BOARD_LED3) - -/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in - * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related - * events as follows: - * - * - * SYMBOL Meaning LED state - * Red Green Blue - * ---------------------- -------------------------- ------ ------ ----*/ - -#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ -#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ -#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ -#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ -#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ -#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ -#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ -#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ -#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ - -/* Thus if the Green LED is statically on, NuttX has successfully booted and - * is, apparently, running normally. If the Red LED is flashing at - * approximately 2Hz, then a fatal error has been detected and the system - * has halted. - */ - -/* Alternate function pin selections ************************************************/ - -#define GPIO_USART1_RX GPIO_USART1_RX_2 /* PBA10 */ -#define GPIO_USART1_TX GPIO_USART1_TX_2 /* PA9 */ -#define GPIO_USART1_CK GPIO_USART1_CK /* PB8 NC */ - -#define GPIO_USART2_RX GPIO_USART2_RX_2 /* PD6 */ -#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ -#define GPIO_USART2_CK GPIO_USART2_CK_2 /* PD7 NC */ - -#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ -#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ -#define GPIO_USART3_CK GPIO_USART3_CK_3 /* PD10 NC */ - -#define GPIO_UART4_RX GPIO_UART4_RX_3 /* PB8 */ -#define GPIO_UART4_TX GPIO_UART4_TX_3 /* PB9 */ - -#define GPIO_UART5_RX GPIO_UART5_RX_1 /* PB12 */ -#define GPIO_UART5_TX GPIO_UART5_TX_1 /* PB13 */ - -#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ -#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */ - -#define GPIO_UART7_RX GPIO_UART7_RX_3 /* PE7 */ -#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 NC */ - -#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */ -#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ - - - -/* SPI - * - - */ - -#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) - -#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ -#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 /* PA7 */ -#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */ - -#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */ -#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_3 /* PC3 */ -#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_5) /* PD3 */ - -#define GPIO_SPI3_MISO GPIO_SPI3_MISO_1 /* PB4 */ -#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_3 /* PB2 */ -#define GPIO_SPI3_SCK ADJ_SLEW_RATE(GPIO_SPI3_SCK_1) /* PB3 */ - -#define GPIO_SPI4_MISO GPIO_SPI4_MISO_2 /* PE5 */ -#define GPIO_SPI4_MOSI GPIO_SPI4_MOSI_2 /* PE6 */ -#define GPIO_SPI4_SCK ADJ_SLEW_RATE(GPIO_SPI4_SCK_2) /* PE2 */ - -/* I2C - * - - * - */ - -#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1 /* PB6 */ -#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */ - -#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6) -#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7) - -#define GPIO_I2C4_SCL GPIO_I2C4_SCL_1 /* PD12 */ -#define GPIO_I2C4_SDA GPIO_I2C4_SDA_1 /* PD13 */ - -#define GPIO_I2C4_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN12) -#define GPIO_I2C4_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN13) - -#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ -#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ - -/* SDMMC1 - * - * SDMMC1_D0 PC8 - * SDMMC1_D1 PC9 - * SDMMC1_D2 PC10 - * SDMMC1_D3 PC11 - * SDMMC1_CK PC12 - * SDMMC1_CMD PD2 - */ - -// #define GPIO_SDMMC1_D0 GPIO_SDMMC1_D0 /* PC8 */ -// #define GPIO_SDMMC1_D1 GPIO_SDMMC1_D1 /* PC9 */ -// #define GPIO_SDMMC1_D2 GPIO_SDMMC1_D2 /* PC10 */ -// #define GPIO_SDMMC1_D3 GPIO_SDMMC1_D3 /* PC11 */ -// #define GPIO_SDMMC1_CK GPIO_SDMMC1_CK /* PC12 */ -// #define GPIO_SDMMC1_CMD GPIO_SDMMC1_CMD /* PD2 */ - - -/* USB - * - * OTG_FS_DM PA11 - * OTG_FS_DP PA12 - * VBUS PA9 - */ - - -/* Board provides GPIO or other Hardware for signaling to timing analyzer */ - -// #if defined(CONFIG_BOARD_USE_PROBES) -// # include "stm32_gpio.h" -// # define PROBE_N(n) (1<<((n)-1)) -// # define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ -// # define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ -// # define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ -// # define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ -// # define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ -// # define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ -// # define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ -// # define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ -// # define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ - -// # define PROBE_INIT(mask) \ -// do { \ -// if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ -// if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ -// if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ -// if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ -// if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ -// if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ -// if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ -// if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ -// if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ -// } while(0) - -// # define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) -// # define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) -// #else -// # define PROBE_INIT(mask) -// # define PROBE(n,s) -// # define PROBE_MARK(n) -// #endif - -#endif /*__NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H */ diff --git a/boards/xc-fly/xc-slim/nuttx-config/include/board_dma_map.h b/boards/xc-fly/xc-slim/nuttx-config/include/board_dma_map.h deleted file mode 100644 index a27735b354..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/include/board_dma_map.h +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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 -// #define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* DMA1:37 */ -// #define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* DMA1:38 */ - -#define DMAMAP_SPI2_RX DMAMAP_DMA12_SPI2RX_0 /* DMA1:39 */ -#define DMAMAP_SPI2_TX DMAMAP_DMA12_SPI2TX_0 /* DMA1:40 */ - -// DMAMUX2 -// #define DMAMAP_SPI3_RX DMAMAP_DMA12_SPI3RX_0 /* DMA1:61 */ -// #define DMAMAP_SPI3_TX DMAMAP_DMA12_SPI3TX_0 /* DMA1:62 */ - -// #define DMAMAP_SPI6_RX DMAMAP_BDMA_SPI6_RX /* BDMA:11 */ -// #define DMAMAP_SPI6_TX DMAMAP_BDMA_SPI6_TX /* BDMA:12 */ - -//TODO: UART DMA test -// #define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_1 /*DMA2:41*/ -// #define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_1 /*DMA2:42*/ - -// #define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_1 /* DMA2:43 */ -// #define DMAMAP_USART2_TX DMAMAP_DMA12_USART2TX_1 /* DMA2:44 */ - -// #define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 /* DMA2:45 */ -// #define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 /* DMA2:46 */ - -#define DMAMAP_UART4_RX DMAMAP_DMA12_UART4RX_1 /* DMA1:63 */ -#define DMAMAP_UART4_TX DMAMAP_DMA12_UART4TX_1 /* DMA1:64 */ - -// #define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_0 /* DMA1:65 */ -// #define DMAMAP_UART5_TX DMAMAP_DMA12_UART5RX_0 /* DMA1:66 */ diff --git a/boards/xc-fly/xc-slim/nuttx-config/nsh/defconfig b/boards/xc-fly/xc-slim/nuttx-config/nsh/defconfig deleted file mode 100644 index 17f16669ae..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/nsh/defconfig +++ /dev/null @@ -1,268 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DISABLE_ENVIRON is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set -# CONFIG_MMCSD_HAVE_CARDDETECT is not set -# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set -# CONFIG_MMCSD_MMCSUPPORT is not set -# CONFIG_MMCSD_SPI is not set -# CONFIG_NSH_DISABLEBG is not set -# CONFIG_NSH_DISABLESCRIPT is not set -# CONFIG_NSH_DISABLE_CAT is not set -# CONFIG_NSH_DISABLE_CD is not set -# CONFIG_NSH_DISABLE_CP is not set -# CONFIG_NSH_DISABLE_DATE is not set -# CONFIG_NSH_DISABLE_DF is not set -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_EXEC is not set -# CONFIG_NSH_DISABLE_EXIT is not set -# CONFIG_NSH_DISABLE_EXPORT is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_GET is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_ITEF is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LOOPS is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MKFATFS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PS is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE is not set -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_RM is not set -# CONFIG_NSH_DISABLE_RMDIR is not set -# CONFIG_NSH_DISABLE_SEMICOLON is not set -# CONFIG_NSH_DISABLE_SET is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_TIME is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/xc-fly/xc-slim/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=768 -CONFIG_ARCH_STACKDUMP=y -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_DCACHE=y -CONFIG_ARMV7M_DTCM=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_ARM_MPU_EARLY_RESET=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BOARD_CRASHDUMP=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BUILTIN=y -CONFIG_CDCACM=y -CONFIG_CDCACM_IFLOWCONTROL=y -CONFIG_CDCACM_PRODUCTID=0x0036 -CONFIG_CDCACM_PRODUCTSTR="XC-FLY XC-SLIM" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C -CONFIG_CDCACM_VENDORSTR="XC-FLY" -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_HARDFAULT_ALERT=y -CONFIG_DEBUG_MEMFAULT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEFAULT_SMALL=y -CONFIG_DEV_FIFO_SIZE=0 -CONFIG_DEV_PIPE_MAXSIZE=1024 -CONFIG_DEV_PIPE_SIZE=70 -CONFIG_EXPERIMENTAL=y -CONFIG_FAT_DMAMEMORY=y -CONFIG_FAT_LCNAMES=y -CONFIG_FAT_LFN=y -CONFIG_FAT_LFN_ALIAS_HASH=y -CONFIG_FDCLONE_STDIO=y -CONFIG_FS_BINFS=y -CONFIG_FS_CROMFS=y -CONFIG_FS_FAT=y -CONFIG_FS_FATTIME=y -CONFIG_FS_PROCFS=y -CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y -CONFIG_FS_PROCFS_MAX_TASKS=64 -CONFIG_FS_PROCFS_REGISTER=y -CONFIG_FS_ROMFS=y -CONFIG_GRAN=y -CONFIG_GRAN_INTR=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_I2C=y -CONFIG_I2C_RESET=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_INIT_ENTRYPOINT="nsh_main" -CONFIG_INIT_STACKSIZE=3194 -CONFIG_IOB_NBUFFERS=24 -CONFIG_IOB_NCHAINS=24 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_MAX_EXITFUNS=1 -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_MMCSD=y -CONFIG_MMCSD_SDIO=y -CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y -CONFIG_MM_IOB=y -CONFIG_MM_REGIONS=4 -CONFIG_MTD=y -CONFIG_MTD_BYTE_WRITE=y -CONFIG_MTD_PARTITION=y -CONFIG_MTD_PROGMEM=y -CONFIG_MTD_RAMTRON=y -CONFIG_MTD_W25=y -CONFIG_NAME_MAX=40 -CONFIG_NSH_ARCHINIT=y -CONFIG_NSH_ARGCAT=y -CONFIG_NSH_BUILTIN_APPS=y -CONFIG_NSH_CMDPARMS=y -CONFIG_NSH_CROMFSETC=y -CONFIG_NSH_LINELEN=128 -CONFIG_NSH_MAXARGUMENTS=15 -CONFIG_NSH_NESTDEPTH=8 -CONFIG_NSH_QUOTE=y -CONFIG_NSH_ROMFSETC=y -CONFIG_NSH_ROMFSSECTSIZE=128 -CONFIG_NSH_STRERROR=y -CONFIG_NSH_VARS=y -CONFIG_OTG_ID_GPIO_DISABLE=y -CONFIG_PIPES=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PRIORITY_INHERITANCE=y -CONFIG_PTHREAD_MUTEX_ROBUST=y -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAMTRON_SETSPEED=y -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_READLINE_CMD_HISTORY=y -CONFIG_READLINE_TABCOMPLETION=y -CONFIG_RTC_DATETIME=y -CONFIG_SCHED_HPWORK=y -CONFIG_SCHED_HPWORKPRIORITY=249 -CONFIG_SCHED_HPWORKSTACKSIZE=1280 -CONFIG_SCHED_INSTRUMENTATION=y -CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y -CONFIG_SCHED_INSTRUMENTATION_SWITCH=y -CONFIG_SCHED_LPWORK=y -CONFIG_SCHED_LPWORKPRIORITY=50 -CONFIG_SCHED_LPWORKSTACKSIZE=1632 -CONFIG_SCHED_WAITPID=y -CONFIG_SDMMC1_SDIO_PULLUP=y -CONFIG_SEM_PREALLOCHOLDERS=32 -CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SIG_SIGWORK=4 -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=256 -CONFIG_STM32H7_ADC1=y -CONFIG_STM32H7_ADC2=y -CONFIG_STM32H7_ADC3=y -CONFIG_STM32H7_BBSRAM=y -CONFIG_STM32H7_BBSRAM_FILES=5 -CONFIG_STM32H7_BDMA=y -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_DMA2=y -CONFIG_STM32H7_DMACAPABLE=y -CONFIG_STM32H7_FLASH_OVERRIDE_I=y -CONFIG_STM32H7_FLOWCONTROL_BROKEN=y -CONFIG_STM32H7_I2C1=y -CONFIG_STM32H7_I2C4=y -CONFIG_STM32H7_I2C_DYNTIMEO=y -CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10 -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_RTC=y -CONFIG_STM32H7_RTC_HSECLOCK=y -CONFIG_STM32H7_RTC_MAGIC_REG=1 -CONFIG_STM32H7_SAVE_CRASHDUMP=y -CONFIG_STM32H7_SDMMC1=y -CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_SPI1=y -CONFIG_STM32H7_SPI2=y -CONFIG_STM32H7_SPI2_DMA=y -CONFIG_STM32H7_SPI2_DMA_BUFFER=4096 -CONFIG_STM32H7_SPI3=y -CONFIG_STM32H7_SPI4=y -CONFIG_STM32H7_SPI_DMATHRESHOLD=8 -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_TIM2=y -CONFIG_STM32H7_TIM3=y -CONFIG_STM32H7_TIM4=y -CONFIG_STM32H7_TIM8=y -CONFIG_STM32H7_UART4=y -CONFIG_STM32H7_UART5=y -CONFIG_STM32H7_UART7=y -CONFIG_STM32H7_UART8=y -CONFIG_STM32H7_USART1=y -CONFIG_STM32H7_USART2=y -CONFIG_STM32H7_USART3=y -CONFIG_STM32H7_USART6=y -CONFIG_STM32H7_USART_BREAKS=y -CONFIG_STM32H7_USART_INVERT=y -CONFIG_STM32H7_USART_SINGLEWIRE=y -CONFIG_STM32H7_USART_SWAP=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_SYSTEM_NSH=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_UART4_BAUD=921600 -CONFIG_UART4_RXBUFSIZE=3000 -CONFIG_UART4_RXDMA=y -CONFIG_UART4_TXBUFSIZE=3000 -CONFIG_UART4_TXDMA=y -CONFIG_UART5_BAUD=57600 -CONFIG_UART5_RXBUFSIZE=600 -CONFIG_UART5_TXBUFSIZE=1500 -CONFIG_UART7_BAUD=57600 -CONFIG_UART7_RXBUFSIZE=600 -CONFIG_UART7_TXBUFSIZE=3000 -CONFIG_UART8_BAUD=57600 -CONFIG_UART8_RXBUFSIZE=600 -CONFIG_UART8_TXBUFSIZE=3000 -CONFIG_USART1_BAUD=57600 -CONFIG_USART1_RXBUFSIZE=600 -CONFIG_USART1_TXBUFSIZE=1500 -CONFIG_USART2_BAUD=57600 -CONFIG_USART2_RXBUFSIZE=600 -CONFIG_USART2_TXBUFSIZE=3000 -CONFIG_USART3_BAUD=57600 -CONFIG_USART3_RXBUFSIZE=180 -CONFIG_USART3_TXBUFSIZE=1500 -CONFIG_USART6_BAUD=57600 -CONFIG_USART6_RXBUFSIZE=180 -CONFIG_USART6_SERIAL_CONSOLE=y -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 -CONFIG_WATCHDOG=y -CONFIG_WQUEUE_NOTIFIER=y diff --git a/boards/xc-fly/xc-slim/nuttx-config/scripts/bootloader_script.ld b/boards/xc-fly/xc-slim/nuttx-config/scripts/bootloader_script.ld deleted file mode 100644 index fb877cc443..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/scripts/bootloader_script.ld +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The Durandal-v1 uses an STM32H743II has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * The Durandal has a Switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the swiutch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - flash (rx) : ORIGIN = 0x08000000, LENGTH = 2048K - dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K - sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K - sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K - sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K - sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K - bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > flash - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > flash - - - .ARM.extab : { - *(.ARM.extab*) - } > flash - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > flash - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - } > sram AT > flash - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > sram - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/xc-fly/xc-slim/nuttx-config/scripts/script.ld b/boards/xc-fly/xc-slim/nuttx-config/scripts/script.ld deleted file mode 100644 index 1dc1a0ef97..0000000000 --- a/boards/xc-fly/xc-slim/nuttx-config/scripts/script.ld +++ /dev/null @@ -1,228 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2020 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The board uses an STM32H743II and has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * There's a switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the switch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1792K - - DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - AXI_SRAM (rwx) : ORIGIN = 0x24000000, LENGTH = 512K /* D1 domain AXI bus */ - SRAM1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K /* D2 domain AHB bus */ - SRAM4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K /* D3 domain */ - BKPRAM (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > FLASH - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > FLASH - - - .ARM.extab : { - *(.ARM.extab*) - } > FLASH - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > FLASH - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - - /* Pad out last section as the STM32H7 Flash write size is 256 bits. 32 bytes */ - . = ALIGN(16); - FILL(0xffff) - . += 16; - } > AXI_SRAM AT > FLASH = 0xffff - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > AXI_SRAM - - /* Emit the the D3 power domain section for locating BDMA data */ - - .sram4_reserve (NOLOAD) : - { - *(.sram4) - . = ALIGN(4); - _sram4_heap_start = ABSOLUTE(.); - } > SRAM4 - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/xc-fly/xc-slim/src/CMakeLists.txt b/boards/xc-fly/xc-slim/src/CMakeLists.txt deleted file mode 100644 index 798c524347..0000000000 --- a/boards/xc-fly/xc-slim/src/CMakeLists.txt +++ /dev/null @@ -1,69 +0,0 @@ -############################################################################ -# -# Copyright (c) 2021 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. -# -############################################################################ -if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") - add_library(drivers_board - bootloader_main.c - usb.c - ) - target_link_libraries(drivers_board - PRIVATE - nuttx_arch - nuttx_drivers - bootloader - ) - target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) - -else() - add_library(drivers_board - i2c.cpp - init.c - led.c - sdio.c - spi.cpp - timer_config.cpp - usb.c - mtd.cpp - ) - # add_dependencies(drivers_board arch_board_hw_info) - - target_link_libraries(drivers_board - PRIVATE - arch_io_pins - arch_spi - arch_board_hw_info - drivers__led - nuttx_arch - nuttx_drivers - px4_layer - ) -endif() diff --git a/boards/xc-fly/xc-slim/src/board_config.h b/boards/xc-fly/xc-slim/src/board_config.h deleted file mode 100644 index 94c52d9489..0000000000 --- a/boards/xc-fly/xc-slim/src/board_config.h +++ /dev/null @@ -1,234 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file board_config.h - * - * Board internal definitions - */ - -#pragma once - -/**************************************************************************************************** - * Included Files - ****************************************************************************************************/ - -#include -#include -#include - -#include - -/**************************************************************************************************** - * Definitions - ****************************************************************************************************/ - -#define FLASH_BASED_PARAMS - - -/* LEDs are driven with push open drain to support Anode to 5V or 3.3V */ - -# define GPIO_nLED_RED /* PD15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN15) -# define GPIO_nLED_GREEN /* PD11 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN11) -# define GPIO_nLED_BLUE /* PB15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN15) - -# define BOARD_HAS_CONTROL_STATUS_LEDS 1 -# define BOARD_OVERLOAD_LED LED_RED -# define BOARD_ARMED_STATE_LED LED_BLUE - -/* - * ADC channels - * - * These are the channel numbers of the ADCs of the microcontroller that - * can be used by the Px4 Firmware in the adc driver - */ - -/* ADC defines to be used in sensors.cpp to read from a particular channel */ - -#define SYSTEM_ADC_BASE STM32_ADC1_BASE - -#define ADC12_CH(n) (n) - -#define PX4_ADC_GPIO \ - /* PC4 */ GPIO_ADC12_INP4, \ - /* PC5 */ GPIO_ADC12_INP8 - -/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ -/* Define Channel numbers must match above GPIO pin IN(n)*/ -#define ADC_BATTERY_VOLTAGE_CHANNEL ADC12_CH(4) -#define ADC_BATTERY_CURRENT_CHANNEL ADC12_CH(8) - -#define ADC_CHANNELS \ - ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY_CURRENT_CHANNEL)) - -#define BOARD_ADC_OPEN_CIRCUIT_V (1.6f) - - - -/* Define Battery 1 Voltage Divider and A per V - */ - -// #define BOARD_BATTERY1_V_DIV (11.0f) /* measured with the provided PM board */ -// #define BOARD_BATTERY1_A_PER_V (40.0f) -// #define BOARD_BATTERY2_V_DIV (11.0f) /* measured with the provided PM board */ - -/* PWM - */ -#define DIRECT_PWM_OUTPUT_CHANNELS 8 - -#define BOARD_HAS_PWM DIRECT_PWM_OUTPUT_CHANNELS - - - - -// /* HEATER PA15 TIM2_CH1 -// * PWM in future -// */ -// #define GPIO_HEATER1_OUTPUT /* PA15 T2CH1 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -// #define HEATER1_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER1_OUTPUT, (on_true)) - - - - -/* Spare GPIO */ -#define GPIO_PA4 /* PA4 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTA|GPIO_PIN4) -#define GPIO_PC0 /* PC0 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN0) -#define GPIO_PC1 /* PC1 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN1) -/* Tone alarm output */ - -#define TONE_ALARM_TIMER 2 /* Timer 2*/ -#define TONE_ALARM_CHANNEL 1 /* PA15 GPIO_TIM2_CH1 NC */ -/*NC can be modified with Spare GPIO then connected with hardware */ -#define GPIO_BUZZER_1 /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) - -#define GPIO_TONE_ALARM_IDLE GPIO_BUZZER_1 -#define GPIO_TONE_ALARM GPIO_BUZZER_1 -#define GPIO_TONE_ALARM_GPIO /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN15) - -/* USB OTG FS - * - * PE15 OTG_FS_VBUS VBUS sensing - */ -#define GPIO_OTGFS_VBUS /* PE15 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTE|GPIO_PIN15) -#define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS)) - -/* High-resolution timer */ -#define HRT_TIMER 8 /* use timer1 for the HRT */ -#define HRT_TIMER_CHANNEL 1 /* use capture/compare channel 1 */ - -/* RC Serial port */ -#define RC_SERIAL_PORT "/dev/ttyS4" -#define BOARD_SUPPORTS_RC_SERIAL_PORT_OUTPUT - -// #define GPIO_SBUS_INV (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) -// #define RC_INVERT_INPUT(_invert_true) px4_arch_gpiowrite(GPIO_SBUS_INV, _invert_true); - -/* SD card bringup does not work if performed on the IDLE thread because it - * will cause waiting. Use either: - * - * CONFIG_LIB_BOARDCTL=y, OR - * CONFIG_BOARD_INITIALIZE=y && CONFIG_BOARD_INITTHREAD=y - */ -#define SDIO_SLOTNO 0 /* Only one slot */ -#define SDIO_MINOR 0 -#if defined(CONFIG_BOARD_INITIALIZE) && !defined(CONFIG_LIB_BOARDCTL) && \ - !defined(CONFIG_BOARD_INITTHREAD) -# warning SDIO initialization cannot be perfomed on the IDLE thread -#endif - -/* This board provides a DMA pool and APIs */ -#define BOARD_DMA_ALLOC_POOL_SIZE 5120 - -/* This board provides the board_on_reset interface */ -#define BOARD_HAS_ON_RESET 1 - -#define PX4_GPIO_INIT_LIST { \ - GPIO_CAN1_TX,\ - GPIO_CAN1_RX, \ - PX4_ADC_GPIO, \ - GPIO_PC0, \ - GPIO_PC1, \ - GPIO_TONE_ALARM_IDLE, \ - } - -#define BOARD_ENABLE_CONSOLE_BUFFER - -#define BOARD_NUM_IO_TIMERS 5 - - -__BEGIN_DECLS - -/**************************************************************************************************** - * Public Types - ****************************************************************************************************/ - -/**************************************************************************************************** - * Public data - ****************************************************************************************************/ - -#ifndef __ASSEMBLY__ - -/**************************************************************************************************** - * Public Functions - ****************************************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void); - -/**************************************************************************************************** - * Name: stm32_spiinitialize - * - * Description: - * Called to configure SPI chip select GPIO pins for the board. - * - ****************************************************************************************************/ - -extern void stm32_spiinitialize(void); - -extern void stm32_usbinitialize(void); - -extern void board_peripheral_reset(int ms); - -#include - -#endif /* __ASSEMBLY__ */ - -__END_DECLS diff --git a/boards/xc-fly/xc-slim/src/bootloader_main.c b/boards/xc-fly/xc-slim/src/bootloader_main.c deleted file mode 100644 index 5670308a29..0000000000 --- a/boards/xc-fly/xc-slim/src/bootloader_main.c +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file bootloader_main.c - * - * FMU-specific early startup code for bootloader -*/ - -#include "board_config.h" -#include "bl.h" - -#include -#include -#include -#include -#include -#include "arm_internal.h" -#include - -extern int sercon_main(int c, char **argv); - -__EXPORT void board_on_reset(int status) {} - -__EXPORT void stm32_boardinitialize(void) -{ - /* configure USB interfaces */ - stm32_usbinitialize(); -} - -__EXPORT int board_app_initialize(uintptr_t arg) -{ - return 0; -} - -void board_late_initialize(void) -{ - sercon_main(0, NULL); -} - -extern void sys_tick_handler(void); -void board_timerhook(void) -{ - sys_tick_handler(); -} diff --git a/boards/xc-fly/xc-slim/src/flash_w25q128.c b/boards/xc-fly/xc-slim/src/flash_w25q128.c deleted file mode 100644 index 3a3e2cee1f..0000000000 --- a/boards/xc-fly/xc-slim/src/flash_w25q128.c +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2020 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. - * - ****************************************************************************/ - -/** - * @file flash_w25q128.c - * - * Board-specific external flash W25Q128 functions. - */ - - -#include "board_config.h" -#include "qspi.h" -#include "arm_internal.h" -#include -#include - - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ -/* Configuration ********************************************************************/ - -#define N25Q128_SECTOR_SIZE (4*1024) -#define N25Q128_SECTOR_SHIFT (12) -#define N25Q128_SECTOR_COUNT (4096) -#define N25Q128_PAGE_SIZE (256) -#define N25Q128_PAGE_SHIFT (8) - -#define W25Q_DUMMY_CYCLES_FAST_READ_QUAD 6 -#define W25Q_INSTR_FAST_READ_QUAD 0xEB -#define W25Q_ADDRESS_SIZE 3 // 3 bytes -> 24 bits - -#define N25QXXX_READ_STATUS 0x05 /* Read status register: * - * 0x05 | SR */ -#define N25QXXX_PAGE_PROGRAM 0x02 /* Page Program: * - * 0x02 | ADDR(MS) | ADDR(MID) | * - * ADDR(LS) | data */ -#define N25QXXX_WRITE_ENABLE 0x06 /* Write enable: * - * 0x06 */ -#define N25QXXX_WRITE_DISABLE 0x04 /* Write disable command code: * - * 0x04 */ -#define N25QXXX_SUBSECTOR_ERASE 0x20 /* Sub-sector Erase (4 kB) * - * 0x20 | ADDR(MS) | ADDR(MID) | * - * ADDR(LS) */ - - -/* N25QXXX Registers ****************************************************************/ -/* Status register bit definitions */ - -#define STATUS_BUSY_MASK (1 << 0) /* Bit 0: Device ready/busy status */ -# define STATUS_READY (0 << 0) /* 0 = Not Busy */ -# define STATUS_BUSY (1 << 0) /* 1 = Busy */ -#define STATUS_WEL_MASK (1 << 1) /* Bit 1: Write enable latch status */ -# define STATUS_WEL_DISABLED (0 << 1) /* 0 = Not Write Enabled */ -# define STATUS_WEL_ENABLED (1 << 1) /* 1 = Write Enabled */ -#define STATUS_BP_SHIFT (2) /* Bits 2-4: Block protect bits */ -#define STATUS_BP_MASK (7 << STATUS_BP_SHIFT) -# define STATUS_BP_NONE (0 << STATUS_BP_SHIFT) -# define STATUS_BP_ALL (7 << STATUS_BP_SHIFT) -#define STATUS_TB_MASK (1 << 5) /* Bit 5: Top / Bottom Protect */ -# define STATUS_TB_TOP (0 << 5) /* 0 = BP2-BP0 protect Top down */ -# define STATUS_TB_BOTTOM (1 << 5) /* 1 = BP2-BP0 protect Bottom up */ -#define STATUS_BP3_MASK (1 << 5) /* Bit 6: BP3 */ -#define STATUS_SRP0_MASK (1 << 7) /* Bit 7: Status register protect 0 */ -# define STATUS_SRP0_UNLOCKED (0 << 7) /* 0 = WP# no effect / PS Lock Down */ -# define STATUS_SRP0_LOCKED (1 << 7) /* 1 = WP# protect / OTP Lock Down */ - -/************************************************************************************ - * Private Types - ************************************************************************************/ - -/* This type represents the state of the MTD device. The struct mtd_dev_s must - * appear at the beginning of the definition so that you can freely cast between - * pointers to struct mtd_dev_s and struct n25qxxx_dev_s. - */ - -struct n25qxxx_dev_s { - //struct mtd_dev_s mtd; /* MTD interface */ - FAR struct qspi_dev_s *qspi; /* Saved QuadSPI interface instance */ - uint16_t nsectors; /* Number of erase sectors */ - uint8_t sectorshift; /* Log2 of sector size */ - uint8_t pageshift; /* Log2 of page size */ - FAR uint8_t *cmdbuf; /* Allocated command buffer */ - FAR uint8_t *readbuf; /* Allocated status read buffer */ -}; - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -struct qspi_dev_s *ptr_qspi_dev; -struct qspi_meminfo_s qspi_meminfo = { - .flags = QSPIMEM_QUADIO, - .addrlen = W25Q_ADDRESS_SIZE, - .dummies = W25Q_DUMMY_CYCLES_FAST_READ_QUAD, - .cmd = W25Q_INSTR_FAST_READ_QUAD -}; - -struct n25qxxx_dev_s n25qxxx_dev; -uint8_t cmdbuf[4] = {0u}; -uint8_t readbuf[1] = {0u}; - -/************************************************************************************ - * Private Functions - ************************************************************************************/ -__ramfunc__ int n25qxxx_command(FAR struct qspi_dev_s *qspi, uint8_t cmd); -__ramfunc__ uint8_t n25qxxx_read_status(FAR struct n25qxxx_dev_s *priv); -__ramfunc__ int n25qxxx_command_read(FAR struct qspi_dev_s *qspi, uint8_t cmd, - FAR void *buffer, size_t buflen); -__ramfunc__ void n25qxxx_write_enable(FAR struct n25qxxx_dev_s *priv); -__ramfunc__ void n25qxxx_write_disable(FAR struct n25qxxx_dev_s *priv); - -__ramfunc__ int n25qxxx_write_page(struct n25qxxx_dev_s *priv, FAR const uint8_t *buffer, - off_t address, size_t buflen); - -__ramfunc__ int n25qxxx_write_one_page(struct n25qxxx_dev_s *priv, struct qspi_meminfo_s *meminfo); - -__ramfunc__ int n25qxxx_erase_sector(struct n25qxxx_dev_s *priv, off_t sector); - -__ramfunc__ bool n25qxxx_isprotected(FAR struct n25qxxx_dev_s *priv, uint8_t status, - off_t address); - -__ramfunc__ int n25qxxx_command_address(FAR struct qspi_dev_s *qspi, uint8_t cmd, - off_t addr, uint8_t addrlen); - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -void flash_w25q128_init(void) -{ - int qspi_interface_number = 0; - ptr_qspi_dev = stm32h7_qspi_initialize(qspi_interface_number); - n25qxxx_dev.qspi = ptr_qspi_dev; - n25qxxx_dev.cmdbuf = cmdbuf; - n25qxxx_dev.readbuf = readbuf; - n25qxxx_dev.sectorshift = N25Q128_SECTOR_SHIFT; - n25qxxx_dev.pageshift = N25Q128_PAGE_SHIFT; - n25qxxx_dev.nsectors = N25Q128_SECTOR_COUNT; -} - -__ramfunc__ ssize_t up_progmem_ext_getpage(size_t addr) -{ - ssize_t page_address = (addr - STM32_FMC_BANK4) / N25Q128_SECTOR_COUNT; - - return page_address; -} - -__ramfunc__ ssize_t up_progmem_ext_eraseblock(size_t block) -{ - ssize_t size = N25Q128_SECTOR_COUNT; - - irqstate_t irqstate = px4_enter_critical_section(); - stm32h7_qspi_exit_memorymapped(ptr_qspi_dev); - - n25qxxx_erase_sector(&n25qxxx_dev, block); - - stm32h7_qspi_enter_memorymapped(ptr_qspi_dev, &qspi_meminfo, 0); - px4_leave_critical_section(irqstate); - return size; -} - -__ramfunc__ ssize_t up_progmem_ext_write(size_t addr, FAR const void *buf, size_t count) -{ - ssize_t ret_val = 0; - - irqstate_t irqstate = px4_enter_critical_section(); - stm32h7_qspi_exit_memorymapped(ptr_qspi_dev); - - addr &= 0xFFFFFF; - n25qxxx_write_page(&n25qxxx_dev, buf, (off_t)addr, count); - - stm32h7_qspi_enter_memorymapped(ptr_qspi_dev, &qspi_meminfo, 0); - px4_leave_critical_section(irqstate); - - return ret_val; -} - -/************************************************************************************ - * Name: n25qxxx_command - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command(FAR struct qspi_dev_s *qspi, uint8_t cmd) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 "\n", cmd); - - cmdinfo.flags = 0; - cmdinfo.addrlen = 0; - cmdinfo.cmd = cmd; - cmdinfo.buflen = 0; - cmdinfo.addr = 0; - cmdinfo.buffer = NULL; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} - -/************************************************************************************ - * Name: n25qxxx_read_status - ************************************************************************************/ - -__ramfunc__ uint8_t n25qxxx_read_status(FAR struct n25qxxx_dev_s *priv) -{ - DEBUGVERIFY(n25qxxx_command_read(priv->qspi, N25QXXX_READ_STATUS, - (FAR void *)&priv->readbuf[0], 1)); - return priv->readbuf[0]; -} - -/************************************************************************************ - * Name: n25qxxx_command_read - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command_read(FAR struct qspi_dev_s *qspi, uint8_t cmd, - FAR void *buffer, size_t buflen) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 " buflen: %zu\n", cmd, buflen); - - cmdinfo.flags = QSPICMD_READDATA; - cmdinfo.addrlen = 0; - cmdinfo.cmd = cmd; - cmdinfo.buflen = buflen; - cmdinfo.addr = 0; - cmdinfo.buffer = buffer; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} - - -/************************************************************************************ - * Name: n25qxxx_write_enable - ************************************************************************************/ - -__ramfunc__ void n25qxxx_write_enable(FAR struct n25qxxx_dev_s *priv) -{ - uint8_t status; - - do { - n25qxxx_command(priv->qspi, N25QXXX_WRITE_ENABLE); - status = n25qxxx_read_status(priv); - } while ((status & STATUS_WEL_MASK) != STATUS_WEL_ENABLED); -} - -/************************************************************************************ - * Name: n25qxxx_write_disable - ************************************************************************************/ - -__ramfunc__ void n25qxxx_write_disable(FAR struct n25qxxx_dev_s *priv) -{ - uint8_t status; - - do { - n25qxxx_command(priv->qspi, N25QXXX_WRITE_DISABLE); - status = n25qxxx_read_status(priv); - } while ((status & STATUS_WEL_MASK) != STATUS_WEL_DISABLED); -} - -/************************************************************************************ - * Name: n25qxxx_write_page - ************************************************************************************/ - -__ramfunc__ int n25qxxx_write_page(struct n25qxxx_dev_s *priv, FAR const uint8_t *buffer, - off_t address, size_t buflen) -{ - struct qspi_meminfo_s meminfo; - unsigned int pagesize; - unsigned int npages; - unsigned int firstpagesize = 0; - int ret = OK; - unsigned int i; - - finfo("address: %08jx buflen: %zu\n", (intmax_t)address, buflen); - - pagesize = (1 << priv->pageshift); - - /* Set up non-varying parts of transfer description */ - - meminfo.flags = QSPIMEM_WRITE; - meminfo.cmd = N25QXXX_PAGE_PROGRAM; - meminfo.addrlen = 3; - meminfo.dummies = 0; - meminfo.buffer = (void *)buffer; - - if (0 != (address % pagesize)) { - firstpagesize = pagesize - (address % pagesize); - } - - if (buflen <= firstpagesize) { - meminfo.addr = address; - meminfo.buflen = buflen; - ret = n25qxxx_write_one_page(priv, &meminfo); - - } else { - - if (firstpagesize > 0) { - meminfo.addr = address; - meminfo.buflen = firstpagesize; - ret = n25qxxx_write_one_page(priv, &meminfo); - - buffer += firstpagesize; - address += firstpagesize; - buflen -= firstpagesize; - } - - npages = (buflen >> priv->pageshift); - - meminfo.buflen = pagesize; - - /* Then write each page */ - - for (i = 0; (i < npages) && (ret == OK); i++) { - /* Set up varying parts of the transfer description */ - - meminfo.addr = address; - meminfo.buffer = (void *)buffer; - - ret = n25qxxx_write_one_page(priv, &meminfo); - - /* Update for the next time through the loop */ - - buffer += pagesize; - address += pagesize; - buflen -= pagesize; - } - - if ((ret == OK) && (buflen > 0)) { - meminfo.addr = address; - meminfo.buffer = (void *)buffer; - meminfo.buflen = buflen; - - ret = n25qxxx_write_one_page(priv, &meminfo); - } - } - - return ret; -} - -__ramfunc__ int n25qxxx_write_one_page(struct n25qxxx_dev_s *priv, struct qspi_meminfo_s *meminfo) -{ - int ret; - - n25qxxx_write_enable(priv); - ret = qspi_memory(priv->qspi, meminfo); - n25qxxx_write_disable(priv); - - if (ret < 0) { - ferr("ERROR: QSPI_MEMORY failed writing address=%06" PRIx32 "\n", - meminfo->addr); - } - - return ret; -} - -/************************************************************************************ - * Name: n25qxxx_erase_sector - ************************************************************************************/ - -__ramfunc__ int n25qxxx_erase_sector(struct n25qxxx_dev_s *priv, off_t sector) -{ - off_t address; - uint8_t status; - - finfo("sector: %08jx\n", (intmax_t) sector); - - /* Check that the flash is ready and unprotected */ - - status = n25qxxx_read_status(priv); - - if ((status & STATUS_BUSY_MASK) != STATUS_READY) { - ferr("ERROR: Flash busy: %02" PRIx8, status); - return -EBUSY; - } - - /* Get the address associated with the sector */ - - address = (off_t)sector << priv->sectorshift; - - if ((status & (STATUS_BP3_MASK | STATUS_BP_MASK)) != 0 && - n25qxxx_isprotected(priv, status, address)) { - ferr("ERROR: Flash protected: %02" PRIx8, status); - return -EACCES; - } - - /* Send the sector erase command */ - - n25qxxx_write_enable(priv); - n25qxxx_command_address(priv->qspi, N25QXXX_SUBSECTOR_ERASE, address, 3); - - /* Wait for erasure to finish */ - - while ((n25qxxx_read_status(priv) & STATUS_BUSY_MASK) != 0); - - return OK; -} - -/************************************************************************************ - * Name: n25qxxx_isprotected - ************************************************************************************/ - -__ramfunc__ bool n25qxxx_isprotected(FAR struct n25qxxx_dev_s *priv, uint8_t status, - off_t address) -{ - off_t protstart; - off_t protend; - off_t protsize; - unsigned int bp; - - /* The BP field is spread across non-contiguous bits */ - - bp = (status & STATUS_BP_MASK) >> STATUS_BP_SHIFT; - - if (status & STATUS_BP3_MASK) { - bp |= 8; - } - - /* the BP field is essentially the power-of-two of the number of 64k sectors, - * saturated to the device size. - */ - - if (0 == bp) { - return false; - } - - protsize = 0x00010000; - protsize <<= (protsize << (bp - 1)); - protend = (1 << priv->sectorshift) * priv->nsectors; - - if (protsize > protend) { - protsize = protend; - } - - /* The final protection range then depends on if the protection region is - * configured top-down or bottom up (assuming CMP=0). - */ - - if ((status & STATUS_TB_MASK) != 0) { - protstart = 0x00000000; - protend = protstart + protsize; - - } else { - protstart = protend - protsize; - /* protend already computed above */ - } - - return (address >= protstart && address < protend); -} - -/************************************************************************************ - * Name: n25qxxx_command_address - ************************************************************************************/ - -__ramfunc__ int n25qxxx_command_address(FAR struct qspi_dev_s *qspi, uint8_t cmd, - off_t addr, uint8_t addrlen) -{ - struct qspi_cmdinfo_s cmdinfo; - - finfo("CMD: %02" PRIx8 " Address: %04jx addrlen=%" PRIx8 "\n", cmd, (intmax_t) addr, addrlen); - - cmdinfo.flags = QSPICMD_ADDRESS; - cmdinfo.addrlen = addrlen; - cmdinfo.cmd = cmd; - cmdinfo.buflen = 0; - cmdinfo.addr = addr; - cmdinfo.buffer = NULL; - - int rv; - rv = qspi_command(qspi, &cmdinfo); - return rv; -} diff --git a/boards/xc-fly/xc-slim/src/hw_config.h b/boards/xc-fly/xc-slim/src/hw_config.h deleted file mode 100644 index e986fe0e90..0000000000 --- a/boards/xc-fly/xc-slim/src/hw_config.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -/**************************************************************************** - * 10-8--2016: - * To simplify the ripple effect on the tools, we will be using - * /dev/serial/by-id/PX4 to locate PX4 devices. Therefore - * moving forward all Bootloaders must contain the prefix "PX4 BL " - * in the USBDEVICESTRING - * This Change will be made in an upcoming BL release - ****************************************************************************/ -/* - * Define usage to configure a bootloader - * - * - * Constant example Usage - * APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed - * BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request - * BOARD_FMUV2 - * INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading - * INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading - * USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string - * USBPRODUCTID 0x0011 - PID Should match defconfig - * BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom - * delay provided by an APP FW - * BOARD_TYPE 9 - Must match .prototype boad_id - * _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection - * BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector - * BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector - * BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time. - * (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted - * programmatically - * - * BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing. - * This is to allow sectors to be reserved for app fw usage. That will NOT be erased - * during a FW upgrade. - * The default is 0, and selects the first sector to be erased, as the 0th entry in the - * flash_sectors table. Which is the second physical sector of FLASH in the device. - * The first physical sector of FLASH is used by the bootloader, and is not defined - * in the table. - * - * APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus - * BOOTLOADER_RESERVATION_SIZE will be deducted from - * BOARD_FLASH_SIZE to determine the size of the App FW - * and hence the address space of FLASH to erase and program. - * USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.) - * SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL - * - * * Other defines are somewhat self explanatory. - */ - -/* Boot device selection list*/ -#define USB0_DEV 0x01 -#define SERIAL0_DEV 0x02 -#define SERIAL1_DEV 0x04 - -#define APP_LOAD_ADDRESS 0x08020000 -#define BOOTLOADER_DELAY 5000 -#define INTERFACE_USB 1 -#define INTERFACE_USB_CONFIG "/dev/ttyACM0" -#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) - -//#define USE_VBUS_PULL_DOWN -#define INTERFACE_USART 6 -#define INTERFACE_USART_CONFIG "/dev/ttyS5,57600" -#define BOOT_DELAY_ADDRESS 0x000001a0 -#define BOARD_TYPE 319 -#define BOARD_FLASH_SECTORS (14) -#define BOARD_FLASH_SIZE (16 * 128 * 1024) -#define APP_RESERVATION_SIZE (1 * 128 * 1024) - -#define OSC_FREQ 16 - -#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE -#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_RED // RED -#define BOARD_LED_ON 1 -#define BOARD_LED_OFF 0 - -#define SERIAL_BREAK_DETECT_DISABLED 1 - -#if !defined(ARCH_SN_MAX_LENGTH) -# define ARCH_SN_MAX_LENGTH 12 -#endif - -#if !defined(APP_RESERVATION_SIZE) -# define APP_RESERVATION_SIZE 0 -#endif - -#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE) -# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1 -#endif - -#if !defined(USB_DATA_ALIGN) -# define USB_DATA_ALIGN -#endif - -#ifndef BOOT_DEVICES_SELECTION -# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif - -#ifndef BOOT_DEVICES_FILTER_ONUSB -# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif diff --git a/boards/xc-fly/xc-slim/src/i2c.cpp b/boards/xc-fly/xc-slim/src/i2c.cpp deleted file mode 100644 index d557e692af..0000000000 --- a/boards/xc-fly/xc-slim/src/i2c.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -#include - -constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { - initI2CBusInternal(1), - initI2CBusExternal(4), -}; diff --git a/boards/xc-fly/xc-slim/src/init.c b/boards/xc-fly/xc-slim/src/init.c deleted file mode 100644 index cd7d3d2162..0000000000 --- a/boards/xc-fly/xc-slim/src/init.c +++ /dev/null @@ -1,210 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file init.c - * - * FMU-specific early startup code. This file implements the - * board_app_initialize() function that is called early by nsh during startup. - * - * Code here is run before the rcS script is invoked; it should start required - * subsystems and perform board-specific initialisation. - */ - -#include "board_config.h" - -#include - -#include -#include -#include -#include -#include -#include "arm_internal.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -# if defined(FLASH_BASED_PARAMS) -# include -#endif - -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -__END_DECLS - -/************************************************************************************ - * Name: board_peripheral_reset - * - * Description: - * - ************************************************************************************/ -__EXPORT void board_peripheral_reset(int ms) -{ - UNUSED(ms); -} - -/************************************************************************************ - * Name: board_on_reset - * - * Description: - * Optionally provided function called on entry to board_system_reset - * It should perform any house keeping prior to the rest. - * - * status - 1 if resetting to boot loader - * 0 if just resetting - * - ************************************************************************************/ -__EXPORT void board_on_reset(int status) -{ - for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { - px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i))); - } - - /* - * On resets invoked from system (not boot) ensure we establish a low - * output state on PWM pins to disarm the ESC and prevent the reset from potentially - * spinning up the motors. - */ - if (status >= 0) { - up_mdelay(100); - } -} - -/************************************************************************************ - * Name: stm32_boardinitialize - * - * Description: - * All STM32 architectures must provide the following entry point. This entry point - * is called early in the initialization -- after all memory has been configured - * and mapped but before any devices have been initialized. - * - ************************************************************************************/ -__EXPORT void stm32_boardinitialize(void) -{ - /* Reset PWM first thing */ - board_on_reset(-1); - - /* configure LEDs */ - board_autoled_initialize(); - - /* configure pins */ - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure SPI interfaces */ - stm32_spiinitialize(); - - /* configure USB interfaces */ - stm32_usbinitialize(); - -} - -/**************************************************************************** - * Name: board_app_initialize - * - * Description: - * Perform application specific initialization. This function is never - * called directly from application code, but only indirectly via the - * (non-standard) boardctl() interface using the command BOARDIOC_INIT. - * - * Input Parameters: - * arg - The boardctl() argument is passed to the board_app_initialize() - * implementation without modification. The argument has no - * meaning to NuttX; - * - * Returned Value: - * Zero (OK) is returned on success; a negated errno value is returned on - * any failure to indicate the nature of the failure. - * - ****************************************************************************/ -__EXPORT int board_app_initialize(uintptr_t arg) -{ - /* Need hrt running before using the ADC */ - px4_platform_init(); - - /* configure the DMA allocator */ - if (board_dma_alloc_init() < 0) { - syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); - } - - /* initial LED state */ - drv_led_start(); - led_off(LED_RED); - led_off(LED_BLUE); - - if (board_hardfault_init(2, true) != 0) { - led_on(LED_BLUE); - } - -#ifdef CONFIG_MMCSD - int ret = stm32_sdio_initialize(); - - if (ret != OK) { - led_on(LED_BLUE); - return ret; - } - -#endif - -// TODO:internal flash store parameters -#if defined(FLASH_BASED_PARAMS) - static sector_descriptor_t params_sector_map[] = { - {15, 128 * 1024, 0x081E0000}, - {0, 0, 0}, - }; - - /* Initialize the flashfs layer to use heap allocated memory */ - int result = parameter_flashfs_init(params_sector_map, NULL, 0); - - if (result != OK) { - syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result); - led_on(LED_RED); - } - -#endif - - /* Configure the HW based on the manifest */ - px4_platform_configure(); - - return OK; -} diff --git a/boards/xc-fly/xc-slim/src/led.c b/boards/xc-fly/xc-slim/src/led.c deleted file mode 100644 index 0420c1da2e..0000000000 --- a/boards/xc-fly/xc-slim/src/led.c +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file led.c - * - * LED backend. - */ - -#include - -#include - -#include "chip.h" -#include "stm32_gpio.h" -#include "board_config.h" - -#include -#include - -/* - * Ideally we'd be able to get these from arm_internal.h, - * but since we want to be able to disable the NuttX use - * of leds for system indication at will and there is no - * separate switch, we need to build independent of the - * CONFIG_ARCH_LEDS configuration switch. - */ -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -extern void led_toggle(int led); -__END_DECLS - -# define xlat(p) (p) -static uint32_t g_ledmap[] = { - GPIO_nLED_GREEN, // Indexed by BOARD_LED_GREEN - GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE - GPIO_nLED_RED, // Indexed by BOARD_LED_RED -}; - -__EXPORT void led_init(void) -{ - /* Configure LED GPIOs for output */ - for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { - if (g_ledmap[l] != 0) { - stm32_configgpio(g_ledmap[l]); - } - } -} - -static void phy_set_led(int led, bool state) -{ - /* Drive Low to switch on */ - if (g_ledmap[led] != 0) { - stm32_gpiowrite(g_ledmap[led], !state); - } -} - -static bool phy_get_led(int led) -{ - /* If Low it is on */ - if (g_ledmap[led] != 0) { - return !stm32_gpioread(g_ledmap[led]); - } - - return false; -} - -__EXPORT void led_on(int led) -{ - phy_set_led(xlat(led), true); -} - -__EXPORT void led_off(int led) -{ - phy_set_led(xlat(led), false); -} - -__EXPORT void led_toggle(int led) -{ - phy_set_led(xlat(led), !phy_get_led(xlat(led))); -} diff --git a/boards/xc-fly/xc-slim/src/manifest.c b/boards/xc-fly/xc-slim/src/manifest.c deleted file mode 100644 index ab9c952cdd..0000000000 --- a/boards/xc-fly/xc-slim/src/manifest.c +++ /dev/null @@ -1,131 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2018-2021 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. - * - ****************************************************************************/ - -/** - * @file manifest.c - * - * This module supplies the interface to the manifest of hardware that is - * optional and dependent on the HW REV and HW VER IDs - * - * The manifest allows the system to know whether a hardware option - * say for example the PX4IO is an no-pop option vs it is broken. - * - */ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include - -#include "systemlib/px4_macros.h" - -/**************************************************************************** - * Pre-Processor Definitions - ****************************************************************************/ - -typedef struct { - uint32_t hw_ver_rev; /* the version and revision */ - const px4_hw_mft_item_t *mft; /* The first entry */ - uint32_t entries; /* the length of the list */ -} px4_hw_mft_list_entry_t; - -typedef px4_hw_mft_list_entry_t *px4_hw_mft_list_entry; -#define px4_hw_mft_list_uninitialized (px4_hw_mft_list_entry) -1 - -static const px4_hw_mft_item_t device_unsupported = {0, 0, 0}; - -// List of components on a specific board configuration -// The index of those components is given by the enum (px4_hw_mft_item_id_t) -// declared in board_common.h -static const px4_hw_mft_item_t hw_mft_list_v0600[] = { - { - .present = 0, - .mandatory = 0, - .connection = px4_hw_con_unknown, - }, -}; - -static px4_hw_mft_list_entry_t mft_lists[] = { - {V6U00, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)}, -}; - -/************************************************************************************ - * Name: board_query_manifest - * - * Description: - * Optional returns manifest item. - * - * Input Parameters: - * manifest_id - the ID for the manifest item to retrieve - * - * Returned Value: - * 0 - item is not in manifest => assume legacy operations - * pointer to a manifest item - * - ************************************************************************************/ - -__EXPORT px4_hw_mft_item board_query_manifest(px4_hw_mft_item_id_t id) -{ - static px4_hw_mft_list_entry boards_manifest = px4_hw_mft_list_uninitialized; - - if (boards_manifest == px4_hw_mft_list_uninitialized) { - uint32_t ver_rev = board_get_hw_version() << 16; - ver_rev |= board_get_hw_revision(); - - for (unsigned i = 0; i < arraySize(mft_lists); i++) { - if (mft_lists[i].hw_ver_rev == ver_rev) { - boards_manifest = &mft_lists[i]; - break; - } - } - - if (boards_manifest == px4_hw_mft_list_uninitialized) { - syslog(LOG_ERR, "[boot] Board %08" PRIx32 " is not supported!\n", ver_rev); - } - } - - px4_hw_mft_item rv = &device_unsupported; - - if (boards_manifest != px4_hw_mft_list_uninitialized && - id < boards_manifest->entries) { - rv = &boards_manifest->mft[id]; - } - - return rv; -} diff --git a/boards/xc-fly/xc-slim/src/mtd.cpp b/boards/xc-fly/xc-slim/src/mtd.cpp deleted file mode 100644 index e89e53e03b..0000000000 --- a/boards/xc-fly/xc-slim/src/mtd.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2020 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. - * - ****************************************************************************/ -//TODO:Prepare for NxtDual - -#include -#include -// KiB BS nB -static const px4_mft_device_t spi2 = { // FM25V02A on FMUM native: 32K X 8, emulated as (1024 Blocks of 32) - .bus_type = px4_mft_device_t::SPI, - .devid = SPIDEV_FLASH(2) // SPIDEV_FLASH(0) -}; - -static const px4_mtd_entry_t fmum_flash = { - .device = &spi2, - .npart = 1, - .partd = { - { - .type = MTD_PARAMETERS, - .path = "/fs/mtd_params", - .nblocks = 32 - - } - }, -}; - -static const px4_mtd_manifest_t board_mtd_config = { - .nconfigs = 1, - .entries = { - &fmum_flash - } -}; - -static const px4_mft_entry_s mtd_mft = { - .type = MTD, - .pmft = (void *) &board_mtd_config, -}; - -static const px4_mft_s mft = { - .nmft = 1, - .mfts = { - &mtd_mft - } -}; - -const px4_mft_s *board_get_manifest(void) -{ - return &mft; -} diff --git a/boards/xc-fly/xc-slim/src/sdio.c b/boards/xc-fly/xc-slim/src/sdio.c deleted file mode 100644 index 869d757756..0000000000 --- a/boards/xc-fly/xc-slim/src/sdio.c +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "chip.h" -#include "board_config.h" -#include "stm32_gpio.h" -#include "stm32_sdmmc.h" - -#ifdef CONFIG_MMCSD - - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Card detections requires card support and a card detection GPIO */ - -#define HAVE_NCD 1 -#if !defined(GPIO_SDMMC1_NCD) -# undef HAVE_NCD -#endif - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -static FAR struct sdio_dev_s *sdio_dev; -#ifdef HAVE_NCD -static bool g_sd_inserted = 0xff; /* Impossible value */ -#endif - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_ncd_interrupt - * - * Description: - * Card detect interrupt handler. - * - ****************************************************************************/ - -#ifdef HAVE_NCD -static int stm32_ncd_interrupt(int irq, FAR void *context) -{ - bool present; - - present = !stm32_gpioread(GPIO_SDMMC1_NCD); - - if (sdio_dev && present != g_sd_inserted) { - sdio_mediachange(sdio_dev, present); - g_sd_inserted = present; - } - - return OK; -} -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void) -{ - int ret; - -#ifdef HAVE_NCD - /* Card detect */ - - bool cd_status; - - /* Configure the card detect GPIO */ - - stm32_configgpio(GPIO_SDMMC1_NCD); - - /* Register an interrupt handler for the card detect pin */ - - stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); -#endif - - /* Mount the SDIO-based MMC/SD block driver */ - /* First, get an instance of the SDIO interface */ - - finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); - - sdio_dev = sdio_initialize(SDIO_SLOTNO); - - if (!sdio_dev) { - syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); - return -ENODEV; - } - - /* Now bind the SDIO interface to the MMC/SD driver */ - - finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); - - ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); - - if (ret != OK) { - syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); - return ret; - } - - finfo("Successfully bound SDIO to the MMC/SD driver\n"); - -#ifdef HAVE_NCD - /* Use SD card detect pin to check if a card is g_sd_inserted */ - - cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); - finfo("Card detect : %d\n", cd_status); - - sdio_mediachange(sdio_dev, cd_status); -#else - /* Assume that the SD card is inserted. What choice do we have? */ - - sdio_mediachange(sdio_dev, true); -#endif - - return OK; -} - -#endif /* CONFIG_MMCSD */ diff --git a/boards/xc-fly/xc-slim/src/spi.cpp b/boards/xc-fly/xc-slim/src/spi.cpp deleted file mode 100644 index afaacd4eef..0000000000 --- a/boards/xc-fly/xc-slim/src/spi.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -#include -#include -#include - - -constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { - initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin3}, SPI::DRDY{GPIO::PortA, GPIO::Pin1}), - initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortA, GPIO::Pin2}, SPI::DRDY{GPIO::PortA, GPIO::Pin0}), - }), - initSPIBus(SPI::Bus::SPI2, { - initSPIDevice(SPIDEV_FLASH(2), SPI::CS{GPIO::PortD, GPIO::Pin4}) - }), - initSPIBus(SPI::Bus::SPI3, { - //initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortA, GPIO::Pin15}) - }), - initSPIBus(SPI::Bus::SPI4, { - initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortE, GPIO::Pin4}), - }), -}; - -static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/xc-fly/xc-slim/src/timer_config.cpp b/boards/xc-fly/xc-slim/src/timer_config.cpp deleted file mode 100644 index a1e8d8672b..0000000000 --- a/boards/xc-fly/xc-slim/src/timer_config.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - * - * * TIM2_CH1 T HEATER > PWM OUT or GPIO PA15 - ****************************************************************************/ - - -#include - -constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { - initIOTimer(Timer::Timer1, DMA{DMA::Index1}), - initIOTimer(Timer::Timer2, DMA{DMA::Index1}), - initIOTimer(Timer::Timer3, DMA{DMA::Index1}), - // initIOTimer(Timer::Timer2), - // initIOTimer(Timer::Timer3), -}; - -constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortE, GPIO::Pin9}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel3}, {GPIO::PortE, GPIO::Pin13}), - initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel4}, {GPIO::PortE, GPIO::Pin14}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortB, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel3}, {GPIO::PortB, GPIO::Pin10}), - initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel4}, {GPIO::PortB, GPIO::Pin11}), - - -}; - -constexpr io_timers_channel_mapping_t io_timers_channel_mapping = - initIOTimerChannelMapping(io_timers, timer_io_channels); diff --git a/boards/xc-fly/xc-slim/src/usb.c b/boards/xc-fly/xc-slim/src/usb.c deleted file mode 100644 index 9591784866..0000000000 --- a/boards/xc-fly/xc-slim/src/usb.c +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -/** - * @file usb.c - * - * Board-specific USB functions. - */ - -#include "board_config.h" -#include -#include -#include -#include - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32H7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - -/************************************************************************************ - * Name: stm32_usbsuspend - * - * Description: - * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is - * used. This function is called whenever the USB enters or leaves suspend mode. - * This is an opportunity for the board logic to shutdown clocks, power, etc. - * while the USB is suspended. - * - ************************************************************************************/ -__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) -{ - uinfo("resume: %d\n", resume); -} diff --git a/src/lib/battery/battery.cpp b/src/lib/battery/battery.cpp index 121a4fb4db..95b1c3109f 100644 --- a/src/lib/battery/battery.cpp +++ b/src/lib/battery/battery.cpp @@ -159,6 +159,7 @@ void Battery::updateBatteryStatus(const hrt_abstime ×tamp) if (_vehicle_status_sub.copy(&vehicle_status)) { _armed = (vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED); + _vehicle_status_is_fw = (vehicle_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING); } } } @@ -370,29 +371,19 @@ void Battery::computeScale() float Battery::computeRemainingTime(float current_a) { float time_remaining_s = NAN; - bool reset_current_avg_filter = false; - - if (_vehicle_status_sub.updated()) { - vehicle_status_s vehicle_status; - - if (_vehicle_status_sub.copy(&vehicle_status)) { - - if (vehicle_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING && !_vehicle_status_is_fw) { - reset_current_avg_filter = true; - } - - _vehicle_status_is_fw = (vehicle_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING); - } - } _flight_phase_estimation_sub.update(); + bool reset_filter_transition_now = !_vehicle_status_was_fw && _vehicle_status_is_fw; + // reset filter if not feasible, negative or we did a VTOL transition to FW mode if (!PX4_ISFINITE(_current_average_filter_a.getState()) || _current_average_filter_a.getState() < FLT_EPSILON - || reset_current_avg_filter) { + || reset_filter_transition_now) { _current_average_filter_a.reset(_params.bat_avrg_current); } + _vehicle_status_was_fw = _vehicle_status_is_fw; + if (_armed && PX4_ISFINITE(current_a)) { // For FW only update when we are in level flight if (!_vehicle_status_is_fw || ((hrt_absolute_time() - _flight_phase_estimation_sub.get().timestamp) < 2_s diff --git a/src/lib/battery/battery.h b/src/lib/battery/battery.h index 7699ffab3e..bcc9baa6d9 100644 --- a/src/lib/battery/battery.h +++ b/src/lib/battery/battery.h @@ -202,6 +202,7 @@ private: hrt_abstime _last_timestamp{0}; bool _armed{false}; bool _vehicle_status_is_fw{false}; + bool _vehicle_status_was_fw{false}; hrt_abstime _last_unconnected_timestamp{0}; // Internal Resistance estimation diff --git a/src/lib/pid/PID.hpp b/src/lib/pid/PID.hpp index 615fd60b22..526abccf4c 100644 --- a/src/lib/pid/PID.hpp +++ b/src/lib/pid/PID.hpp @@ -46,8 +46,8 @@ public: void setSetpoint(const float setpoint) { _setpoint = setpoint; } float update(const float feedback, const float dt, const bool update_integral = true); float getIntegral() { return _integral; } - void resetIntegral() { _integral = 0.f; }; - void resetDerivative() { _last_feedback = NAN; }; + void resetIntegral() { _integral = 0.f; } + void resetDerivative() { _last_feedback = NAN; } private: void updateIntegral(float error, const float dt); float updateDerivative(float feedback, const float dt);