diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe0f5cd67..c14216629 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,14 +54,18 @@ jobs: run: | echo EXTRA_ZEPHYR_MODULES="$(pwd)/$MODULE_PATH" >> $GITHUB_ENV - - name: Build fade + - name: Apply Zephyr patches run: | - west build -p -b arduino_nano_33_ble//sense $MODULE_PATH/samples/fade + bash $MODULE_PATH/extra/apply_zephyr_patches.sh - - name: Build i2cdemo + - name: Build blinky run: | - west build -p -b ek_ra8d1 $MODULE_PATH/samples/i2cdemo + west build -p -b kit_pse84_ai/pse846gps2dbzc4a/m33 $MODULE_PATH/samples/blinky_arduino - - name: Build adc + - name: Build hello run: | - west build -p -b arduino_nano_33_ble/nrf52840/sense $MODULE_PATH/samples/analog_input + west build -p -b kit_pse84_ai/pse846gps2dbzc4a/m33 $MODULE_PATH/samples/hello_arduino + + - name: Build threads + run: | + west build -p -b kit_pse84_ai/pse846gps2dbzc4a/m33 $MODULE_PATH/samples/threads_arduino diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 4c64c8b37..c91c4e1b2 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -378,6 +378,21 @@ jobs: tar xf ${CORE_ARTIFACT} # will create ArduinoCore-zephyr/ echo "REPORT_FILE=$(echo ${FQBN} | tr ':' '-').json" >> $GITHUB_ENV + - name: Install arm-zephyr-eabi 1.0.1 for zephyr_contrib boards + # zephyr_contrib boards (e.g. kit_pse84_ai) use Zephyr 4.4.0 + SDK 1.0.1. + # The Board Manager only ships arm-zephyr-eabi-0.16.8 (for SDK 0.16.8/Zephyr 4.2.0). + # We install 1.0.1 manually into the arduino-cli packages path so that + # {runtime.tools.arm-zephyr-eabi-1.0.1.path} resolves correctly during compilation. + if: ${{ matrix.subarch == 'zephyr_contrib' }} + run: | + TOOL_DIR=~/.arduino15/packages/zephyr/tools/arm-zephyr-eabi/1.0.1 + if [ ! -d "$TOOL_DIR/bin" ]; then + mkdir -p "$TOOL_DIR" + wget -q https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.1/toolchain_gnu_linux-x86_64_arm-zephyr-eabi.tar.xz -O /tmp/arm-zephyr-eabi.tar.xz + tar -xf /tmp/arm-zephyr-eabi.tar.xz -C "$TOOL_DIR" --strip-components=1 + rm /tmp/arm-zephyr-eabi.tar.xz + fi + - name: Get test sketches run: | # sets ALL_TESTS and ALL_LIBRARIES env vars in GITHUB_ENV diff --git a/.github/workflows/release_pse84.yml b/.github/workflows/release_pse84.yml new file mode 100644 index 000000000..f10445c68 --- /dev/null +++ b/.github/workflows/release_pse84.yml @@ -0,0 +1,171 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + +# PSE84-specific release workflow: triggered automatically when package_core.yml +# completes successfully on main. Bumps the version, tags the commit, and +# publishes the ArduinoCore-zephyr_contrib package as a GitHub Release. + +name: Release PSE84 + +on: + workflow_run: + workflows: ["Package, test and upload core"] + types: [completed] + branches: [main] + +jobs: + + bump-version-and-tag: + name: Bump version, tag, and create release + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' && endsWith(github.repository, '/ArduinoCore-zephyr') && github.triggering_actor != 'github-actions[bot]' }} + permissions: + contents: write + outputs: + release_tag: ${{ steps.release_tag.outputs.release_tag }} + steps: + + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Compute next release tag + id: release_tag + env: + RELEASE_BUMP: patch + run: | + git fetch --tags + + EXISTING_TAG=$(git tag --points-at "${{ github.event.workflow_run.head_sha }}" --list '[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | head -n1) + if [ -n "${EXISTING_TAG}" ]; then + echo "Using existing tag on HEAD: ${EXISTING_TAG}" + echo "release_tag=${EXISTING_TAG}" >> "$GITHUB_OUTPUT" + exit 0 + fi + + LAST_TAG=$(git tag --list '[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | head -n1) + if [ -z "${LAST_TAG}" ]; then + LAST_TAG="0.0.0" + fi + + IFS='.' read -r MAJOR MINOR PATCH <<< "${LAST_TAG}" + case "${RELEASE_BUMP}" in + major) + MAJOR=$((MAJOR + 1)) + MINOR=0 + PATCH=0 + ;; + minor) + MINOR=$((MINOR + 1)) + PATCH=0 + ;; + *) + PATCH=$((PATCH + 1)) + ;; + esac + + NEW_TAG="${MAJOR}.${MINOR}.${PATCH}" + echo "release_tag=${NEW_TAG}" >> "$GITHUB_OUTPUT" + + - name: Create release (and tag if missing) + env: + GH_TOKEN: ${{ github.token }} + TAG: ${{ steps.release_tag.outputs.release_tag }} + run: | + if gh release view "${TAG}" >/dev/null 2>&1; then + echo "Release ${TAG} already exists" + else + gh release create "${TAG}" \ + --target "${{ github.event.workflow_run.head_sha }}" \ + --title "ArduinoCore-zephyr-pse84 ${TAG}" \ + --notes "Automated release for ${{ github.event.workflow_run.head_sha }}." + fi + + + publish-pse84-release: + name: Publish PSE84 release assets + runs-on: ubuntu-latest + needs: + - bump-version-and-tag + if: ${{ needs.bump-version-and-tag.result == 'success' }} + permissions: + contents: write + actions: read + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + TAG: ${{ needs.bump-version-and-tag.outputs.release_tag }} + steps: + + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + persist-credentials: false + fetch-tags: true + + - name: Download zephyr_contrib artifact from triggering workflow run + uses: actions/download-artifact@v8 + with: + pattern: ArduinoCore-zephyr_contrib-* + path: release-assets + merge-multiple: true + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Normalize artifact filename for release tag + run: | + if [ -z "${TAG}" ]; then + echo "Release tag is empty" >&2 + exit 1 + fi + + TAR_FILE=$(ls release-assets/ArduinoCore-zephyr_contrib-*.tar.bz2 | head -n1) + if [ -z "${TAR_FILE}" ]; then + echo "Downloaded artifact does not contain expected tarball" >&2 + exit 1 + fi + + OLD_BASENAME=$(basename "${TAR_FILE}") + NEW_BASENAME="ArduinoCore-zephyr_contrib-${TAG}.tar.bz2" + + if [ "${OLD_BASENAME}" != "${NEW_BASENAME}" ]; then + mv "${TAR_FILE}" "release-assets/${NEW_BASENAME}" + echo "Renamed ${OLD_BASENAME} -> ${NEW_BASENAME}" + fi + + echo "TAR_BASENAME=${NEW_BASENAME}" >> "$GITHUB_ENV" + + - name: Generate package index JSON + run: | + ARTIFACT_PATH="release-assets/${TAR_BASENAME}" + SIZE=$(wc -c < "${ARTIFACT_PATH}") + SHA256=$(sha256sum "${ARTIFACT_PATH}" | cut -d' ' -f1) + URL="https://github.com/${GH_REPO}/releases/download/${TAG}/${TAR_BASENAME}" + + python3 - <> $env:GITHUB_ENV + + - name: Compute SHA-256 and size + run: | + $hash = (Get-FileHash -Algorithm SHA256 $env:TAR_NAME).Hash.ToLower() + $size = (Get-Item $env:TAR_NAME).Length + echo "TAR_SHA256=$hash" >> $env:GITHUB_ENV + echo "TAR_SIZE=$size" >> $env:GITHUB_ENV + + - name: Upload to GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.event.inputs.release_tag }} + files: ${{ env.TAR_NAME }} + + - name: Print package index values + run: | + Write-Host "" + Write-Host "=== Paste these into the Windows entry of the package index template ===" + Write-Host "archiveFileName : $env:TAR_NAME" + Write-Host "url : https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.release_tag }}/$env:TAR_NAME" + Write-Host "checksum : SHA-256:$env:TAR_SHA256" + Write-Host "size : $env:TAR_SIZE" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..72d5247e7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,289 @@ +## Development Notes + +This core uses Zephyr plus a board-specific loader. Sketches are built as loadable artifacts and executed by the preflashed loader firmware. + +- Loader and boot integration: [loader](loader) +- Core implementation: [cores/arduino](cores/arduino) +- PSOC™ Edge E84 variant files: [variants/kit_pse84_ai_pse846gps2dbzc4a_m33](variants/kit_pse84_ai_pse846gps2dbzc4a_m33) + +Key implementation areas in this repository: + +- Board definition and upload tooling: [boards.txt](boards.txt) +- Variant for KIT-PSE84-AI: [variants/kit_pse84_ai_pse846gps2dbzc4a_m33](variants/kit_pse84_ai_pse846gps2dbzc4a_m33) +- Core implementation: [cores/arduino](cores/arduino) + +If you are extending support, start by validating small samples first (for example blinky, hello, threads) and then move to subsystem-specific libraries. + +### Development Workflows + +Pushing to the `main` branch of this repository automatically triggers a workflow that builds and publishes a new release. Three development paths are available — choose the one that fits your setup: + +#### Fork-based (no local toolchain required) + +Fork this repository and push changes to your fork's `main` branch. GitHub Actions will build and publish a release automatically. You can then add the released JSON index URL to your Arduino IDE to test. + +Best for: quick feature work or experimentation without installing any toolchain. + +#### Local setup — without Zephyr + +Clone the repository and use the [`sync-zephyr-artifacts`](#-shortcut-using-the-core-in-arduino-idecli-without-installing-zephyr) utility to download pre-built loader binaries. Allows you to work on core and library code without a full Zephyr environment. + +Best for: changes to [cores/arduino](cores/arduino) or [libraries](libraries) that do not require rebuilding the loader. + +→ See: [Shortcut: using the Core without installing Zephyr](#-shortcut-using-the-core-in-arduino-idecli-without-installing-zephyr) + +#### Local setup — full Zephyr + +Set up a complete Zephyr build environment to rebuild the loader from source. Faster iteration than the fork-based workflow once set up. + +Best for: loader changes, new board support, or Kconfig/DTS work. + +→ See: [Setup a Zephyr build environment](#️-setup-a-zephyr-build-environment) + +## 🧢 Under the hood + +Unlike traditional Arduino implementations, where the final output is a standalone binary loaded by a bootloader, this core generates a freestanding `elf` file. This file is dynamically loaded by a precompiled Zephyr firmware, referred to as the `loader`. + +The `loader` is responsible for managing the interaction between your sketches and the underlying Zephyr system. After the initial bootloader installation, the `loader` takes over the sketch loading process automatically. + +To ensure flexibility, the `loader` project is designed to be generic. Any necessary modifications for specific boards should be made in the corresponding "DTS overlay" or a special "fixup" file, using appropriate guards to maintain compatibility. + +The behavior of the `loader` can be adjusted through the `Mode` menu of the IDE: +- `Standard`: The sketch is loaded automatically. +- `Debug`: The user must type `sketch` in Zephyr's shell, which is accessible via the default Serial. + +The most important components of this project are: + +* [Zephyr based loader](/loader) +* [LLEXT](https://docs.zephyrproject.org/latest/services/llext/index.html) +* [Actual core](/cores/arduino) with [variants](/variants) and the usual [platform](/platform.txt) and [boards](/boards) files +* [ArduinoCore-API](https://github.com/arduino/ArduinoCore-API) +* [zephyr-sketch-tool](/tools/zephyr-sketch-tool) + +## 🏃 Shortcut: using the Core in Arduino IDE/CLI without installing Zephyr + +> [!TIP] +> +> If you are only interested in developing features in the [core](/cores/arduino) +> or [libraries](/libraries), and do not want to set up a full Zephyr build +> environment, you can use the [`sync-zephyr-artifacts`](/extra/sync-zephyr-artifacts) +> utility to download a pre-built version of the files needed to compile +> sketches and flash the loader. +> +> To do so, after cloning this repo, compile the `sync-zephyr-artifacts` +> utility via `go build` and run it as `sync-zephyr-artifacts .` to retrieve +> the precompiled files for the current revision of the core. +> +> Next, follow the instructions in [Using the Core in Arduino IDE/CLI](#using-the-core-in-arduino-idecli) +> or [Using the Core in the Arduino App Lab](#using-the-core-in-the-arduino-app-lab) +> to start using the core in your preferred Arduino software. +> Remember to [update the loader on your board](#flash-the-loader) as well. + +## 🛠️ Setup a Zephyr build environment + +> [!WARNING] +> If you checked out this repo before 0.3.2 was released, please note that +> development has switched to the `main` branch; the old `arduino` branch will +> be removed in the short future. Please follow this +> [migration guide](https://github.com/arduino/ArduinoCore-zephyr/issues/163) +> to update your local branches and outstanding PRs. + +In this section, we’ll guide you through setting up your environment to work on and update the Zephyr core. + +Shell scripts are available to simplify the installation process (Windows is not directly supported at the moment 😔, but there are some tricks - see below). + +### Pre-requirements +Before running the installation script, ensure that Python, `pip` and `venv` are installed on your system. The script will automatically install `west` and manage the necessary dependencies. + +#### On Ubuntu or similar apt-based distros +```bash +sudo apt install python3-pip python3-setuptools python3-venv build-essential git cmake ninja-build zstd jq rsync +``` +#### On macOS +Make sure you have Homebrew installed. Then run: + +```bash +# Install Xcode Command Line Tools (needed for compilers and make) +xcode-select --install + +# Install required tools and libraries +brew install python cmake ninja zstd jq git +``` +Note: Homebrew’s Python installation already includes `pip`, `setuptools` and `venv`. + +#### On Windows +Building natively on Windows is not currently supported; however, it is possible to setup and build the loader using [WSL](https://learn.microsoft.com/windows/wsl/about). Once you have that installed, you will need to follow these instructions as if you had Ubuntu. + +There are two strategies to set up the sources for building the loader on Windows: +1) Install the sources in the native Windows filesystem (NTFS, FAT32, etc) and within WSL, cd to the root directory where you installed your sources, like: `/mnt/d/github/ArduinoCore-zephyr`. +2) Install the sources within the WSL file system, like: `~/git/ArduinoCore-zephyr` + +There are pros and cons to both strategies: +1) Builds on the native Windows file system are relatively very slow, but once done, you can use the results directly within the Arduino IDE. +2) Builds on WSL's file system are a lot faster, however, you need to copy the resulting build back to somewhere in your Windows directory structure. Use this location in the Arduino IDE as mentioned below in the [Using the Core in Arduino IDE/CLI](#using-the-core-in-arduino-idecli) section. + +After `bootstrap.sh` has completed, you may also have to update the `cores\arduino\api` link to the path of the ArduinoCore-API's `api` folder. + +### Clone the repository +```bash +mkdir my_new_zephyr_folder && cd my_new_zephyr_folder +git clone https://github.com/arduino/ArduinoCore-zephyr +``` + +### Run the ```bootstrap``` script +```bash +cd ArduinoCore-zephyr +./extra/bootstrap.sh +``` + +This will take care of installing `west`, the Zephyr build tool. It will then +download all packages required for a Zephyr build in addition to the toolchains +in the Zephyr SDK. + +> [!NOTE] +> This core is validated with version v0.16.8 of the SDK. Compatibility with later versions has not been tested yet. + +## 🛠️ Regenerate the compiled core files + +### Build the Loader + +The loader is compiled for each board by running the `./extra/build.sh` script. +The target can be specified either with the Arduino board name (as defined in +boards.txt), or with the Zephyr board name and any additional arguments that +may be required by the Zephyr build system. + +For example, to build for the Arduino Portenta H7, you can use either the +Arduino name: +```bash +./extra/build.sh portentah7 +``` + +or the Zephyr board target: + +```bash +./extra/build.sh arduino_portenta_h7//m7 +``` + +The firmwares will be copied to the [firmware](/firmware) folder, and the +associated variant will be updated. + +### Flash the Loader + +To flash the loader, run: + +```bash +west flash -d build/ +``` + +The `` appears in the build output when you run the build script. For example: + +```bash +% ./extra/build.sh portentah7 + +Build target: arduino_portenta_h7@1.0.0//m7 +Build variant: arduino_portenta_h7_stm32h747xx_m7 +-- west build: generating a build system +... +``` + +In this case, you would flash with: +```bash +west flash -d build/arduino_portenta_h7_stm32h747xx_m7 +``` + +This can also be performed via the "Burn bootloader" action in the IDE if the core is properly installed, as detailed below. + +### Using the Core in Arduino IDE/CLI + +After running the `bootstrap.sh` script, you can create a symlink from the +`ArduinoCore-zephyr` folder to `${sketchbook}/hardware/arduino-git/zephyr`, +or manually copy the whole folder to that location. + +> [!IMPORTANT] +> Make sure the final location of the `boards.txt` file is exactly +> `${sketchbook}/hardware/arduino-git/zephyr/boards.txt`. +> +> The `zephyr` folder name above is used as part of the FQBN architecture +> (`packager:architecture:board`) and is considered for library +> compatibility checks. +> Using a different architecture folder name may result in: +> - an unsupported FQBN (e.g. `arduino-git:wrong_zephyr_folder:unoq`) +> - architecture-specific libraries (e.g. `architectures=zephyr`) not being selected + +Once this is done, your development folder will appear in the IDE/CLI package +list as `arduino-git:zephyr`, and the Fully Qualified Board Name (FQBN) to use +will be `arduino-git:zephyr:name_from_boards_txt`. + +Remember to also install and/or update the officially published core in the IDE Board Manager to get the latest tools and dependencies. +[⚙️ Installation](#️-installation). + +### Using the Core in the Arduino App Lab + +> [!WARNING] +> Arduino App Lab expects a hardcoded FQBN (`arduino:zephyr:unoq` for the UNO Q), so the [technique used for Arduino IDE/CLI](#using-the-core-in-arduino-idecli) **does not** work. A small workaround is required. + +1. Disable the release core + +```bash +mv ~/.arduino15/packages/arduino/hardware/zephyr ~/.arduino15/packages/arduino/hardware/zephyr.disable +``` +This ensures the installation of the development version of the core will be used instead of the release installation. + +2. Install your custom core + +Place your custom core in the following path: +```bash +~/Arduino/hardware/arduino/zephyr +``` + +3. Flash the new loader + +Build and flash the loader from your custom core to overwrite the release version. +For example, on UNO Q: +```bash +arduino-cli burn-bootloader -b arduino:zephyr:unoq -P jlink +``` + +#### Revert to release core + +If you want to use the official core again, change the directory names so the one in `~/.arduino15` is `zephyr`, and the one in your sketchbook's hardware folder is `zephyr.disable`: +```bash +mv ~/.arduino15/packages/arduino/hardware/zephyr.disable ~/.arduino15/packages/arduino/hardware/zephyr +mv ~/Arduino/hardware/arduino/zephyr ~/Arduino/hardware/arduino/zephyr.disable +``` + +## 🚀 Adding a new target + +> [!TIP] +> +> While Zephyr supports a lot of different hardware targets, only the few +> currently used by the Arduino core are installed by default. To add the +> support for every Zephyr target to your workspace, run the following +> commands: +> +> ```bash +> . venv/bin/activate +> west config -d manifest.project-filter +> west sdk install --version 0.17.0 +> west update +> ``` + +To add a new board that is already supported by mainline Zephyr with the target `$your_board`, follow these steps: + +* Get the variant name from your board by running `extra/get_variant_name.sh $your_board`. +* Create a folder in the [`variants/`](/variants) directory with the same name as the variant for your new board. +* Create the DTS `.overlay` and Kconfig `.conf` files in that directory. + + The overlay must include: + * A flash partition called `user_sketch`, typically located near the end of the flash. + * A `zephyr,user` section containing the description for GPIOs, Analog, UART, SPI and I2C devices. Feel free to leave some fields empty in case Zephyr support is missing. This will result in some APIs not being available at runtime (eg. `analogWrite` if PWM section is empty). + + The Kconfig file must include any board-specific options required by this target. +* Build the Loader: run `./extra/build.sh $your_board` (with any additional arguments as required) and start debugging the errors. :grin: +* Update the `boards.txt`: add an entry for your board, manually filling the required fields. + + Make sure to set: + * `build.zephyr_target` and `build.zephyr_args` to the arguments used in the `build.sh` call; + * `build.zephyr_hals` to the (space-separated list of) HAL modules required by the board; + * `build.variant` to the variant name identified above. +* Implement touch support: if your board supports the "1200bps touch" method, implement `_on_1200_bps` in a file located inside the variant folder of your board. diff --git a/README.md b/README.md index 042bbd517..d4864b3f4 100644 --- a/README.md +++ b/README.md @@ -1,363 +1,137 @@ -> [!IMPORTANT] -> This core is in **BETA**. 🧪 -> Features may change, and bugs may be present. Use for testing only and provide feedback to help us improve. -> -> [![Default branch status](https://github.com/arduino/ArduinoCore-zephyr/actions/workflows/package_core.yml/badge.svg?branch=arduino&event=push)](https://github.com/arduino/ArduinoCore-zephyr/actions/workflows/package_core.yml) +# Infineon PSOC™ Edge Zephyr-based Arduino Core +[![Default branch status](https://github.com/Infineon/ArduinoCore-zephyr/actions/workflows/package_core.yml/badge.svg?branch=main&event=push)](https://github.com/Infineon/ArduinoCore-zephyr/actions/workflows/package_core.yml) -# 🚧 Arduino Core for Zephyr - -This repository is a downstream fork of the [Arduino Core for Zephyr RTOS-based -boards](https://github.com/zephyrproject-rtos/arduino-core-zephyr) that -includes support for Arduino software tools, allowing it to be seamlessly used -by the [Arduino IDE](https://docs.arduino.cc/software/ide/), -[Arduino CLI](https://docs.arduino.cc/arduino-cli/) and -[Arduino App Lab](https://docs.arduino.cc/software/app-lab/). - -## 🧐 What is Zephyr? - -[Zephyr RTOS](https://zephyrproject.org/) is an open-source, real-time operating system designed for low-power, resource-constrained devices. It's modular, scalable, and supports multiple architectures. - -![Zephyr RTOS Logo](doc/zephyr_logo.jpg) - -## ⚙️ Installation - -Install the core and its toolchains via Board Manager: -* Download and install the latest [Arduino IDE](https://www.arduino.cc/en/software) (only versions `2.x.x` are supported). -* Open the *'Settings / Preferences'* window. -* Open the *'Boards Manager'* from the side menu and search for *'Zephyr'*. - * If it doesn’t appear, add the following URL to the *'Additional Boards Manager URLs'* field: `https://downloads.arduino.cc/packages/package_zephyr_index.json` (if you have multiple URLs, separate them with a comma). -* Install the `Arduino Zephyr Boards` platform. - -Alternatively, to install the core using the command line, run the following command with the Arduino CLI: - -```bash -arduino-cli core install arduino:zephyr --additional-urls https://downloads.arduino.cc/packages/package_zephyr_index.json -``` - -## 🏗️ First Use - -To get started with your board: -* Put the board in bootloader mode by double-clicking the RESET button. -* Run the `Burn Bootloader` option from the IDE/CLI. - * Note that due to limitations in the Arduino IDE, you may need to select any programmer from the `Programmers` menu. -* Once the bootloader is installed, you can load your first sketch by placing the board into bootloader mode again. - -> [!NOTE] -> After the initial setup, future sketches will be loaded automatically without needing to reset the board. - -## 🔧 Troubleshooting - -### Common Issues - -#### **Q: My Sketch doesn't start (Serial doesn't appear)** -**A:** Connect a USB-to-UART adapter to the default UART (eg. TX0/RX0 on Giga, TX/RX on Nano) and read the error message (with the sketch compiled in `Default` mode). If you don't own a USB-to-UART adapter, compile the sketch in `Debug` mode; this will force the shell to wait until you open the Serial Monitor. Then, run `sketch` command and *probably* you'll be able to read the error (if generated by `llext`). For OS crashes, the USB-to-UART adapter is the only way to collect the crash. - ---- - -#### **Q: I did it and I get the error: ` llext: Undefined symbol with no entry in symbol table ...`** -**A:** This means you are trying to use a Zephyr function which has not yet been exported. Open `llext_exports.c`, add the function you need and recompile/upload the loader. - ---- - -#### **Q: I want to use a Zephyr subsystem which is not compiled in** -**A:** Open the `.conf` file for your board, add the required `CONFIG_`, recompile/upload the loader. - ---- - -#### **Q: I get an OS crash, like ` os: ***** USAGE FAULT *****`** -**A:** This is usually due to a buffer overflow or coding error in the user's own code. However, since the project is still in beta 🧪, a [good bug report](#-bug-reporting) could help identify any issues in our code. - ---- - -#### **Q: I get an out of memory error** -**A:** Since collecting bug reports is very important at this time, we are keeping Zephyr's shell enabled to allow loading a full sketch (which requires a large stack). Adjust your board's `.conf` file to reduce the stack size if your platform doesn't have enough RAM. - ---- - -#### **Q: I get a compilation error during library detection, but the mentioned libraries are installed** -**A:** If you have installed the core locally in your Arduino sketchbook, make sure the Zephyr core is installed in a folder named `zephyr` (`${sketchbook}/hardware/arduino-git/zephyr`). -See the [Using the Core in Arduino IDE/CLI](#using-the-core-in-arduino-idecli) section for further details on the installation. - ---- - -#### **Q: Wi-Fi is not working, or I get `Communication with WiFi module failed!` in the Serial Monitor** -**A:** You are probably missing the Wi-Fi firmware, or the firmware is corrupted. Boards should come with the Wi-Fi firmware already flashed, but in case Wi-Fi is not working run the [`FlashFormat`](libraries/Storage/examples/FlashFormat/FlashFormat.ino) sketch to restore the firmware. - -## 📚 Libraries - -### Included with the core: ### - -### Separately supplied: ### -- **ArduinoBLE**: This library is enabled only for the Arduino Nano 33 BLE. Please use [this branch](https://github.com/facchinm/ArduinoBLE/tree/zephyr_hci) to test it. - -## 🧢 Under the hood - -Unlike traditional Arduino implementations, where the final output is a standalone binary loaded by a bootloader, this core generates a freestanding `elf` file. This file is dynamically loaded by a precompiled Zephyr firmware, referred to as the `loader`. - -The `loader` is responsible for managing the interaction between your sketches and the underlying Zephyr system. After the initial bootloader installation, the `loader` takes over the sketch loading process automatically. - -To ensure flexibility, the `loader` project is designed to be generic. Any necessary modifications for specific boards should be made in the corresponding "DTS overlay" or a special "fixup" file, using appropriate guards to maintain compatibility. - -The behavior of the `loader` can be adjusted through the `Mode` menu of the IDE: -- `Standard`: The sketch is loaded automatically. -- `Debug`: The user must type `sketch` in Zephyr's shell, which is accessible via the default Serial. - -The most important components of this project are: - -* [Zephyr based loader](/loader) -* [LLEXT](https://docs.zephyrproject.org/latest/services/llext/index.html) -* [Actual core](/cores/arduino) with [variants](/variants) and the usual [platform](/platform.txt) and [boards](/boards) files -* [ArduinoCore-API](https://github.com/arduino/ArduinoCore-API) -* [zephyr-sketch-tool](/extra/zephyr-sketch-tool) +> [!IMPORTANT] +> This project is a work in progress. +> It does not yet cover the full Arduino API or all PSOC™ Edge features. -## 🏃 Shortcut: using the Core in Arduino IDE/CLI without installing Zephyr +This repository contains the Zephyr-based Arduino core for: -> [!TIP] -> -> If you are only interested in developing features in the [core](/cores/arduino) -> or [libraries](/libraries), and do not want to set up a full Zephyr build -> environment, you can use the [`sync-zephyr-artifacts`](/extra/sync-zephyr-artifacts) -> utility to download a pre-built version of the files needed to compile -> sketches and flash the loader. -> -> To do so, after cloning this repo, compile the `sync-zephyr-artifacts` -> utility via `go build` and run it as `sync-zephyr-artifacts .` to retrieve -> the precompiled files for the current revision of the core. -> -> Next, follow the instructions in [Using the Core in Arduino IDE/CLI](#using-the-core-in-arduino-idecli) -> or [Using the Core in the Arduino App Lab](#using-the-core-in-the-arduino-app-lab) -> to start using the core in your preferred Arduino software. -> Remember to [update the loader on your board](#flash-the-loader) as well. +- [Infineon KIT-PSE84-AI (PSOC™ Edge E84)](https://www.infineon.com/cms/en/product/evaluation-boards/kit-pse84-ai/) -## 🛠️ Setup a Zephyr build environment +You can install the core through the Boards Manager in Arduino IDE, or via the Arduino CLI. +After installing the core, the **loader has to be flashed** and your first sketch can be uploaded. Steps are provided for both, [Arduino IDE](#installation--usage-in-arduino-ide) and [Arduino CLI](#installation--usage-in-arduino-cli). -> [!WARNING] -> If you checked out this repo before 0.3.2 was released, please note that -> development has switched to the `main` branch; the old `arduino` branch will -> be removed in the short future. Please follow this -> [migration guide](https://github.com/arduino/ArduinoCore-zephyr/issues/163) -> to update your local branches and outstanding PRs. +## Installation & Usage in Arduino IDE -In this section, we’ll guide you through setting up your environment to work on and update the Zephyr core. +### Installation -Shell scripts are available to simplify the installation process (Windows is not directly supported at the moment 😔, but there are some tricks - see below). +Use Arduino IDE 2.x and install the platform through Arduino's Boards Manager. -### Pre-requirements -Before running the installation script, ensure that Python, `pip` and `venv` are installed on your system. The script will automatically install `west` and manage the necessary dependencies. +1. Open Arduino IDE. +2. Navigate to *'File > Preferences'*. +3. In Additional boards manager URLs, add: -#### On Ubuntu or similar apt-based distros -```bash -sudo apt install python3-pip python3-setuptools python3-venv build-essential git cmake ninja-build zstd jq rsync +```text +https://github.com/Infineon/ArduinoCore-zephyr/releases/latest/download/package_infineon_pse84_index.json ``` -#### On macOS -Make sure you have Homebrew installed. Then run: -```bash -# Install Xcode Command Line Tools (needed for compilers and make) -xcode-select --install +4. Open *'Boards Manager'* (left side menu). +5. Search for *'PSOC Edge'* and install `Infineon PSOC Edge Boards`. This may take a moment. -# Install required tools and libraries -brew install python cmake ninja zstd jq git -``` -Note: Homebrew’s Python installation already includes `pip`, `setuptools` and `venv`. +### Usage -#### On Windows -Building natively on Windows is not currently supported; however, it is possible to setup and build the loader using [WSL](https://learn.microsoft.com/windows/wsl/about). Once you have that installed, you will need to follow these instructions as if you had Ubuntu. +1. Select the PSOC™ Edge board and the correct serial port: `Tools > Board > Infineon PSOC Edge Boards > Infineon KIT-PSE84-AI (PSOC Edge E84)` and `Tools > Port`. +2. Flash the loader: `Tools > Burn Bootloader`. +3. Open or write a sketch and click *Upload*. -There are two strategies to set up the sources for building the loader on Windows: -1) Install the sources in the native Windows filesystem (NTFS, FAT32, etc) and within WSL, cd to the root directory where you installed your sources, like: `/mnt/d/github/ArduinoCore-zephyr`. -2) Install the sources within the WSL file system, like: `~/git/ArduinoCore-zephyr` +## Installation & Usage in Arduino CLI -There are pros and cons to both strategies: -1) Builds on the native Windows file system are relatively very slow, but once done, you can use the results directly within the Arduino IDE. -2) Builds on WSL's file system are a lot faster, however, you need to copy the resulting build back to somewhere in your Windows directory structure. Use this location in the Arduino IDE as mentioned below in the [Using the Core in Arduino IDE/CLI](#using-the-core-in-arduino-idecli) section. +### Installation -After `bootstrap.sh` has completed, you may also have to update the `cores\arduino\api` link to the path of the ArduinoCore-API's `api` folder. +Simply use the following command: -### Clone the repository ```bash -mkdir my_new_zephyr_folder && cd my_new_zephyr_folder -git clone https://github.com/arduino/ArduinoCore-zephyr +arduino-cli core install infineon:zephyr_pse84 --additional-urls https://github.com/Infineon/ArduinoCore-zephyr/releases/latest/download/package_infineon_pse84_index.json ``` -### Run the ```bootstrap``` script -```bash -cd ArduinoCore-zephyr -./extra/bootstrap.sh -``` - -This will take care of installing `west`, the Zephyr build tool. It will then -download all packages required for a Zephyr build in addition to the toolchains -in the Zephyr SDK. - -> [!NOTE] -> This core is validated with version v0.16.8 of the SDK. Compatibility with later versions has not been tested yet. - -## 🛠️ Regenerate the compiled core files +### Usage -### Build the Loader +The FQBN for the Infineon KIT-PSE84-AI (PSOC Edge E84) is `infineon:zephyr_pse84:kit_pse84_ai`. -The loader is compiled for each board by running the `./extra/build.sh` script. -The target can be specified either with the Arduino board name (as defined in -boards.txt), or with the Zephyr board name and any additional arguments that -may be required by the Zephyr build system. +1. Flash the loader: -For example, to build for the Arduino Portenta H7, you can use either the -Arduino name: ```bash -./extra/build.sh portentah7 +arduino-cli burn-bootloader -b infineon:zephyr_pse84:kit_pse84_ai ``` -or the Zephyr board target: +2. Compile and upload a sketch: ```bash -./extra/build.sh arduino_portenta_h7//m7 +arduino-cli compile -b infineon:zephyr_pse84:kit_pse84_ai MySketch +arduino-cli upload -b infineon:zephyr_pse84:kit_pse84_ai -p MySketch ``` -The firmwares will be copied to the [firmware](/firmware) folder, and the -associated variant will be updated. +## Arduino API Documentation for PSOC™ Edge -### Flash the Loader +### Pinout -To flash the loader, run: +![Pinout](doc/KIT_PSE84_AI_Pinout.svg) -```bash -west flash -d build/ -``` +### Macros -The `` appears in the build output when you run the build script. For example: +For the exact macro definitions, refer to [`variants/kit_pse84_ai_pse846gps2dbzc4a_m33/variant.h`](variants/kit_pse84_ai_pse846gps2dbzc4a_m33/variant.h). +Here is a general explanation: -```bash -% ./extra/build.sh portentah7 +- Every exposed GPIO pin from the pinout has a macro identical to the documentation name, e.g. `P17_3`, `P16_0`, `P15_3`, etc. +- Digital pins have a macro in the format `Dx`, where `x` is the index of the arduino pin in the range [0, 47], e.g. `D0`, `D15`, `D47`, etc. +- Analog pins have a macro in the format `Ax`, where `x` is the index of the arduino pin in the range [0, 15], e.g. `A0`, `A1`, `A15`, etc. +- Onboard LED pin name macros are: + - `LED_BUILTIN `: `P10_7` + - `LED_BUILTIN_1 `: `P10_7` + - `LED_BUILTIN_2 `: `P10_5` + - `LED_BUILTIN_ACTIVE`: `HIGH` + - `LED_RED `: `P20_6` + - `LED_GREEN `: `P20_4` + - `LED_BLUE `: `P20_5` + - `BTN_BUILTIN `: `P7_0` (`SW1`) +- I2C pins are defined as `SDA`/`SCL` and `SDA1`/`SCL1` for the internal (`Wire`), and external (`Wire1`) I2C bus respectively. +- Expansion header pins include the macros as printed on the board: `SERIAL_INTx` where `x` is the index in the range [0, 3], e.g. `SERIAL_INT0`. -Build target: arduino_portenta_h7@1.0.0//m7 -Build variant: arduino_portenta_h7_stm32h747xx_m7 --- west build: generating a build system -... -``` - -In this case, you would flash with: -```bash -west flash -d build/arduino_portenta_h7_stm32h747xx_m7 -``` - -This can also be performed via the "Burn bootloader" action in the IDE if the core is properly installed, as detailed below. - -### Using the Core in Arduino IDE/CLI - -After running the `bootstrap.sh` script, you can create a symlink from the -`ArduinoCore-zephyr` folder to `${sketchbook}/hardware/arduino-git/zephyr`, -or manually copy the whole folder to that location. +### PSOC™ Edge Arduino API Coverage > [!IMPORTANT] -> Make sure the final location of the `boards.txt` file is exactly -> `${sketchbook}/hardware/arduino-git/zephyr/boards.txt`. -> -> The `zephyr` folder name above is used as part of the FQBN architecture -> (`packager:architecture:board`) and is considered for library -> compatibility checks. -> Using a different architecture folder name may result in: -> - an unsupported FQBN (e.g. `arduino-git:wrong_zephyr_folder:unoq`) -> - architecture-specific libraries (e.g. `architectures=zephyr`) not being selected +> Not all Arduino API calls are currently supported. Check the tracking document before relying on a specific API. -Once this is done, your development folder will appear in the IDE/CLI package -list as `arduino-git:zephyr`, and the Fully Qualified Board Name (FQBN) to use -will be `arduino-git:zephyr:name_from_boards_txt`. +Refer to the [API coverage tracking document](./api_support_tracking.md) for the implementation status and known limitations of each Arduino API call. -Remember to also install and/or update the officially published core in the IDE Board Manager to get the latest tools and dependencies. -[⚙️ Installation](#️-installation). +## Known Scope And Limits -### Using the Core in the Arduino App Lab +- This is an early PSOC™ Edge port focused on enabling core Arduino workflows on Zephyr. +- API compatibility is incomplete and may change between releases. +- Some subsystems compile but are not yet fully validated on KIT-PSE84-AI. -> [!WARNING] -> Arduino App Lab expects a hardcoded FQBN (`arduino:zephyr:unoq` for the UNO Q), so the [technique used for Arduino IDE/CLI](#using-the-core-in-arduino-idecli) **does not** work. A small workaround is required. +## Contributing And Feedback -1. Disable the release core +Feedback and contributions are highly encouraged. -```bash -mv ~/.arduino15/packages/arduino/hardware/zephyr ~/.arduino15/packages/arduino/hardware/zephyr.disable -``` -This ensures the installation of the development version of the core will be used instead of the release installation. - -2. Install your custom core - -Place your custom core in the following path: -```bash -~/Arduino/hardware/arduino/zephyr -``` +### Feedback -3. Flash the new loader +- Report bugs and request features in [Issues](/../../issues) +- Ask questions and discuss roadmap in [Discussions](/../../discussions) -Build and flash the loader from your custom core to overwrite the release version. -For example, on UNO Q: -```bash -arduino-cli burn-bootloader -b arduino:zephyr:unoq -P jlink -``` - -#### Revert to release core - -If you want to use the official core again, change the directory names so the one in `~/.arduino15` is `zephyr`, and the one in your sketchbook's hardware folder is `zephyr.disable`: -```bash -mv ~/.arduino15/packages/arduino/hardware/zephyr.disable ~/.arduino15/packages/arduino/hardware/zephyr -mv ~/Arduino/hardware/arduino/zephyr ~/Arduino/hardware/arduino/zephyr.disable -``` +When reporting issues, please include: -## 🚀 Adding a new target +- Board and host OS +- Core version +- Minimal sketch to reproduce +- Full build/upload logs -> [!TIP] -> -> While Zephyr supports a lot of different hardware targets, only the few -> currently used by the Arduino core are installed by default. To add the -> support for every Zephyr target to your workspace, run the following -> commands: -> -> ```bash -> . venv/bin/activate -> west config -d manifest.project-filter -> west sdk install --version 0.17.0 -> west update -> ``` +### Contributing +Contributions are welcome through [Pull Requests](/../../pulls). Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) for more information. -To add a new board that is already supported by mainline Zephyr with the target `$your_board`, follow these steps: +## Troubleshooting -* Get the variant name from your board by running `extra/get_variant_name.sh $your_board`. -* Create a folder in the [`variants/`](/variants) directory with the same name as the variant for your new board. -* Create the DTS `.overlay` and Kconfig `.conf` files in that directory. - - The overlay must include: - * A flash partition called `user_sketch`, typically located near the end of the flash. - * A `zephyr,user` section containing the description for GPIOs, Analog, UART, SPI and I2C devices. Feel free to leave some fields empty in case Zephyr support is missing. This will result in some APIs not being available at runtime (eg. `analogWrite` if PWM section is empty). - - The Kconfig file must include any board-specific options required by this target. -* Build the Loader: run `./extra/build.sh $your_board` (with any additional arguments as required) and start debugging the errors. :grin: -* Update the `boards.txt`: add an entry for your board, manually filling the required fields. - - Make sure to set: - * `build.zephyr_target` and `build.zephyr_args` to the arguments used in the `build.sh` call; - * `build.zephyr_hals` to the (space-separated list of) HAL modules required by the board; - * `build.variant` to the variant name identified above. -* Implement touch support: if your board supports the "1200bps touch" method, implement `_on_1200_bps` in a file located inside the variant folder of your board. - -## 🐛 Bug Reporting - -To report a bug, open the [issues](/../../issues) and follow the instructions. Any issue opened without the needed information will be discarded. - -## 🙌 Contributions - -Contributions are always welcome. The preferred way to receive code contribution is by submitting a [Pull request](/../../pulls). +### Common Issues -> [!WARNING] -> At this stage of development, we only accept Pull requests for bug fixes and features. We do **not** accept support for new targets. +#### `llext` Undefined Symbol Errors -## 📌 Upcoming features +If upload succeeds but execution fails with an `Undefined symbol` error, the sketch is using a symbol not exported by the loader image for this build. -- [ ] USB: switch to `USB_DEVICE_STACK_NEXT` to support PluggableUSB -- [x] Relocate RODATA in flash to accommodate sketches with large assets -- [ ] Provide better error reporting for failed llext operations -- [ ] Replace [`llext_exports.c`](/loader/llext_exports.c) with proper symbols generation (via includes) -- [ ] Fix corner cases with `std::` includes (like ``) -- [ ] Get rid of all warnings +- Rebuild and flash the bootloader for this board. +- If needed, extend exported symbols in loader integration sources and rebuild. -## 🌟 Acknowledgments +--- -This effort would have been very hard without the [GSoC project](/README.gsoc.md) and the Zephyr community. +#### **Q: I get an OS crash, like ` os: ***** USAGE FAULT *****`** +**A:** This is usually due to a buffer overflow or coding error in the user's own code. However, since the project is still in beta 🧪, a [good bug report](/../../issues) could help identify any issues in our code. diff --git a/api_support_tracking.md b/api_support_tracking.md new file mode 100644 index 000000000..f717596f6 --- /dev/null +++ b/api_support_tracking.md @@ -0,0 +1,162 @@ +### PSE84 Arduino API Support Tracking + +#### Legend +| Symbol | Meaning | +|--------|---------| +| ✅ | Confirmed working | +| ⚠️ | Not yet tested | +| ❌ | Not yet supported | + +--- + +#### API Support Table + +| Function | Scope | Status | +|----------|-------|--------| +| **Digital I/O** | | | +| `digitalRead()` | Digital GPIO | ✅ | +| `digitalWrite()` | Digital GPIO | ✅ | +| `pinMode()` | Digital GPIO | ✅ | +| **Analog I/O** | | | +| `analogRead()` | Analog | ❌ | +| `analogReadResolution()` | Analog | ❌ | +| `analogReference()` | Analog | ❌ | +| `analogWrite()` | Analog | ❌ | +| `analogWriteResolution()` | Analog | ❌ | +| **Advanced I/O** | | | +| `tone()` | Digital GPIO | ⚠️ | +| `noTone()` | Digital GPIO | ⚠️ | +| `pulseIn()` | Digital GPIO | ⚠️ | +| `pulseInLong()` | Digital GPIO | ⚠️ | +| `shiftIn()` | Digital GPIO | ⚠️ | +| `shiftOut()` | Digital GPIO | ⚠️ | +| **Time** | | | +| `delay()` | Timing | ✅ | +| `delayMicroseconds()` | Timing | ⚠️ | +| `millis()` | Timing | ✅ | +| `micros()` | Timing | ✅ | +| **Math** | | | +| `abs()` | Math | ⚠️ | +| `constrain()` | Math | ⚠️ | +| `map()` | Math | ⚠️ | +| `max()` | Math | ⚠️ | +| `min()` | Math | ⚠️ | +| `pow()` | Math | ⚠️ | +| `sq()` | Math | ⚠️ | +| `sqrt()` | Math | ⚠️ | +| **Trigonometry** | | | +| `cos()` | Math | ⚠️ | +| `sin()` | Math | ⚠️ | +| `tan()` | Math | ⚠️ | +| **Characters** | | | +| `isAlpha()` | Characters | ⚠️ | +| `isAlphaNumeric()` | Characters | ⚠️ | +| `isAscii()` | Characters | ⚠️ | +| `isControl()` | Characters | ⚠️ | +| `isDigit()` | Characters | ⚠️ | +| `isGraph()` | Characters | ⚠️ | +| `isHexadecimalDigit()` | Characters | ⚠️ | +| `isLowerCase()` | Characters | ⚠️ | +| `isPrintable()` | Characters | ⚠️ | +| `isPunct()` | Characters | ⚠️ | +| `isSpace()` | Characters | ⚠️ | +| `isUpperCase()` | Characters | ⚠️ | +| `isWhitespace()` | Characters | ⚠️ | +| **Random Numbers** | | | +| `random()` | Random | ⚠️ | +| `randomSeed()` | Random | ⚠️ | +| **Bits and Bytes** | | | +| `bit()` | Bits & Bytes | ⚠️ | +| `bitClear()` | Bits & Bytes | ⚠️ | +| `bitRead()` | Bits & Bytes | ⚠️ | +| `bitSet()` | Bits & Bytes | ⚠️ | +| `bitWrite()` | Bits & Bytes | ⚠️ | +| `highByte()` | Bits & Bytes | ⚠️ | +| `lowByte()` | Bits & Bytes | ⚠️ | +| **External Interrupts** | | | +| `attachInterrupt()` | Interrupts | ✅ | +| `detachInterrupt()` | Interrupts | ✅ | +| `digitalPinToInterrupt()` | Interrupts | ✅ | +| **Interrupts** | | | +| `interrupts()` | Interrupts | ⚠️ | +| `noInterrupts()` | Interrupts | ⚠️ | +| **Stream** | | | +| `available()` | Serial / UART | ⚠️ | +| `read()` | Serial / UART | ⚠️ | +| `flush()` | Serial / UART | ⚠️ | +| `find()` | Serial / UART | ⚠️ | +| `findUntil()` | Serial / UART | ⚠️ | +| `peek()` | Serial / UART | ⚠️ | +| `readBytes()` | Serial / UART | ⚠️ | +| `readBytesUntil()` | Serial / UART | ⚠️ | +| `readString()` | Serial / UART | ⚠️ | +| `readStringUntil()` | Serial / UART | ⚠️ | +| `parseInt()` | Serial / UART | ⚠️ | +| `parseFloat()` | Serial / UART | ⚠️ | +| `setTimeout()` | Serial / UART | ⚠️ | +| **Serial** | | | +| `if(Serial)` | Serial / UART | ⚠️ | +| `Serial1` / `Serial2` | Serial / UART | ⚠️ | +| USB Serial | Serial / UART | ⚠️ | +| `Serial.available()` | Serial / UART | ⚠️ | +| `Serial.availableForWrite()` | Serial / UART | ⚠️ | +| `Serial.begin()` | Serial / UART | ✅ | +| `Serial.end()` | Serial / UART | ⚠️ | +| `Serial.find()` | Serial / UART | ⚠️ | +| `Serial.findUntil()` | Serial / UART | ⚠️ | +| `Serial.flush()` | Serial / UART | ⚠️ | +| `Serial.parseFloat()` | Serial / UART | ⚠️ | +| `Serial.parseInt()` | Serial / UART | ⚠️ | +| `Serial.peek()` | Serial / UART | ⚠️ | +| `Serial.print()` | Serial / UART | ✅ | +| `Serial.println()` | Serial / UART | ✅ | +| `Serial.read()` | Serial / UART | ⚠️ | +| `Serial.readBytes()` | Serial / UART | ⚠️ | +| `Serial.readBytesUntil()` | Serial / UART | ⚠️ | +| `Serial.readString()` | Serial / UART | ⚠️ | +| `Serial.readStringUntil()` | Serial / UART | ⚠️ | +| `Serial.setTimeout()` | Serial / UART | ⚠️ | +| `Serial.write()` | Serial / UART | ⚠️ | +| `Serial.serialEvent()` | Serial / UART | ⚠️ | +| **SPI** | | | +| `SPI` | SPI | ❌ | +| I2C (Wire) | | | +| `Wire` / `Wire1` | I2C | ✅ | +| `Wire.begin()` | I2C | ⚠️ | +| `Wire.end()` | I2C | ⚠️ | +| `Wire.requestFrom()` | I2C | ⚠️ | +| `Wire.beginTransmission()` | I2C | ⚠️ | +| `Wire.endTransmission()` | I2C | ⚠️ | +| `Wire.write()` | I2C | ⚠️ | +| `Wire.available()` | I2C | ⚠️ | +| `Wire.read()` | I2C | ⚠️ | +| `Wire.setClock()` | I2C | ⚠️ | +| `Wire.onReceive()` | I2C | ⚠️ | +| `Wire.onRequest()` | I2C | ⚠️ | +| `Wire.setWireTimeout()` | I2C | ⚠️ | +| `Wire.clearWireTimeoutFlag()` | I2C | ⚠️ | +| `Wire.getWireTimeoutFlag()` | I2C | ⚠️ | +| **Sketch** | | | +| `loop()` | Core | ✅ | +| `setup()` | Core | ✅ | +| **Other** | | | +| `init()` | Core | ⚠️ | +| `initVariant()` | Core | ⚠️ | +| `yield()` | Timing | ✅ | +| Threads | Libraries | ❌ | +| CAN | Libraries | ❌ | +| Ethernet | Libraries | ❌ | +| RTC | Libraries | ❌ | +| WiFi | Libraries | ❌ | +| USB Peripherals | Libraries | ❌ | + +--- + +#### Reference Links + +| Resource | URL | +|----------|-----| +| Arduino API Reference | https://www.arduino.cc/reference/en/ | +| Arduino API Programming Reference | https://docs.arduino.cc/learn/programming/reference/ | +| ArduinoCore-API (source of truth) | https://github.com/arduino/ArduinoCore-API | +| ArduinoCore-API `/api` folder | https://github.com/arduino/ArduinoCore-API/tree/master/api | \ No newline at end of file diff --git a/boards.txt b/boards.txt index e7b6325a1..5cf2150b4 100644 --- a/boards.txt +++ b/boards.txt @@ -22,709 +22,753 @@ menu.wait_linux_boot=Startup mode ########################################################################################## -giga.name=Arduino Giga R1 -giga.build.core=arduino -giga.build.crossprefix=arm-zephyr-eabi- -giga.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -giga.menu.debug.false=Standard -giga.menu.debug.true=Debug -giga.menu.debug.true.build.zsk_args.debug=-debug - -giga.menu.link_mode.dynamic=Dynamic -giga.menu.link_mode.static=Static -giga.menu.link_mode.static.build.link_mode=static -giga.menu.link_mode.static.upload.extension=bin-zsk.bin - -giga.build.zephyr_target=arduino_giga_r1//m7 -giga.build.zephyr_args=--shield arduino_giga_display_shield -giga.build.zephyr_hals=hal_stm32 hal_infineon -giga.build.variant=arduino_giga_r1_stm32h747xx_m7 -giga.build.artifact=zephyr_main - -giga.build.extra_flags= -giga.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -giga.build.board=GIGA -giga.vid.0=0x2341 -giga.pid.0=0x0066 -giga.upload_port.0.vid=0x2341 -giga.upload_port.0.pid=0x0066 - -giga.upload.tool=dfu-util -giga.upload.tool.default=dfu-util -giga.upload.protocol= -giga.upload.transport= -giga.upload.vid=0x2341 -giga.upload.pid=0x0366 -giga.upload.interface=0 -giga.upload.use_1200bps_touch=true -giga.upload.wait_for_upload_port=true -giga.upload.native_usb=true - -giga.bootloader.tool=dfu-util -giga.bootloader.tool.default=dfu-util -giga.bootloader.vid=0x2341 -giga.bootloader.pid=0x0366 -giga.bootloader.interface=0 -giga.bootloader.file=zephyr-{build.variant}.bin -giga.bootloader.address=0x08040000 - -giga.debug.tool=gdb -giga.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -giga.debug.server.openocd.scripts.1={programmer.transport_script} -giga.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg -giga.debug.cortex-debug.custom.request=attach -giga.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd - -########################################################################################## - -nano33ble.name=Arduino Nano 33 BLE -nano33ble.build.core=arduino -nano33ble.build.crossprefix=arm-zephyr-eabi- -nano33ble.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -nano33ble.menu.debug.false=Standard -nano33ble.menu.debug.true=Debug -nano33ble.menu.debug.true.build.zsk_args.debug=-debug - -nano33ble.menu.link_mode.dynamic=Dynamic -nano33ble.menu.link_mode.static=Static -nano33ble.menu.link_mode.static.build.link_mode=static -nano33ble.menu.link_mode.static.upload.extension=bin-zsk.bin - -nano33ble.build.zephyr_target=arduino_nano_33_ble//sense -nano33ble.build.zephyr_args= -nano33ble.build.zephyr_hals=hal_nordic -nano33ble.build.artifact=zephyr_main -nano33ble.build.variant=arduino_nano_33_ble_nrf52840_sense - -nano33ble.build.extra_flags= -nano33ble.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -nano33ble.build.board=NANO33BLE -nano33ble.vid.0=0x2341 -nano33ble.pid.0=0x035a -nano33ble.upload_port.0.vid=0x2341 -nano33ble.upload_port.0.pid=0x005a - -nano33ble.upload.tool=bossac -nano33ble.upload.tool.default=bossac -nano33ble.upload.protocol= -nano33ble.upload.transport= -nano33ble.upload.vid=0x2341 -nano33ble.upload.pid=0x005a -nano33ble.upload.interface=0 -nano33ble.upload.use_1200bps_touch=true -nano33ble.upload.wait_for_upload_port=true -nano33ble.upload.native_usb=true -nano33ble.upload.offset=0x10000 # bootloader skips its own partition - -nano33ble.bootloader.tool=bossac -nano33ble.bootloader.tool.default=bossac -nano33ble.bootloader.vid=0x2341 -nano33ble.bootloader.pid=0x035b -nano33ble.bootloader.interface=0 -nano33ble.bootloader.file=zephyr-{build.variant}.bin -nano33ble.bootloader.address=0x0000 - -nano33ble.debug.tool=gdb -nano33ble.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -nano33ble.debug.server.openocd.scripts.1={programmer.transport_script} -nano33ble.debug.server.openocd.scripts.2=target/nrf52.cfg -nano33ble.debug.cortex-debug.custom.request=attach - -############################################################################################################## - -ek_ra8d1.name=Renesas RA8D1 EK -ek_ra8d1.build.core=arduino -ek_ra8d1.build.crossprefix=arm-zephyr-eabi- -ek_ra8d1.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -ek_ra8d1.menu.debug.false=Standard -ek_ra8d1.menu.debug.true=Debug -ek_ra8d1.menu.debug.true.build.zsk_args.debug=-debug - -ek_ra8d1.menu.link_mode.dynamic=Dynamic -ek_ra8d1.menu.link_mode.static=Static -ek_ra8d1.menu.link_mode.static.build.link_mode=static -ek_ra8d1.menu.link_mode.static.upload.extension=bin-zsk.bin - -ek_ra8d1.build.zephyr_target=ek_ra8d1 -ek_ra8d1.build.zephyr_args= -ek_ra8d1.build.zephyr_hals=hal_renesas -ek_ra8d1.build.variant=ek_ra8d1_r7fa8d1bhecbd - -ek_ra8d1.build.extra_flags= -ek_ra8d1.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -ek_ra8d1.build.board=EK_RA8D1 - -#ek_ra8d1.recipe.hooks.objcopy.postobjcopy.4.pattern=cp {build.variant.path}/flasher.jlink "{build.path}/flasher.jlink" -#ek_ra8d1.recipe.hooks.objcopy.postobjcopy.5.pattern=sed -i 's|SKETCH|"{build.path}/{build.project_name}.llext.dfu.bin"|g' "{build.path}/flasher.jlink" - -ek_ra8d1.vid.0=0x2341 -ek_ra8d1.pid.0=0x0077 -ek_ra8d1.upload_port.0.vid=0x2341 -ek_ra8d1.upload_port.0.pid=0x0077 - -ek_ra8d1.upload.tool=pyocd -ek_ra8d1.upload.tool.default=pyocd -ek_ra8d1.upload.protocol= -ek_ra8d1.upload.transport= -ek_ra8d1.upload.vid=0x2341 -ek_ra8d1.upload.pid=0x0366 -ek_ra8d1.upload.interface=0 -ek_ra8d1.upload.use_1200bps_touch=false -ek_ra8d1.upload.wait_for_upload_port=false -ek_ra8d1.upload.native_usb=true -ek_ra8d1.upload.target=R7FA8D1AH - -ek_ra8d1.bootloader.tool=pyocd -ek_ra8d1.bootloader.tool.default=pyocd -ek_ra8d1.bootloader.file=zephyr-{build.variant}.elf -ek_ra8d1.bootloader.target=R7FA8D1AH - - -############################################################################################################## - -frdm_mcxn947.name=NXP FRDM MCXN947 -frdm_mcxn947.build.core=arduino -frdm_mcxn947.build.crossprefix=arm-zephyr-eabi- -frdm_mcxn947.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -frdm_mcxn947.menu.debug.false=Standard -frdm_mcxn947.menu.debug.true=Debug -frdm_mcxn947.menu.debug.true.build.zsk_args.debug=-debug - -frdm_mcxn947.menu.link_mode.dynamic=Dynamic -frdm_mcxn947.menu.link_mode.static=Static -frdm_mcxn947.menu.link_mode.static.build.link_mode=static -frdm_mcxn947.menu.link_mode.static.upload.extension=bin-zsk.bin - -frdm_mcxn947.build.zephyr_target=frdm_mcxn947//cpu0 -frdm_mcxn947.build.zephyr_args= -frdm_mcxn947.build.zephyr_hals=hal_nxp -frdm_mcxn947.build.variant=frdm_mcxn947_mcxn947_cpu0 - -frdm_mcxn947.build.extra_flags= -frdm_mcxn947.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -frdm_mcxn947.build.board=FRDM_MCXN947 -frdm_mcxn947.vid.0=0x1fc9 -frdm_mcxn947.pid.0=0x0143 -frdm_mcxn947.upload_port.0.vid=0x1fc9 -frdm_mcxn947.upload_port.0.pid=0x0143 -frdm_mcxn947.upload.target=mcxn947vdf - -frdm_mcxn947.upload.tool=pyocd -frdm_mcxn947.upload.tool.default=pyocd -frdm_mcxn947.upload.protocol= -frdm_mcxn947.upload.transport= -frdm_mcxn947.upload.vid=0x1fc9 -frdm_mcxn947.upload.pid=0x0143 -frdm_mcxn947.upload.interface=0 -frdm_mcxn947.upload.use_1200bps_touch=false -frdm_mcxn947.upload.wait_for_upload_port=false -frdm_mcxn947.upload.native_usb=true - -frdm_mcxn947.bootloader.tool=pyocd -frdm_mcxn947.bootloader.tool.default=pyocd -frdm_mcxn947.bootloader.file=zephyr-{build.variant}.elf -frdm_mcxn947.bootloader.target=mcxn947vdf - - -########################################################################################## - -portentah7.name=Arduino Portenta H7 -portentah7.build.core=arduino -portentah7.build.crossprefix=arm-zephyr-eabi- -portentah7.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -portentah7.menu.debug.false=Standard -portentah7.menu.debug.true=Debug -portentah7.menu.debug.true.build.zsk_args.debug=-debug - -portentah7.menu.link_mode.dynamic=Dynamic -portentah7.menu.link_mode.static=Static -portentah7.menu.link_mode.static.build.link_mode=static -portentah7.menu.link_mode.static.upload.extension=bin-zsk.bin - -portentah7.build.zephyr_target=arduino_portenta_h7@1.0.0//m7 -portentah7.build.zephyr_args= -portentah7.build.zephyr_hals=hal_stm32 hal_infineon -portentah7.build.artifact=zephyr_main -portentah7.build.variant=arduino_portenta_h7_stm32h747xx_m7 - -portentah7.build.extra_flags= -portentah7.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -portentah7.build.board=PORTENTA_H7_M7 -portentah7.vid.0=0x2341 -portentah7.pid.0=0x005b -portentah7.upload_port.0.vid=0x2341 -portentah7.upload_port.0.pid=0x035b - -portentah7.upload.tool=dfu-util -portentah7.upload.tool.default=dfu-util -portentah7.upload.protocol= -portentah7.upload.transport= -portentah7.upload.vid=0x2341 -portentah7.upload.pid=0x035b -portentah7.upload.interface=0 -portentah7.upload.use_1200bps_touch=true -portentah7.upload.wait_for_upload_port=true -portentah7.upload.native_usb=true - -portentah7.bootloader.tool=dfu-util -portentah7.bootloader.tool.default=dfu-util -portentah7.bootloader.vid=0x2341 -portentah7.bootloader.pid=0x035b -portentah7.bootloader.interface=0 -portentah7.bootloader.file=zephyr-{build.variant}.bin -portentah7.bootloader.address=0x08040000 - -portentah7.debug.tool=gdb -portentah7.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -portentah7.debug.server.openocd.scripts.1={programmer.transport_script} -portentah7.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg -portentah7.debug.cortex-debug.custom.request=attach -portentah7.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd - -############################################################################################################## - -nicla_vision.name=Arduino Nicla Vision -nicla_vision.build.core=arduino -nicla_vision.build.crossprefix=arm-zephyr-eabi- -nicla_vision.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -nicla_vision.menu.debug.false=Standard -nicla_vision.menu.debug.true=Debug -nicla_vision.menu.debug.true.build.zsk_args.debug=-debug - -nicla_vision.menu.link_mode.dynamic=Dynamic -nicla_vision.menu.link_mode.static=Static -nicla_vision.menu.link_mode.static.build.link_mode=static -nicla_vision.menu.link_mode.static.upload.extension=bin-zsk.bin - -nicla_vision.build.zephyr_target=arduino_nicla_vision//m7 -nicla_vision.build.zephyr_args= -nicla_vision.build.zephyr_hals=hal_stm32 hal_infineon -nicla_vision.build.artifact=zephyr_main -nicla_vision.build.variant=arduino_nicla_vision_stm32h747xx_m7 - -nicla_vision.build.extra_flags= -nicla_vision.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -nicla_vision.build.board=NICLA_VISION -nicla_vision.vid.0=0x2341 -nicla_vision.pid.0=0x005b -nicla_vision.upload_port.0.vid=0x2341 -nicla_vision.upload_port.0.pid=0x025f - -nicla_vision.upload.tool=dfu-util -nicla_vision.upload.tool.default=dfu-util -nicla_vision.upload.protocol= -nicla_vision.upload.transport= -nicla_vision.upload.vid=0x2341 -nicla_vision.upload.pid=0x035f -nicla_vision.upload.interface=0 -nicla_vision.upload.use_1200bps_touch=true -nicla_vision.upload.wait_for_upload_port=true -nicla_vision.upload.native_usb=true - -nicla_vision.bootloader.tool=dfu-util -nicla_vision.bootloader.tool.default=dfu-util -nicla_vision.bootloader.vid=0x2341 -nicla_vision.bootloader.pid=0x035f -nicla_vision.bootloader.interface=0 -nicla_vision.bootloader.file=zephyr-{build.variant}.bin -nicla_vision.bootloader.address=0x08040000 - -nicla_vision.debug.tool=gdb -nicla_vision.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -nicla_vision.debug.server.openocd.scripts.1={programmer.transport_script} -nicla_vision.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg -nicla_vision.debug.cortex-debug.custom.request=attach -nicla_vision.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd - -############################################################################################################## - -frdm_rw612.name=NXP FRDM RW612 -frdm_rw612.build.core=arduino -frdm_rw612.build.crossprefix=arm-zephyr-eabi- -frdm_rw612.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -frdm_rw612.menu.debug.false=Standard -frdm_rw612.menu.debug.true=Debug -frdm_rw612.menu.debug.true.build.zsk_args.debug=-debug - -frdm_rw612.menu.link_mode.dynamic=Dynamic -frdm_rw612.menu.link_mode.static=Static -frdm_rw612.menu.link_mode.static.build.link_mode=static -frdm_rw612.menu.link_mode.static.upload.extension=bin-zsk.bin - -frdm_rw612.build.zephyr_target=frdm_rw612 -frdm_rw612.build.zephyr_args= -frdm_rw612.build.zephyr_hals=hal_stm32 -frdm_rw612.build.variant=frdm_rw612_rw612 - -frdm_rw612.build.extra_flags= -frdm_rw612.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -frdm_rw612.build.board=FRDM_RW612 -frdm_rw612.vid.0=0x1fc9 -frdm_rw612.pid.0=0x0143 -frdm_rw612.upload_port.0.vid=0x1fc9 -frdm_rw612.upload_port.0.pid=0x0143 -frdm_rw612.upload.target=rw612 - -frdm_rw612.upload.tool=pyocd -frdm_rw612.upload.tool.default=pyocd -frdm_rw612.upload.protocol= -frdm_rw612.upload.transport= -frdm_rw612.upload.vid=0x1fc9 -frdm_rw612.upload.pid=0x0143 -frdm_rw612.upload.interface=0 -frdm_rw612.upload.use_1200bps_touch=false -frdm_rw612.upload.wait_for_upload_port=false -frdm_rw612.upload.native_usb=true - -frdm_rw612.bootloader.tool=pyocd -frdm_rw612.bootloader.tool.default=pyocd -frdm_rw612.bootloader.file=zephyr-{build.variant}.elf -frdm_rw612.bootloader.target=rw612 - -########################################################################################## - -nicla_sense.name=Arduino Nicla Sense ME -nicla_sense.build.core=arduino -nicla_sense.build.crossprefix=arm-zephyr-eabi- -nicla_sense.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -nicla_sense.menu.link_mode.dynamic=Dynamic -nicla_sense.menu.link_mode.static=Static -nicla_sense.menu.link_mode.static.build.link_mode=static -nicla_sense.menu.link_mode.static.upload.extension=bin-zsk.bin - -nicla_sense.build.zephyr_target=arduino_nicla_sense_me -nicla_sense.build.zephyr_args= -nicla_sense.build.zephyr_hals=hal_nordic -nicla_sense.build.artifact=zephyr_main -nicla_sense.build.variant=arduino_nicla_sense_me_nrf52832 - -nicla_sense.openocd_cfg=flash_sketch.cfg -nicla_sense.build.extra_flags= -nicla_sense.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -nicla_sense.build.board=NICLA_SENSE_ME -nicla_sense.vid.0=0x2341 -nicla_sense.pid.0=0x0360 -nicla_sense.upload_port.0.vid=0x2341 -nicla_sense.upload_port.0.pid=0x0060 - -nicla_sense.upload.tool=openocd -nicla_sense.upload.tool.default=openocd -nicla_sense.upload.protocol= -nicla_sense.upload.config=-f target/nrf52.cfg -nicla_sense.upload.programmer=-f interface/cmsis-dap.cfg -nicla_sense.upload.vid=0x2341 -nicla_sense.upload.pid=0x0060 -nicla_sense.upload.interface=0 -nicla_sense.upload.use_1200bps_touch=false -nicla_sense.upload.wait_for_upload_port=false -nicla_sense.upload.native_usb=false -nicla_sense.upload.target=nrf52 - -nicla_sense.bootloader.tool=openocd -nicla_sense.bootloader.tool.default=openocd -nicla_sense.bootloader.vid=0x2341 -nicla_sense.bootloader.pid=0x0360 -nicla_sense.bootloader.interface=0 -nicla_sense.bootloader.file=zephyr-{build.variant}.hex -nicla_sense.bootloader.target=nrf52 - -nicla_sense.debug.tool=gdb -nicla_sense.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -nicla_sense.debug.server.openocd.scripts.1={programmer.transport_script} -nicla_sense.debug.server.openocd.scripts.2=target/nrf52.cfg -nicla_sense.debug.cortex-debug.custom.request=attach - - -########################################################################################## - -portentac33.name=Arduino Portenta C33 -portentac33.build.core=arduino -portentac33.build.crossprefix=arm-zephyr-eabi- -portentac33.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -portentac33.menu.debug.false=Standard -portentac33.menu.debug.true=Debug -portentac33.menu.debug.true.build.zsk_args.debug=-debug - -portentac33.menu.link_mode.dynamic=Dynamic -portentac33.menu.link_mode.static=Static -portentac33.menu.link_mode.static.build.link_mode=static -portentac33.menu.link_mode.static.upload.extension=bin-zsk.bin - -portentac33.build.zephyr_target=arduino_portenta_c33 -portentac33.build.zephyr_args= -portentac33.build.zephyr_hals=hal_renesas nanopb -portentac33.build.artifact=zephyr_main -portentac33.build.variant=arduino_portenta_c33_r7fa6m5bh3cfc - -portentac33.build.extra_flags= -portentac33.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -portentac33.build.board=PORTENTA_C33 -portentac33.vid.0=0x2341 -portentac33.pid.0=0x0068 -portentac33.upload_port.0.vid=0x2341 -portentac33.upload_port.0.pid=0x0068 -portentac33.upload.target=portentac33 - -portentac33.upload.tool=dfu-util -portentac33.upload.tool.default=dfu-util -portentac33.upload.protocol= -portentac33.upload.transport= -portentac33.upload.vid=0x2341 -portentac33.upload.pid=0x0368 -portentac33.upload.interface=1 -portentac33.upload.use_1200bps_touch=true -portentac33.upload.wait_for_upload_port=false -portentac33.upload.native_usb=true -portentac33.upload.dfuse=-Q -w - -portentac33.bootloader.tool=dfu-util -portentac33.bootloader.tool.default=dfu-util -portentac33.bootloader.file=zephyr-{build.variant}.bin -portentac33.bootloader.interface=0 -portentac33.bootloader.address=0x10000 -portentac33.bootloader.dfuse=-Q - -########################################################################################## - -opta.name=Arduino Opta -opta.build.core=arduino -opta.build.crossprefix=arm-zephyr-eabi- -opta.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -opta.menu.debug.false=Standard -opta.menu.debug.true=Debug -opta.menu.debug.true.build.zsk_args.debug=-debug - -opta.menu.link_mode.dynamic=Dynamic -opta.menu.link_mode.static=Static -opta.menu.link_mode.static.build.link_mode=static -opta.menu.link_mode.static.upload.extension=bin-zsk.bin - -opta.build.zephyr_target=arduino_opta//m7 -opta.build.zephyr_args= -opta.build.zephyr_hals=hal_stm32 hal_infineon -opta.build.artifact=zephyr_main -opta.build.variant=arduino_opta_stm32h747xx_m7 - -opta.build.extra_flags= -opta.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -opta.build.board=OPTA -opta.vid.0=0x2341 -opta.pid.0=0x0064 -opta.upload_port.0.vid=0x2341 -opta.upload_port.0.pid=0x0364 - -opta.upload.tool=dfu-util -opta.upload.tool.default=dfu-util -opta.upload.protocol= -opta.upload.transport= -opta.upload.vid=0x2341 -opta.upload.pid=0x0364 -opta.upload.interface=0 -opta.upload.use_1200bps_touch=true -opta.upload.wait_for_upload_port=true -opta.upload.native_usb=true - -opta.bootloader.tool=dfu-util -opta.bootloader.tool.default=dfu-util -opta.bootloader.vid=0x2341 -opta.bootloader.pid=0x0364 -opta.bootloader.interface=0 -opta.bootloader.file=zephyr-{build.variant}.bin -opta.bootloader.address=0x08040000 - -opta.debug.tool=gdb -opta.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -opta.debug.server.openocd.scripts.1={programmer.transport_script} -opta.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg -opta.debug.cortex-debug.custom.request=attach -opta.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd - -########################################################################################## - -nano_matter.name=Arduino Nano Matter -nano_matter.build.core=arduino -nano_matter.build.crossprefix=arm-zephyr-eabi- -nano_matter.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -nano_matter.menu.link_mode.dynamic=Dynamic -nano_matter.menu.link_mode.static=Static -nano_matter.menu.link_mode.static.build.link_mode=static -nano_matter.menu.link_mode.static.upload.extension=bin-zsk.bin - -nano_matter.build.zephyr_target=arduino_nano_matter -nano_matter.build.zephyr_args= -nano_matter.build.zephyr_hals=hal_silabs -nano_matter.build.artifact=zephyr_main -nano_matter.build.variant=arduino_nano_matter_mgm240sd22vna - -nano_matter.openocd_cfg=flash_sketch.cfg -nano_matter.build.extra_flags= -nano_matter.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -nano_matter.build.board=ARDUINO_NANO_MATTER -nano_matter.vid.0=0x2341 -nano_matter.pid.0=0x0072 -nano_matter.upload_port.0.vid=0x2341 -nano_matter.upload_port.0.pid=0x0072 - -nano_matter.upload.tool=openocd -nano_matter.upload.tool.default=openocd -nano_matter.upload.config=-f target/efm32s2_g23.cfg -nano_matter.upload.programmer=-f interface/cmsis-dap.cfg -nano_matter.upload.protocol=SWD -nano_matter.upload.setup_command= -nano_matter.upload.use_1200bps_touch=false -nano_matter.upload.wait_for_upload_port=false -nano_matter.upload.native_usb=false - -nano_matter.bootloader.tool=openocd -nano_matter.bootloader.tool.default=openocd -nano_matter.bootloader.vid=0x2341 -nano_matter.bootloader.pid=0x0072 -nano_matter.bootloader.interface=0 -nano_matter.bootloader.file=zephyr-{build.variant}.hex -nano_matter.bootloader.target=arduino_nano_matter - -nano_matter.debug.server=openocd -nano_matter.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg -nano_matter.debug.server.openocd.scripts.1=target/efm32s2_g23.cfg -nano_matter.debug.cortex-debug.custom.postAttachCommands.0=monitor reset halt -#nano_matter.debug.cortex-debug.custom.postAttachCommands.1=monitor reset_config srst_nogate -#nano_matter.debug.cortex-debug.custom.postAttachCommands.2=monitor gdb_breakpoint_override hard -nano_matter.debug.cortex-debug.custom.postAttachCommands.3=monitor gdb_sync -nano_matter.debug.cortex-debug.custom.postAttachCommands.4=c -nano_matter.debug.cortex-debug.custom.overrideRestartCommands.0=monitor reset halt -nano_matter.debug.cortex-debug.custom.overrideRestartCommands.1=monitor gdb_sync -nano_matter.debug.cortex-debug.custom.overrideRestartCommands.2=c -nano_matter.debug.cortex-debug.custom.request=attach - -############################################################################################################## - -unoq.name=Arduino UNO Q -unoq.build.core=arduino -unoq.build.crossprefix=arm-zephyr-eabi- -unoq.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -unoq.menu.link_mode.dynamic=Dynamic -unoq.menu.link_mode.static=Static -unoq.menu.link_mode.static.build.link_mode=static -unoq.menu.link_mode.static.upload.extension=bin-zsk.bin - -unoq.menu.wait_linux_boot.yes=Wait for Linux -unoq.menu.wait_linux_boot.no=Immediate -unoq.menu.wait_linux_boot.no.build.boot_mode=immediate -unoq.menu.wait_linux_boot.app=Wait for App -unoq.menu.wait_linux_boot.app.build.boot_mode=app - -unoq.build.zephyr_target=arduino_uno_q -unoq.build.zephyr_args= -unoq.build.variant=arduino_uno_q_stm32u585xx -unoq.build.artifact=zephyr_unoq -unoq.build.subarch=zephyr - -unoq.openocd_cfg=flash_sketch.cfg -unoq.build.extra_flags= -unoq.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -unoq.build.board=UNO_Q -unoq.build.zephyr_hals=hal_stm32 -unoq.build.zephyr_toolchain=arm-zephyr-eabi -unoq.vid.0=0x2341 -unoq.pid.0=0x0078 -unoq.upload_port.0.vid=0x2341 -unoq.upload_port.0.pid=0x0078 -unoq.upload.target=stm32u585zitxq - -unoq.upload.tool=remoteocd -unoq.upload.tool.default=remoteocd -unoq.upload.tool.network=remoteocd_network -unoq.upload.protocol= -unoq.upload.transport= -unoq.upload.vid=0x2341 -unoq.upload.pid=0x0078 -unoq.upload.interface=0 -unoq.upload.use_1200bps_touch=false -unoq.upload.wait_for_upload_port=false -unoq.upload.native_usb=true - -unoq.bootloader.tool=remoteocd -unoq.bootloader.tool.default=remoteocd -unoq.bootloader.file=zephyr-{build.variant}.elf -unoq.bootloader.target=stm32u585zitxq - -############################################################################################################## - -nano_connect.name=Arduino Nano RP2040 Connect -nano_connect.build.core=arduino -nano_connect.build.crossprefix=arm-zephyr-eabi- -nano_connect.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ - -nano_connect.menu.debug.false=Standard -nano_connect.menu.debug.true=Debug -nano_connect.menu.debug.true.build.zsk_args.debug=-debug - -nano_connect.menu.link_mode.dynamic=Dynamic -nano_connect.menu.link_mode.static=Static -nano_connect.menu.link_mode.static.build.link_mode=static -nano_connect.menu.link_mode.static.upload.extension=bin-zsk.bin - -nano_connect.build.zephyr_target=arduino_nano_connect -nano_connect.build.zephyr_args= -nano_connect.build.zephyr_hals=hal_rpi_pico -nano_connect.build.artifact=zephyr_main -nano_connect.build.variant=arduino_nano_connect_rp2040 -nano_connect.build.mcu=cortex-m0plus -nano_connect.build.fpu= -nano_connect.build.architecture=cortex-m0plus -nano_connect.compiler.zephyr.arch.define= - -nano_connect.build.float-abi=-mfloat-abi=soft -nano_connect.build.extra_flags= -nano_connect.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit -nano_connect.recipe.hooks.objcopy.postobjcopy.3.pattern="{runtime.tools.bin2uf2.path}/bin2uf2" {upload.address} {upload.familyid} "{build.path}/{build.project_name}.{upload.extension}" "{build.path}/{build.project_name}.uf2" -nano_connect.build.board=NANO_RP2040_CONNECT -nano_connect.compiler.zephyr= -nano_connect.vid.0=0x2341 -nano_connect.pid.0=0x005E -nano_connect.upload_port.0.vid=0x2341 -nano_connect.upload_port.0.pid=0x005E - -nano_connect.upload.tool=picotool -nano_connect.upload.tool.default=picotool -nano_connect.upload.protocol= -nano_connect.upload.transport= -nano_connect.upload.vid=0x2341 -nano_connect.upload.pid=0x005E -nano_connect.upload.interface=0 -nano_connect.upload.use_1200bps_touch=true -nano_connect.upload.wait_for_upload_port=false -nano_connect.upload.native_usb=true -nano_connect.upload.maximum_size=16777216 -nano_connect.upload.maximum_data_size=270336 - -nano_connect.upload.address=0x100E0000 -nano_connect.upload.familyid=0xe48bff56 - -nano_connect.bootloader.tool=picotool -nano_connect.bootloader.tool.default=picotool -nano_connect.bootloader.vid=0x2341 -nano_connect.bootloader.pid=0x005E -nano_connect.bootloader.interface=0 -nano_connect.bootloader.file=zephyr-{build.variant} - -nano_connect.debug.tool=gdb -nano_connect.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg -nano_connect.debug.server.openocd.scripts.1={programmer.transport_script} -nano_connect.debug.server.openocd.scripts.2=target/rp2040-core0.cfg -nano_connect.debug.cortex-debug.custom.request=attach -nano_connect.debug.svd_file={runtime.platform.path}/svd/rp2040.svd +# giga.menu.link_mode.dynamic=Dynamic +# giga.menu.link_mode.static=Static +# giga.menu.link_mode.static.build.link_mode=static +# giga.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# giga.build.zephyr_target=arduino_giga_r1//m7 +# giga.build.zephyr_args=--shield arduino_giga_display_shield +# giga.build.zephyr_hals=hal_stm32 hal_infineon +# giga.build.variant=arduino_giga_r1_stm32h747xx_m7 +# giga.build.artifact=zephyr_main +# +# giga.build.extra_flags= +# giga.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# giga.build.board=GIGA +# giga.vid.0=0x2341 +# giga.pid.0=0x0066 +# giga.upload_port.0.vid=0x2341 +# giga.upload_port.0.pid=0x0066 +# +# giga.upload.tool=dfu-util +# giga.upload.tool.default=dfu-util +# giga.upload.protocol= +# giga.upload.transport= +# giga.upload.vid=0x2341 +# giga.upload.pid=0x0366 +# giga.upload.interface=0 +# giga.upload.use_1200bps_touch=true +# giga.upload.wait_for_upload_port=true +# giga.upload.native_usb=true +# +# giga.bootloader.tool=dfu-util +# giga.bootloader.tool.default=dfu-util +# giga.bootloader.vid=0x2341 +# giga.bootloader.pid=0x0366 +# giga.bootloader.interface=0 +# giga.bootloader.file=zephyr-{build.variant}.bin +# giga.bootloader.address=0x08040000 +# +# giga.debug.tool=gdb +# giga.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# giga.debug.server.openocd.scripts.1={programmer.transport_script} +# giga.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg +# giga.debug.cortex-debug.custom.request=attach +# giga.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd +# +# ########################################################################################## +# +# nano33ble.name=Arduino Nano 33 BLE +# nano33ble.build.core=arduino +# nano33ble.build.crossprefix=arm-zephyr-eabi- +# nano33ble.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# nano33ble.menu.debug.false=Standard +# nano33ble.menu.debug.true=Debug +# nano33ble.menu.debug.true.build.zsk_args.debug=-debug +# +# nano33ble.menu.link_mode.dynamic=Dynamic +# nano33ble.menu.link_mode.static=Static +# nano33ble.menu.link_mode.static.build.link_mode=static +# nano33ble.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# nano33ble.build.zephyr_target=arduino_nano_33_ble//sense +# nano33ble.build.zephyr_args= +# nano33ble.build.zephyr_hals=hal_nordic +# nano33ble.build.artifact=zephyr_main +# nano33ble.build.variant=arduino_nano_33_ble_nrf52840_sense +# +# nano33ble.build.extra_flags= +# nano33ble.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# nano33ble.build.board=NANO33BLE +# nano33ble.vid.0=0x2341 +# nano33ble.pid.0=0x035a +# nano33ble.upload_port.0.vid=0x2341 +# nano33ble.upload_port.0.pid=0x005a +# +# nano33ble.upload.tool=bossac +# nano33ble.upload.tool.default=bossac +# nano33ble.upload.protocol= +# nano33ble.upload.transport= +# nano33ble.upload.vid=0x2341 +# nano33ble.upload.pid=0x005a +# nano33ble.upload.interface=0 +# nano33ble.upload.use_1200bps_touch=true +# nano33ble.upload.wait_for_upload_port=true +# nano33ble.upload.native_usb=true +# nano33ble.upload.offset=0x10000 # bootloader skips its own partition +# +# nano33ble.bootloader.tool=bossac +# nano33ble.bootloader.tool.default=bossac +# nano33ble.bootloader.vid=0x2341 +# nano33ble.bootloader.pid=0x035b +# nano33ble.bootloader.interface=0 +# nano33ble.bootloader.file=zephyr-{build.variant}.bin +# nano33ble.bootloader.address=0x0000 +# +# nano33ble.debug.tool=gdb +# nano33ble.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# nano33ble.debug.server.openocd.scripts.1={programmer.transport_script} +# nano33ble.debug.server.openocd.scripts.2=target/nrf52.cfg +# nano33ble.debug.cortex-debug.custom.request=attach +# +# ############################################################################################################## +# +# ek_ra8d1.name=Renesas RA8D1 EK +# ek_ra8d1.build.core=arduino +# ek_ra8d1.build.crossprefix=arm-zephyr-eabi- +# ek_ra8d1.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# ek_ra8d1.menu.debug.false=Standard +# ek_ra8d1.menu.debug.true=Debug +# ek_ra8d1.menu.debug.true.build.zsk_args.debug=-debug +# +# ek_ra8d1.menu.link_mode.dynamic=Dynamic +# ek_ra8d1.menu.link_mode.static=Static +# ek_ra8d1.menu.link_mode.static.build.link_mode=static +# ek_ra8d1.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# ek_ra8d1.build.zephyr_target=ek_ra8d1 +# ek_ra8d1.build.zephyr_args= +# ek_ra8d1.build.zephyr_hals=hal_renesas +# ek_ra8d1.build.variant=ek_ra8d1_r7fa8d1bhecbd +# +# ek_ra8d1.build.extra_flags= +# ek_ra8d1.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# ek_ra8d1.build.board=EK_RA8D1 +# +# #ek_ra8d1.recipe.hooks.objcopy.postobjcopy.4.pattern=cp {build.variant.path}/flasher.jlink "{build.path}/flasher.jlink" +# #ek_ra8d1.recipe.hooks.objcopy.postobjcopy.5.pattern=sed -i 's|SKETCH|"{build.path}/{build.project_name}.llext.dfu.bin"|g' "{build.path}/flasher.jlink" +# +# ek_ra8d1.vid.0=0x2341 +# ek_ra8d1.pid.0=0x0077 +# ek_ra8d1.upload_port.0.vid=0x2341 +# ek_ra8d1.upload_port.0.pid=0x0077 +# +# ek_ra8d1.upload.tool=pyocd +# ek_ra8d1.upload.tool.default=pyocd +# ek_ra8d1.upload.protocol= +# ek_ra8d1.upload.transport= +# ek_ra8d1.upload.vid=0x2341 +# ek_ra8d1.upload.pid=0x0366 +# ek_ra8d1.upload.interface=0 +# ek_ra8d1.upload.use_1200bps_touch=false +# ek_ra8d1.upload.wait_for_upload_port=false +# ek_ra8d1.upload.native_usb=true +# ek_ra8d1.upload.target=R7FA8D1AH +# +# ek_ra8d1.bootloader.tool=pyocd +# ek_ra8d1.bootloader.tool.default=pyocd +# ek_ra8d1.bootloader.file=zephyr-{build.variant}.elf +# ek_ra8d1.bootloader.target=R7FA8D1AH +# +# +# ############################################################################################################## +# +# frdm_mcxn947.name=NXP FRDM MCXN947 +# frdm_mcxn947.build.core=arduino +# frdm_mcxn947.build.crossprefix=arm-zephyr-eabi- +# frdm_mcxn947.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# frdm_mcxn947.menu.debug.false=Standard +# frdm_mcxn947.menu.debug.true=Debug +# frdm_mcxn947.menu.debug.true.build.zsk_args.debug=-debug +# +# frdm_mcxn947.menu.link_mode.dynamic=Dynamic +# frdm_mcxn947.menu.link_mode.static=Static +# frdm_mcxn947.menu.link_mode.static.build.link_mode=static +# frdm_mcxn947.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# frdm_mcxn947.build.zephyr_target=frdm_mcxn947//cpu0 +# frdm_mcxn947.build.zephyr_args= +# frdm_mcxn947.build.zephyr_hals=hal_nxp +# frdm_mcxn947.build.variant=frdm_mcxn947_mcxn947_cpu0 +# +# frdm_mcxn947.build.extra_flags= +# frdm_mcxn947.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# frdm_mcxn947.build.board=FRDM_MCXN947 +# frdm_mcxn947.vid.0=0x1fc9 +# frdm_mcxn947.pid.0=0x0143 +# frdm_mcxn947.upload_port.0.vid=0x1fc9 +# frdm_mcxn947.upload_port.0.pid=0x0143 +# frdm_mcxn947.upload.target=mcxn947vdf +# +# frdm_mcxn947.upload.tool=pyocd +# frdm_mcxn947.upload.tool.default=pyocd +# frdm_mcxn947.upload.protocol= +# frdm_mcxn947.upload.transport= +# frdm_mcxn947.upload.vid=0x1fc9 +# frdm_mcxn947.upload.pid=0x0143 +# frdm_mcxn947.upload.interface=0 +# frdm_mcxn947.upload.use_1200bps_touch=false +# frdm_mcxn947.upload.wait_for_upload_port=false +# frdm_mcxn947.upload.native_usb=true +# +# frdm_mcxn947.bootloader.tool=pyocd +# frdm_mcxn947.bootloader.tool.default=pyocd +# frdm_mcxn947.bootloader.file=zephyr-{build.variant}.elf +# frdm_mcxn947.bootloader.target=mcxn947vdf +# +# +# ########################################################################################## +# +# portentah7.name=Arduino Portenta H7 +# portentah7.build.core=arduino +# portentah7.build.crossprefix=arm-zephyr-eabi- +# portentah7.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# portentah7.menu.debug.false=Standard +# portentah7.menu.debug.true=Debug +# portentah7.menu.debug.true.build.zsk_args.debug=-debug +# +# portentah7.menu.link_mode.dynamic=Dynamic +# portentah7.menu.link_mode.static=Static +# portentah7.menu.link_mode.static.build.link_mode=static +# portentah7.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# portentah7.build.zephyr_target=arduino_portenta_h7@1.0.0//m7 +# portentah7.build.zephyr_args= +# portentah7.build.zephyr_hals=hal_stm32 hal_infineon +# portentah7.build.artifact=zephyr_main +# portentah7.build.variant=arduino_portenta_h7_stm32h747xx_m7 +# +# portentah7.build.extra_flags= +# portentah7.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# portentah7.build.board=PORTENTA_H7_M7 +# portentah7.vid.0=0x2341 +# portentah7.pid.0=0x005b +# portentah7.upload_port.0.vid=0x2341 +# portentah7.upload_port.0.pid=0x035b +# +# portentah7.upload.tool=dfu-util +# portentah7.upload.tool.default=dfu-util +# portentah7.upload.protocol= +# portentah7.upload.transport= +# portentah7.upload.vid=0x2341 +# portentah7.upload.pid=0x035b +# portentah7.upload.interface=0 +# portentah7.upload.use_1200bps_touch=true +# portentah7.upload.wait_for_upload_port=true +# portentah7.upload.native_usb=true +# +# portentah7.bootloader.tool=dfu-util +# portentah7.bootloader.tool.default=dfu-util +# portentah7.bootloader.vid=0x2341 +# portentah7.bootloader.pid=0x035b +# portentah7.bootloader.interface=0 +# portentah7.bootloader.file=zephyr-{build.variant}.bin +# portentah7.bootloader.address=0x08040000 +# +# portentah7.debug.tool=gdb +# portentah7.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# portentah7.debug.server.openocd.scripts.1={programmer.transport_script} +# portentah7.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg +# portentah7.debug.cortex-debug.custom.request=attach +# portentah7.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd +# +# ############################################################################################################## +# +# nicla_vision.name=Arduino Nicla Vision +# nicla_vision.build.core=arduino +# nicla_vision.build.crossprefix=arm-zephyr-eabi- +# nicla_vision.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# nicla_vision.menu.debug.false=Standard +# nicla_vision.menu.debug.true=Debug +# nicla_vision.menu.debug.true.build.zsk_args.debug=-debug +# +# nicla_vision.menu.link_mode.dynamic=Dynamic +# nicla_vision.menu.link_mode.static=Static +# nicla_vision.menu.link_mode.static.build.link_mode=static +# nicla_vision.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# nicla_vision.build.zephyr_target=arduino_nicla_vision//m7 +# nicla_vision.build.zephyr_args= +# nicla_vision.build.zephyr_hals=hal_stm32 hal_infineon +# nicla_vision.build.artifact=zephyr_main +# nicla_vision.build.variant=arduino_nicla_vision_stm32h747xx_m7 +# +# nicla_vision.build.extra_flags= +# nicla_vision.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# nicla_vision.build.board=NICLA_VISION +# nicla_vision.vid.0=0x2341 +# nicla_vision.pid.0=0x005b +# nicla_vision.upload_port.0.vid=0x2341 +# nicla_vision.upload_port.0.pid=0x025f +# +# nicla_vision.upload.tool=dfu-util +# nicla_vision.upload.tool.default=dfu-util +# nicla_vision.upload.protocol= +# nicla_vision.upload.transport= +# nicla_vision.upload.vid=0x2341 +# nicla_vision.upload.pid=0x035f +# nicla_vision.upload.interface=0 +# nicla_vision.upload.use_1200bps_touch=true +# nicla_vision.upload.wait_for_upload_port=true +# nicla_vision.upload.native_usb=true +# +# nicla_vision.bootloader.tool=dfu-util +# nicla_vision.bootloader.tool.default=dfu-util +# nicla_vision.bootloader.vid=0x2341 +# nicla_vision.bootloader.pid=0x035f +# nicla_vision.bootloader.interface=0 +# nicla_vision.bootloader.file=zephyr-{build.variant}.bin +# nicla_vision.bootloader.address=0x08040000 +# +# nicla_vision.debug.tool=gdb +# nicla_vision.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# nicla_vision.debug.server.openocd.scripts.1={programmer.transport_script} +# nicla_vision.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg +# nicla_vision.debug.cortex-debug.custom.request=attach +# nicla_vision.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd +# +# ############################################################################################################## +# +# frdm_rw612.name=NXP FRDM RW612 +# frdm_rw612.build.core=arduino +# frdm_rw612.build.crossprefix=arm-zephyr-eabi- +# frdm_rw612.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# frdm_rw612.menu.debug.false=Standard +# frdm_rw612.menu.debug.true=Debug +# frdm_rw612.menu.debug.true.build.zsk_args.debug=-debug +# +# frdm_rw612.menu.link_mode.dynamic=Dynamic +# frdm_rw612.menu.link_mode.static=Static +# frdm_rw612.menu.link_mode.static.build.link_mode=static +# frdm_rw612.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# frdm_rw612.build.zephyr_target=frdm_rw612 +# frdm_rw612.build.zephyr_args= +# frdm_rw612.build.zephyr_hals=hal_stm32 +# frdm_rw612.build.variant=frdm_rw612_rw612 +# +# frdm_rw612.build.extra_flags= +# frdm_rw612.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# frdm_rw612.build.board=FRDM_RW612 +# frdm_rw612.vid.0=0x1fc9 +# frdm_rw612.pid.0=0x0143 +# frdm_rw612.upload_port.0.vid=0x1fc9 +# frdm_rw612.upload_port.0.pid=0x0143 +# frdm_rw612.upload.target=rw612 +# +# frdm_rw612.upload.tool=pyocd +# frdm_rw612.upload.tool.default=pyocd +# frdm_rw612.upload.protocol= +# frdm_rw612.upload.transport= +# frdm_rw612.upload.vid=0x1fc9 +# frdm_rw612.upload.pid=0x0143 +# frdm_rw612.upload.interface=0 +# frdm_rw612.upload.use_1200bps_touch=false +# frdm_rw612.upload.wait_for_upload_port=false +# frdm_rw612.upload.native_usb=true +# +# frdm_rw612.bootloader.tool=pyocd +# frdm_rw612.bootloader.tool.default=pyocd +# frdm_rw612.bootloader.file=zephyr-{build.variant}.elf +# frdm_rw612.bootloader.target=rw612 +# +# ########################################################################################## +# +# nicla_sense.name=Arduino Nicla Sense ME +# nicla_sense.build.core=arduino +# nicla_sense.build.crossprefix=arm-zephyr-eabi- +# nicla_sense.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# nicla_sense.menu.link_mode.dynamic=Dynamic +# nicla_sense.menu.link_mode.static=Static +# nicla_sense.menu.link_mode.static.build.link_mode=static +# nicla_sense.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# nicla_sense.build.zephyr_target=arduino_nicla_sense_me +# nicla_sense.build.zephyr_args= +# nicla_sense.build.zephyr_hals=hal_nordic +# nicla_sense.build.artifact=zephyr_main +# nicla_sense.build.variant=arduino_nicla_sense_me_nrf52832 +# +# nicla_sense.openocd_cfg=flash_sketch.cfg +# nicla_sense.build.extra_flags= +# nicla_sense.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# nicla_sense.build.board=NICLA_SENSE_ME +# nicla_sense.vid.0=0x2341 +# nicla_sense.pid.0=0x0360 +# nicla_sense.upload_port.0.vid=0x2341 +# nicla_sense.upload_port.0.pid=0x0060 +# +# nicla_sense.upload.tool=openocd +# nicla_sense.upload.tool.default=openocd +# nicla_sense.upload.protocol= +# nicla_sense.upload.config=-f target/nrf52.cfg +# nicla_sense.upload.programmer=-f interface/cmsis-dap.cfg +# nicla_sense.upload.vid=0x2341 +# nicla_sense.upload.pid=0x0060 +# nicla_sense.upload.interface=0 +# nicla_sense.upload.use_1200bps_touch=false +# nicla_sense.upload.wait_for_upload_port=false +# nicla_sense.upload.native_usb=false +# nicla_sense.upload.target=nrf52 +# +# nicla_sense.bootloader.tool=openocd +# nicla_sense.bootloader.tool.default=openocd +# nicla_sense.bootloader.vid=0x2341 +# nicla_sense.bootloader.pid=0x0360 +# nicla_sense.bootloader.interface=0 +# nicla_sense.bootloader.file=zephyr-{build.variant}.hex +# nicla_sense.bootloader.target=nrf52 +# +# nicla_sense.debug.tool=gdb +# nicla_sense.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# nicla_sense.debug.server.openocd.scripts.1={programmer.transport_script} +# nicla_sense.debug.server.openocd.scripts.2=target/nrf52.cfg +# nicla_sense.debug.cortex-debug.custom.request=attach +# +# +# ########################################################################################## +# +# portentac33.name=Arduino Portenta C33 +# portentac33.build.core=arduino +# portentac33.build.crossprefix=arm-zephyr-eabi- +# portentac33.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# portentac33.menu.debug.false=Standard +# portentac33.menu.debug.true=Debug +# portentac33.menu.debug.true.build.zsk_args.debug=-debug +# +# portentac33.menu.link_mode.dynamic=Dynamic +# portentac33.menu.link_mode.static=Static +# portentac33.menu.link_mode.static.build.link_mode=static +# portentac33.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# portentac33.build.zephyr_target=arduino_portenta_c33 +# portentac33.build.zephyr_args= +# portentac33.build.zephyr_hals=hal_renesas nanopb +# portentac33.build.artifact=zephyr_main +# portentac33.build.variant=arduino_portenta_c33_r7fa6m5bh3cfc +# +# portentac33.build.extra_flags= +# portentac33.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# portentac33.build.board=PORTENTA_C33 +# portentac33.vid.0=0x2341 +# portentac33.pid.0=0x0068 +# portentac33.upload_port.0.vid=0x2341 +# portentac33.upload_port.0.pid=0x0068 +# portentac33.upload.target=portentac33 +# +# portentac33.upload.tool=dfu-util +# portentac33.upload.tool.default=dfu-util +# portentac33.upload.protocol= +# portentac33.upload.transport= +# portentac33.upload.vid=0x2341 +# portentac33.upload.pid=0x0368 +# portentac33.upload.interface=1 +# portentac33.upload.use_1200bps_touch=true +# portentac33.upload.wait_for_upload_port=false +# portentac33.upload.native_usb=true +# portentac33.upload.dfuse=-Q -w +# +# portentac33.bootloader.tool=dfu-util +# portentac33.bootloader.tool.default=dfu-util +# portentac33.bootloader.file=zephyr-{build.variant}.bin +# portentac33.bootloader.interface=0 +# portentac33.bootloader.address=0x10000 +# portentac33.bootloader.dfuse=-Q +# +# ########################################################################################## +# +# opta.name=Arduino Opta +# opta.build.core=arduino +# opta.build.crossprefix=arm-zephyr-eabi- +# opta.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# opta.menu.debug.false=Standard +# opta.menu.debug.true=Debug +# opta.menu.debug.true.build.zsk_args.debug=-debug +# +# opta.menu.link_mode.dynamic=Dynamic +# opta.menu.link_mode.static=Static +# opta.menu.link_mode.static.build.link_mode=static +# opta.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# opta.build.zephyr_target=arduino_opta//m7 +# opta.build.zephyr_args= +# opta.build.zephyr_hals=hal_stm32 hal_infineon +# opta.build.artifact=zephyr_main +# opta.build.variant=arduino_opta_stm32h747xx_m7 +# +# opta.build.extra_flags= +# opta.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# opta.build.board=OPTA +# opta.vid.0=0x2341 +# opta.pid.0=0x0064 +# opta.upload_port.0.vid=0x2341 +# opta.upload_port.0.pid=0x0364 +# +# opta.upload.tool=dfu-util +# opta.upload.tool.default=dfu-util +# opta.upload.protocol= +# opta.upload.transport= +# opta.upload.vid=0x2341 +# opta.upload.pid=0x0364 +# opta.upload.interface=0 +# opta.upload.use_1200bps_touch=true +# opta.upload.wait_for_upload_port=true +# opta.upload.native_usb=true +# +# opta.bootloader.tool=dfu-util +# opta.bootloader.tool.default=dfu-util +# opta.bootloader.vid=0x2341 +# opta.bootloader.pid=0x0364 +# opta.bootloader.interface=0 +# opta.bootloader.file=zephyr-{build.variant}.bin +# opta.bootloader.address=0x08040000 +# +# opta.debug.tool=gdb +# opta.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# opta.debug.server.openocd.scripts.1={programmer.transport_script} +# opta.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg +# opta.debug.cortex-debug.custom.request=attach +# opta.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd +# +# ########################################################################################## +# +# nano_matter.name=Arduino Nano Matter +# nano_matter.build.core=arduino +# nano_matter.build.crossprefix=arm-zephyr-eabi- +# nano_matter.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# nano_matter.menu.link_mode.dynamic=Dynamic +# nano_matter.menu.link_mode.static=Static +# nano_matter.menu.link_mode.static.build.link_mode=static +# nano_matter.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# nano_matter.build.zephyr_target=arduino_nano_matter +# nano_matter.build.zephyr_args= +# nano_matter.build.zephyr_hals=hal_silabs +# nano_matter.build.artifact=zephyr_main +# nano_matter.build.variant=arduino_nano_matter_mgm240sd22vna +# +# nano_matter.openocd_cfg=flash_sketch.cfg +# nano_matter.build.extra_flags= +# nano_matter.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# nano_matter.build.board=ARDUINO_NANO_MATTER +# nano_matter.vid.0=0x2341 +# nano_matter.pid.0=0x0072 +# nano_matter.upload_port.0.vid=0x2341 +# nano_matter.upload_port.0.pid=0x0072 +# +# nano_matter.upload.tool=openocd +# nano_matter.upload.tool.default=openocd +# nano_matter.upload.config=-f target/efm32s2_g23.cfg +# nano_matter.upload.programmer=-f interface/cmsis-dap.cfg +# nano_matter.upload.protocol=SWD +# nano_matter.upload.setup_command= +# nano_matter.upload.use_1200bps_touch=false +# nano_matter.upload.wait_for_upload_port=false +# nano_matter.upload.native_usb=false +# +# nano_matter.bootloader.tool=openocd +# nano_matter.bootloader.tool.default=openocd +# nano_matter.bootloader.vid=0x2341 +# nano_matter.bootloader.pid=0x0072 +# nano_matter.bootloader.interface=0 +# nano_matter.bootloader.file=zephyr-{build.variant}.hex +# nano_matter.bootloader.target=arduino_nano_matter +# +# nano_matter.debug.server=openocd +# nano_matter.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg +# nano_matter.debug.server.openocd.scripts.1=target/efm32s2_g23.cfg +# nano_matter.debug.cortex-debug.custom.postAttachCommands.0=monitor reset halt +# #nano_matter.debug.cortex-debug.custom.postAttachCommands.1=monitor reset_config srst_nogate +# #nano_matter.debug.cortex-debug.custom.postAttachCommands.2=monitor gdb_breakpoint_override hard +# nano_matter.debug.cortex-debug.custom.postAttachCommands.3=monitor gdb_sync +# nano_matter.debug.cortex-debug.custom.postAttachCommands.4=c +# nano_matter.debug.cortex-debug.custom.overrideRestartCommands.0=monitor reset halt +# nano_matter.debug.cortex-debug.custom.overrideRestartCommands.1=monitor gdb_sync +# nano_matter.debug.cortex-debug.custom.overrideRestartCommands.2=c +# nano_matter.debug.cortex-debug.custom.request=attach +# +# ############################################################################################################## +# +# unoq.name=Arduino UNO Q +# unoq.build.core=arduino +# unoq.build.crossprefix=arm-zephyr-eabi- +# unoq.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# unoq.menu.link_mode.dynamic=Dynamic +# unoq.menu.link_mode.static=Static +# unoq.menu.link_mode.static.build.link_mode=static +# unoq.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# unoq.menu.wait_linux_boot.yes=Wait for Linux +# unoq.menu.wait_linux_boot.no=Immediate +# unoq.menu.wait_linux_boot.no.build.boot_mode=immediate +# unoq.menu.wait_linux_boot.app=Wait for App +# unoq.menu.wait_linux_boot.app.build.boot_mode=app +# +# unoq.build.zephyr_target=arduino_uno_q +# unoq.build.zephyr_args= +# unoq.build.variant=arduino_uno_q_stm32u585xx +# unoq.build.artifact=zephyr_unoq +# unoq.build.subarch=zephyr +# +# unoq.openocd_cfg=flash_sketch.cfg +# unoq.build.extra_flags= +# unoq.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# unoq.build.board=UNO_Q +# unoq.build.zephyr_hals=hal_stm32 +# unoq.build.zephyr_toolchain=arm-zephyr-eabi +# unoq.vid.0=0x2341 +# unoq.pid.0=0x0078 +# unoq.upload_port.0.vid=0x2341 +# unoq.upload_port.0.pid=0x0078 +# unoq.upload.target=stm32u585zitxq +# +# unoq.upload.tool=remoteocd +# unoq.upload.tool.default=remoteocd +# unoq.upload.tool.network=remoteocd_network +# unoq.upload.protocol= +# unoq.upload.transport= +# unoq.upload.vid=0x2341 +# unoq.upload.pid=0x0078 +# unoq.upload.interface=0 +# unoq.upload.use_1200bps_touch=false +# unoq.upload.wait_for_upload_port=false +# unoq.upload.native_usb=true +# +# unoq.bootloader.tool=remoteocd +# unoq.bootloader.tool.default=remoteocd +# unoq.bootloader.file=zephyr-{build.variant}.elf +# unoq.bootloader.target=stm32u585zitxq +# +# ############################################################################################################## +# +# nano_connect.name=Arduino Nano RP2040 Connect +# nano_connect.build.core=arduino +# nano_connect.build.crossprefix=arm-zephyr-eabi- +# nano_connect.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ +# +# nano_connect.menu.debug.false=Standard +# nano_connect.menu.debug.true=Debug +# nano_connect.menu.debug.true.build.zsk_args.debug=-debug +# +# nano_connect.menu.link_mode.dynamic=Dynamic +# nano_connect.menu.link_mode.static=Static +# nano_connect.menu.link_mode.static.build.link_mode=static +# nano_connect.menu.link_mode.static.upload.extension=bin-zsk.bin +# +# nano_connect.build.zephyr_target=arduino_nano_connect +# nano_connect.build.zephyr_args= +# nano_connect.build.zephyr_hals=hal_rpi_pico +# nano_connect.build.artifact=zephyr_main +# nano_connect.build.variant=arduino_nano_connect_rp2040 +# nano_connect.build.mcu=cortex-m0plus +# nano_connect.build.fpu= +# nano_connect.build.architecture=cortex-m0plus +# nano_connect.compiler.zephyr.arch.define= +# +# nano_connect.build.float-abi=-mfloat-abi=soft +# nano_connect.build.extra_flags= +# nano_connect.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +# nano_connect.recipe.hooks.objcopy.postobjcopy.3.pattern="{runtime.tools.bin2uf2.path}/bin2uf2" {upload.address} {upload.familyid} "{build.path}/{build.project_name}.{upload.extension}" "{build.path}/{build.project_name}.uf2" +# nano_connect.build.board=NANO_RP2040_CONNECT +# nano_connect.compiler.zephyr= +# nano_connect.vid.0=0x2341 +# nano_connect.pid.0=0x005E +# nano_connect.upload_port.0.vid=0x2341 +# nano_connect.upload_port.0.pid=0x005E +# +# nano_connect.upload.tool=picotool +# nano_connect.upload.tool.default=picotool +# nano_connect.upload.protocol= +# nano_connect.upload.transport= +# nano_connect.upload.vid=0x2341 +# nano_connect.upload.pid=0x005E +# nano_connect.upload.interface=0 +# nano_connect.upload.use_1200bps_touch=true +# nano_connect.upload.wait_for_upload_port=false +# nano_connect.upload.native_usb=true +# nano_connect.upload.maximum_size=16777216 +# nano_connect.upload.maximum_data_size=270336 +# +# nano_connect.upload.address=0x100E0000 +# nano_connect.upload.familyid=0xe48bff56 +# +# nano_connect.bootloader.tool=picotool +# nano_connect.bootloader.tool.default=picotool +# nano_connect.bootloader.vid=0x2341 +# nano_connect.bootloader.pid=0x005E +# nano_connect.bootloader.interface=0 +# nano_connect.bootloader.file=zephyr-{build.variant} +# +# nano_connect.debug.tool=gdb +# nano_connect.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +# nano_connect.debug.server.openocd.scripts.1={programmer.transport_script} +# nano_connect.debug.server.openocd.scripts.2=target/rp2040-core0.cfg +# nano_connect.debug.cortex-debug.custom.request=attach +# nano_connect.debug.svd_file={runtime.platform.path}/svd/rp2040.svd +# +# ############################################################################################################## + +kit_pse84_ai.name=Infineon KIT-PSE84-AI (PSOC Edge E84) +kit_pse84_ai.build.core=arduino +kit_pse84_ai.build.crossprefix=arm-zephyr-eabi- +kit_pse84_ai.build.compiler_path={runtime.tools.arm-zephyr-eabi-1.0.1.path}/bin/ +kit_pse84_ai.menu.debug.false=Standard +kit_pse84_ai.menu.debug.true=Debug +kit_pse84_ai.menu.debug.true.build.zsk_args.debug=-debug +kit_pse84_ai.menu.link_mode.dynamic=Dynamic +kit_pse84_ai.menu.link_mode.static=Static +kit_pse84_ai.menu.link_mode.static.build.link_mode=static +kit_pse84_ai.menu.link_mode.static.upload.extension=bin-zsk.bin +kit_pse84_ai.build.zephyr_target=kit_pse84_ai/pse846gps2dbzc4a/m33 +kit_pse84_ai.build.zephyr_args= +kit_pse84_ai.build.zephyr_hals=hal_infineon +kit_pse84_ai.build.variant=kit_pse84_ai_pse846gps2dbzc4a_m33 +kit_pse84_ai.build.mcu=cortex-m33 +kit_pse84_ai.build.fpu=-mfpu=fpv5-sp-d16 +kit_pse84_ai.build.architecture=cortex-m33 +kit_pse84_ai.build.float-abi=-mfloat-abi=hard +kit_pse84_ai.compiler.zephyr.specs= +kit_pse84_ai.build.extra_flags= +kit_pse84_ai.build.specs= +kit_pse84_ai.build.link_command="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" "-L{build.variant.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} {build.extra_flags} {build.extra_ldflags} {compiler.zephyr.common_ldflags} {compiler.ldflags} {object_files} -Wl,--start-group "{build.path}/{archive_file}" {compiler.zephyr.extra_ldflags} {compiler.libraries.ldflags} -Wl,--end-group {build.link_args.{build.link_mode}} +kit_pse84_ai.build.postbuild.cmd="{tools.openocd.path}/{tools.openocd.cmd}" exit +kit_pse84_ai.build.board=KIT_PSE84_AI +kit_pse84_ai.upload.address=0x60200000 +kit_pse84_ai.upload.target=pse84 +kit_pse84_ai.upload.tool=openocd +kit_pse84_ai.upload.tool.default=openocd +kit_pse84_ai.tools.openocd.path={runtime.tools.openocd.path} +kit_pse84_ai.tools.openocd.cmd=bin/openocd +kit_pse84_ai.tools.openocd.cmd.windows=bin/openocd.exe +kit_pse84_ai.programmer.default=cmsis-dap +kit_pse84_ai.tools.openocd.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; flash write_image erase {{build.path}/{build.project_name}.{upload.extension}} {upload.address} bin; reset run; shutdown" +kit_pse84_ai.tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; flash write_image erase {{build.path}/{build.project_name}.{upload.extension}} {upload.address} bin; reset run; shutdown" +kit_pse84_ai.tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; program {{runtime.platform.path}/firmwares/zephyr-{build.variant}.hex}; reset run; shutdown" +kit_pse84_ai.tools.openocd.upload.pattern.windows=cmd /C cd /D "{build.path}" && "{path}/{cmd}" {upload.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "set sketch_file [list {build.project_name}.{upload.extension}]; telnet_port disabled; init; reset init; halt; adapter speed 10000; flash write_image erase $sketch_file {upload.address} bin; reset run; shutdown" +kit_pse84_ai.tools.openocd.program.pattern.windows=cmd /C cd /D "{build.path}" && "{path}/{cmd}" {program.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "set sketch_file [list {build.project_name}.{upload.extension}]; telnet_port disabled; init; reset init; halt; adapter speed 10000; flash write_image erase $sketch_file {upload.address} bin; reset run; shutdown" +kit_pse84_ai.upload.protocol= +kit_pse84_ai.upload.transport= +kit_pse84_ai.upload.interface=0 +kit_pse84_ai.upload.use_1200bps_touch=false +kit_pse84_ai.upload.wait_for_upload_port=false +kit_pse84_ai.upload.native_usb=false +kit_pse84_ai.upload.maximum_size=1047552 +kit_pse84_ai.upload.maximum_data_size=135168 +kit_pse84_ai.bootloader.tool=openocd +kit_pse84_ai.bootloader.tool.default=openocd +kit_pse84_ai.tools.openocd.bootloader.pattern.windows=cmd /C cd /D "{runtime.platform.path}/firmwares" && "{path}/{cmd}" {bootloader.verbose} -s "{path}/scripts/" -s "{path}/share/openocd/scripts/" -s "{runtime.platform.path}/variants/{build.variant}/" -f "{runtime.platform.path}/variants/{build.variant}/openocd.cfg" -c "set bootloader_file [list zephyr-{build.variant}.hex]; telnet_port disabled; init; reset init; halt; adapter speed 10000; program $bootloader_file; reset run; shutdown" +kit_pse84_ai.bootloader.target=pse84 ############################################################################################################## diff --git a/doc/KIT_PSE84_AI_Pinout.svg b/doc/KIT_PSE84_AI_Pinout.svg new file mode 100644 index 000000000..f3b7726ba --- /dev/null +++ b/doc/KIT_PSE84_AI_Pinout.svg @@ -0,0 +1,160541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RADAR + + + R159 + + + + + C71 + + + + + + + C93 + + + + + + + + + + + + + 6 + + 1 + + 9 + + 10 + + 1 + + 19 + + 20 + + 2 + + 1 + + 15 + + 1 + + 1 + + E + + 5 + + A + + 1 + + 2 + + 3 + + 4 + + 4 + + 1 + + A + + M + + 9 + + 13 + + 39 + + 52 + + A + + 1 + + 15 + + A + + R + + 15 + + 1 + + R + + A + + C + + 1 + + 3 + + 2 + + 1 + + AI KIT + + PSOC EDGE E84 + + 1 + + + + -DSI + + + + TM + + PSOC EDGE E84 + + + + MIPI + + + + INPUT + + BATTERY + + + + ( + + + + ( + + RST + + + + ( + + + + USER + + ( + + + + R213 + + + + + + R85 + + + + C81 + + R31 + + + + FB3 + + + + + + C84 + + + + C1 + + C58 + + R73 + + + + C57 + + + + C67 + + + + R210 + + + + C4 + + R8 + + R9 + + R88 + + R87 + + FB10 + + R65 + + R58 + + R54 + + R63 + + R62 + + R52 + + R50 + + R48 + + R46 + + C66 + + DIG + + + + DIG + + + + TM + + ALG + + ALG + + PSE84-USB + + KP3-USB + + J5 + + J4 + + Q9 + + Q7 + + J14 + + J10 + + U3 + + Y4 + + + + R77 + + + + + + R76 + + + + J12 + + SW1 + + SW2 + + Y2 + + C199 + + C198 + + C90 + + C91 + + U22 + + U24 + + Q3 + + U31 + + U27 + + U6 + + U21 + + U5 + + + + LED3 + + + + D14 + + LED5 + + LED2 + + D11 + + LED4 + + LED1 + + L4 + + + + U15 + + + + Y1 + + ANT1 + + U25 + + U1 + + U20 + + U18 + + D15 + + D4 + + R219 + + R211 + + R198 + + R105 + + + + R104 + + + + + + R103 + + + + + + R108 + + + + R32 + + R112 + + R114 + + R56 + + R60 + + R101 + + R1 + + + + R2 + + + + R34 + + + + R5 + + + + R6 + + R33 + + R36 + + R35 + + R37 + + R72 + + + + R86 + + + + R224 + + + + R182 + + + + R197 + + R196 + + R30 + + R124 + + R102 + + R18 + + L7 + + L6 + + + + FB2 + + + + FB1 + + L2 + + L3 + + FB7 + + FB6 + + FB5 + + C96 + + C179 + + C178 + + C177 + + C158 + + C99 + + C97 + + C180 + + C64 + + + + C126 + + + + + + C118 + + + + + + C104 + + + + C59 + + C151 + + C69 + + + + C12 + + + + C3 + + C5 + + + + C6 + + + + + + C72 + + + + C74 + + C76 + + + + C78 + + + + C87 + + C88 + + C82 + + + + C86 + + + + C56 + + C60 + + C63 + + C54 + + + + C55 + + + + C68 + + + + C200 + + + + C107 + + C95 + + C101 + + + + C103 + + + + C185 + + C186 + + + + C73 + + + + C75 + + C77 + + C85 + + + + C89 + + + + C92 + + C83 + + J3 + + J1 + + J2 + + CYP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RADAR + + + R159 + + + + + C71 + + + + + + + C93 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PSE846GPS2D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GND19P9_018P9_117P9_216P9_31V80Arduino pin numbers.Inter-IC interface.I2CPWM available.SAR ADC channel n available.nP17_1Pin identifier.P17_014SCL12P17_22P16_14P16_36P16_58P16_710P11_13V30P17_5P16_03P16_25P16_47P16_69P17_411P17_313GNDP17_115SDAP17_7 diff --git a/extra/apply_zephyr_patches.sh b/extra/apply_zephyr_patches.sh new file mode 100644 index 000000000..12d1c5b43 --- /dev/null +++ b/extra/apply_zephyr_patches.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PATCH_DIR="$SCRIPT_DIR/patches/zephyr" + +if [ ! -d "$PATCH_DIR" ]; then + # No patch set is configured. + exit 0 +fi + +if ! command -v west >/dev/null 2>&1; then + echo "[ERROR] west is not available; cannot resolve Zephyr workspace" + exit 1 +fi + +ZEPHYR_BASE="$(west list -f '{abspath}' zephyr 2>/dev/null || true)" +if [ -z "$ZEPHYR_BASE" ]; then + echo "[ERROR] Unable to locate Zephyr module with 'west list zephyr'" + exit 1 +fi + +if [ ! -d "$ZEPHYR_BASE/.git" ]; then + echo "[ERROR] Zephyr repository not found at '$ZEPHYR_BASE'" + exit 1 +fi + +applied_any=false +for patch in "$PATCH_DIR"/*.patch; do + [ -e "$patch" ] || continue + patch_name="$(basename "$patch")" + + if git -C "$ZEPHYR_BASE" apply --check "$patch" >/dev/null 2>&1; then + echo "[INFO] Applying Zephyr patch: $patch_name" + git -C "$ZEPHYR_BASE" apply "$patch" + applied_any=true + elif git -C "$ZEPHYR_BASE" apply --reverse --check "$patch" >/dev/null 2>&1; then + echo "[INFO] Zephyr patch already applied: $patch_name" + else + echo "[ERROR] Cannot apply Zephyr patch cleanly: $patch_name" + echo "[ERROR] Patch file: $patch" + exit 1 + fi +done + +if [ "$applied_any" = true ]; then + echo "[INFO] Zephyr patch set applied" +fi diff --git a/extra/artifacts/_common.json b/extra/artifacts/_common.json index 9d9723469..f8fc37d8b 100644 --- a/extra/artifacts/_common.json +++ b/extra/artifacts/_common.json @@ -16,7 +16,7 @@ { "packager": "zephyr", "name": "arm-zephyr-eabi", - "version": "0.16.8" + "version": "1.0.1" }, { "packager": "arduino", diff --git a/extra/bootstrap.sh b/extra/bootstrap.sh index ef3d48929..c60e6dc6d 100755 --- a/extra/bootstrap.sh +++ b/extra/bootstrap.sh @@ -35,12 +35,13 @@ log_msg "group" "Initializing Zephyr workspace and modules: $HAL_FILTER" west init -l . west config manifest.project-filter -- "$HAL_FILTER" west update "$@" +bash ./extra/apply_zephyr_patches.sh west zephyr-export pip install -r ../zephyr/scripts/requirements-base.txt log_msg "endgroup" -log_msg "group" "Installing Zephyr SDK 0.16.8" -west sdk install --version 0.16.8 -t arm-zephyr-eabi +log_msg "group" "Installing Zephyr SDK 1.0.1" +west sdk install --version 1.0.1 -t arm-zephyr-eabi log_msg "endgroup" log_msg "group" "Fetching blobs for: $NEEDED_HALS" diff --git a/extra/build.sh b/extra/build.sh index 72396c924..e88e1b749 100755 --- a/extra/build.sh +++ b/extra/build.sh @@ -9,6 +9,10 @@ source venv/bin/activate ZEPHYR_BASE=$(west topdir)/zephyr +# Ensure Zephyr patch set is applied even for incremental builds where +# bootstrap.sh was not re-run. +bash ./extra/apply_zephyr_patches.sh + if [ x$ZEPHYR_SDK_INSTALL_DIR == x"" ]; then SDK_PATH=$(west sdk list | grep path | tail -n 1 | cut -d ':' -f 2 | tr -d ' ') if [ x$SDK_PATH == x ]; then @@ -102,9 +106,12 @@ perl -i -pe "s/${c_comment}//gs unless /${line_preproc_ok}/ || (/${line_comment_ for ext in elf bin hex uf2; do rm -f firmwares/zephyr-$variant.$ext - if [ -f ${BUILD_DIR}/zephyr/zephyr.$ext ]; then - cp ${BUILD_DIR}/zephyr/zephyr.$ext firmwares/zephyr-$variant.$ext - fi + if [ "$ext" = "hex" ] && [ -f ${BUILD_DIR}/zephyr/zephyr.signed.hex ]; then + # Prefer signed HEX when available (for PSE84) for bootloader programming. + cp ${BUILD_DIR}/zephyr/zephyr.signed.hex firmwares/zephyr-$variant.hex + elif [ -f ${BUILD_DIR}/zephyr/zephyr.$ext ]; then + cp ${BUILD_DIR}/zephyr/zephyr.$ext firmwares/zephyr-$variant.$ext + fi done cp ${BUILD_DIR}/zephyr/zephyr.dts firmwares/zephyr-$variant.dts cp ${BUILD_DIR}/zephyr/.config firmwares/zephyr-$variant.config diff --git a/extra/patches/zephyr/0001-i2c-infineon-pdl-add-peri-clock-divider-for-psoc-edge.patch b/extra/patches/zephyr/0001-i2c-infineon-pdl-add-peri-clock-divider-for-psoc-edge.patch new file mode 100644 index 000000000..74d396eb1 --- /dev/null +++ b/extra/patches/zephyr/0001-i2c-infineon-pdl-add-peri-clock-divider-for-psoc-edge.patch @@ -0,0 +1,168 @@ +From 204b535428cff5c3609e76fcd581e96b17df9724 Mon Sep 17 00:00:00 2001 +From: Arduino PSoC Edge BSP contributors +Date: Mon, 13 Apr 2026 00:00:00 +0000 +Subject: [PATCH] drivers: i2c: infineon_pdl: add peri clock divider setup for + PSoC Edge + +The i2c_infineon_pdl driver has two existing paths for programming the +SCB peripheral clock divider before enabling I2C: + + 1. USE_I2C_SET_PERI_DIVIDER - legacy HAL path (never defined on Edge) + 2. CONFIG_SOC_FAMILY_INFINEON_PSOC4 - PSoC 4 only + +Neither path is active on CONFIG_SOC_FAMILY_INFINEON_EDGE builds, so +Cy_SCB_I2C_SetDataRate() is never called and the SCB divider register +keeps its power-on-reset value (divide-by-1). This leaves the SCB +input clock at the raw HF10 frequency (>=100 MHz), making I2C waveforms +many orders of magnitude too fast for any device to respond. + +Add a CONFIG_SOC_FAMILY_INFINEON_EDGE branch that: + - maps the peri group to the correct HF clock source (mirrors the + existing helper in uart_infineon_pdl.c / spi_infineon_pdl.c) + - computes an integer divider to target the required SCB input clock + frequency for the requested I2C speed + - programs the divider via ifx_cat1_utils_peri_pclk_set_divider() + - calls Cy_SCB_I2C_SetDataRate() with the actual resulting frequency + +Tested on KIT-PSE84-AI (PSE846GPS2DBZC4A) with DPS310 barometric +pressure sensor at 100 kHz standard mode. + +Signed-off-by: Arduino PSoC Edge BSP contributors + +diff --git a/drivers/i2c/i2c_infineon_pdl.c b/drivers/i2c/i2c_infineon_pdl.c +--- a/drivers/i2c/i2c_infineon_pdl.c ++++ b/drivers/i2c/i2c_infineon_pdl.c +@@ -233,6 +233,120 @@ void ifx_cat1_i2c_register_callback(const struct device *dev, + data->irq_cause = 0; + } + ++#if defined(CONFIG_SOC_FAMILY_INFINEON_EDGE) ++/* Packs a (peri-instance, peri-group) pair into a single uint8_t key, ++ * matching the macro used in uart_infineon_pdl.c and spi_infineon_pdl.c. ++ */ ++#define IFX_CAT1_INSTANCE_GROUP(instance, group) (((instance) << 4) | (group)) ++ ++/* Map peri group to the HF clock index that drives it on PSE84. ++ * Mirrors ifx_cat1_get_hfclk_for_peri_group() in uart_infineon_pdl.c. ++ */ ++static uint8_t _i2c_get_hfclk_for_peri_group(uint8_t peri_group) ++{ ++#if defined(CONFIG_SOC_SERIES_PSE84) ++ switch (peri_group) { ++ case IFX_CAT1_INSTANCE_GROUP(0, 0): ++ case IFX_CAT1_INSTANCE_GROUP(1, 4): ++ return 0; ++ case IFX_CAT1_INSTANCE_GROUP(0, 7): ++ case IFX_CAT1_INSTANCE_GROUP(1, 0): ++ return 1; ++ case IFX_CAT1_INSTANCE_GROUP(0, 3): ++ case IFX_CAT1_INSTANCE_GROUP(1, 2): ++ return 5; ++ case IFX_CAT1_INSTANCE_GROUP(0, 4): ++ case IFX_CAT1_INSTANCE_GROUP(1, 3): ++ return 6; ++ case IFX_CAT1_INSTANCE_GROUP(1, 1): ++ return 7; ++ case IFX_CAT1_INSTANCE_GROUP(0, 2): ++ return 9; ++ case IFX_CAT1_INSTANCE_GROUP(0, 1): ++ case IFX_CAT1_INSTANCE_GROUP(0, 5): ++ return 10; ++ case IFX_CAT1_INSTANCE_GROUP(0, 8): ++ return 11; ++ case IFX_CAT1_INSTANCE_GROUP(0, 6): ++ case IFX_CAT1_INSTANCE_GROUP(0, 9): ++ return 13; ++ default: ++ break; ++ } ++#endif ++ return 0; ++} ++ ++/* ++ * Set the peri clock divider for I2C on PSOC Edge so that the SCB input clock ++ * falls in the range required by Cy_SCB_I2C_SetDataRate(). ++ * ++ * Target peri frequencies (from the PDL API Reference Guide for PSOC Edge): ++ * Controller 100 kHz: [1.55, 3.2] MHz -> 2 MHz ++ * Controller 400 kHz: [7.82, 10] MHz -> 8.5 MHz ++ * Controller 1 MHz: [14.32, 25.8] MHz -> 20 MHz ++ * Target 100 kHz: [1.55, 12.8] MHz -> 6 MHz ++ * Target 400 kHz: [7.82, 15.38] MHz -> 12 MHz ++ * Target 1 MHz: [15.84, 89.0] MHz -> 50 MHz ++ */ ++static int _i2c_set_peri_divider_edge(const struct device *dev, uint32_t freq, bool is_target_mode) ++{ ++#define _EDGE_SCB_I2C_PERI_CTRL_STD 2000000UL /* controller, 100 kHz */ ++#define _EDGE_SCB_I2C_PERI_CTRL_FST 8500000UL /* controller, 400 kHz */ ++#define _EDGE_SCB_I2C_PERI_CTRL_FSTP 20000000UL /* controller, 1 MHz */ ++#define _EDGE_SCB_I2C_PERI_TGT_STD 6000000UL /* target, 100 kHz */ ++#define _EDGE_SCB_I2C_PERI_TGT_FST 12000000UL /* target, 400 kHz */ ++#define _EDGE_SCB_I2C_PERI_TGT_FSTP 50000000UL /* target, 1 MHz */ ++ ++ struct ifx_cat1_i2c_data *data = dev->data; ++ const struct ifx_cat1_i2c_config *const config = dev->config; ++ CySCB_Type *base = config->base; ++ uint32_t peri_freq = 0; ++ uint32_t source_freq; ++ uint32_t div_value; ++ cy_rslt_t status; ++ ++ if (freq <= CY_SCB_I2C_STD_DATA_RATE) { ++ peri_freq = is_target_mode ? _EDGE_SCB_I2C_PERI_TGT_STD ++ : _EDGE_SCB_I2C_PERI_CTRL_STD; ++ } else if (freq <= CY_SCB_I2C_FST_DATA_RATE) { ++ peri_freq = is_target_mode ? _EDGE_SCB_I2C_PERI_TGT_FST ++ : _EDGE_SCB_I2C_PERI_CTRL_FST; ++ } else if (freq <= CY_SCB_I2C_FSTP_DATA_RATE) { ++ peri_freq = is_target_mode ? _EDGE_SCB_I2C_PERI_TGT_FSTP ++ : _EDGE_SCB_I2C_PERI_CTRL_FSTP; ++ } ++ ++ if (peri_freq == 0) { ++ return -EINVAL; ++ } ++ ++ source_freq = Cy_SysClk_ClkHfGetFrequency( ++ _i2c_get_hfclk_for_peri_group(data->clock_peri_group)); ++ if (source_freq == 0) { ++ return -EIO; ++ } ++ ++ div_value = source_freq / peri_freq; ++ if (div_value == 0) { ++ div_value = 1; ++ } ++ ++ status = ifx_cat1_utils_peri_pclk_set_divider(config->clk_dst, &data->clock, div_value - 1); ++ if (status != CY_RSLT_SUCCESS) { ++ return -EIO; ++ } ++ ++ ifx_cat1_utils_peri_pclk_enable_divider(config->clk_dst, &data->clock); ++ ++ uint32_t actual_peri_freq = ifx_cat1_utils_peri_pclk_get_frequency( ++ config->clk_dst, &data->clock); ++ ++ Cy_SCB_I2C_SetDataRate(base, freq, actual_peri_freq); ++ return 0; ++} ++#endif /* CONFIG_SOC_FAMILY_INFINEON_EDGE */ ++ + #ifdef USE_I2C_SET_PERI_DIVIDER + uint32_t _i2c_set_peri_divider(const struct device *dev, uint32_t freq, bool is_slave) + { +@@ -472,6 +586,12 @@ static int ifx_cat1_i2c_configure(const struct device *dev, uint32_t dev_config) + #ifdef USE_I2C_SET_PERI_DIVIDER + _i2c_set_peri_divider(dev, CAT1_I2C_SPEED_STANDARD_HZ, + (_i2c_default_config.i2cMode == CY_SCB_I2C_SLAVE)); ++#elif defined(CONFIG_SOC_FAMILY_INFINEON_EDGE) ++ if (_i2c_set_peri_divider_edge(dev, data->frequencyhal_hz, is_target_mode) != 0) { ++ LOG_ERR("Failed to configure I2C peripheral clock divider"); ++ k_sem_give(&data->operation_sem); ++ return -EIO; ++ } + #elif defined(CONFIG_SOC_FAMILY_INFINEON_PSOC4) + if (_i2c_set_peri_divider_psoc4(dev, data->frequencyhal_hz, is_target_mode) != 0) { + LOG_ERR("Failed to configure I2C peripheral clock divider"); diff --git a/extra/patches/zephyr/0002-soc-infineon-pse84-install-imgtool-python-deps.patch b/extra/patches/zephyr/0002-soc-infineon-pse84-install-imgtool-python-deps.patch new file mode 100644 index 000000000..8d02f3368 --- /dev/null +++ b/extra/patches/zephyr/0002-soc-infineon-pse84-install-imgtool-python-deps.patch @@ -0,0 +1,49 @@ +From 8e84a1d6677a4b6f9e4b49e8c55dc6f5ea1a9f41 Mon Sep 17 00:00:00 2001 +From: Arduino PSoC Edge BSP contributors +Date: Mon, 8 Jun 2026 00:00:00 +0000 +Subject: [PATCH] soc: infineon: pse84: install imgtool Python dependencies + +The PSE84 SoC metadata step invokes imgtool as part of the Zephyr +post-build pipeline to produce a metadata-bearing secure HEX image. + +In ArduinoCore-zephyr CI and local west workspaces, only Zephyr +requirements-base.txt is installed by default, which does not include +all of imgtool's Python dependencies. This causes the PSE84 build to +fail at post-build time with missing module errors. + +Install the required imgtool dependencies at CMake configure time in the +PSE84 metadata module itself so the requirement is scoped to PSE84 +builds only and does not affect other boards. + +This patch is intended as a temporary downstream workaround and should be +removed once the upstream Zephyr/Infineon flow ensures imgtool +requirements are installed in the standard workspace bootstrap path. + +Signed-off-by: Arduino PSoC Edge BSP contributors + +diff --git a/soc/infineon/edge/pse84/pse84_metadata.cmake b/soc/infineon/edge/pse84/pse84_metadata.cmake +--- a/soc/infineon/edge/pse84/pse84_metadata.cmake ++++ b/soc/infineon/edge/pse84/pse84_metadata.cmake +@@ -3,6 +3,22 @@ + # + # SPDX-License-Identifier: Apache-2.0 + ++# Install imgtool Python dependencies during CMake configuration. ++# imgtool (from mcuboot) is invoked as a post-build step by this file, but its ++# required packages (cryptography, cbor2, click, intelhex, Pillow) are not part ++# of Zephyr's requirements-base.txt and therefore not installed by a standard ++# west bootstrap. ++# TODO: Remove once mcuboot's Python requirements are installed as part of the ++# standard Zephyr workspace setup. ++execute_process( ++ COMMAND ${PYTHON_EXECUTABLE} -m pip install --quiet ++ cryptography cbor2 click intelhex Pillow ++ RESULT_VARIABLE _imgtool_pip_result ++) ++if(NOT _imgtool_pip_result EQUAL 0) ++ message(WARNING "pse84_metadata: failed to install imgtool Python dependencies") ++endif() ++ + # Adds mcuboot metadata to the PSE84 CM33 secure image using imgtool + # with parameters derived from the DT memory map (header address, + # header size, and slot size). Uses default version 0.0.0+0 as imgtool diff --git a/loader/main.c b/loader/main.c index a368b3eed..4bc9f04b8 100644 --- a/loader/main.c +++ b/loader/main.c @@ -117,6 +117,7 @@ struct backup_store { volatile __stm32_backup_sram_section struct backup_store backup; static int loader(const struct shell *sh) { +#if defined(CONFIG_FLASH_MAP) const struct flash_area *fa; int rc; @@ -126,16 +127,21 @@ static int loader(const struct shell *sh) { printk("Failed to open flash area, rc %d\n", rc); return rc; } +#endif uintptr_t base_addr = DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(user_sketch))) + DT_REG_ADDR(DT_NODELABEL(user_sketch)); char header[HEADER_LEN]; +#if defined(CONFIG_FLASH_MAP) rc = flash_area_read(fa, 0, header, sizeof(header)); if (rc) { printk("Failed to read header, rc %d\n", rc); return rc; } +#else + memcpy(header, (const void *)base_addr, sizeof(header)); +#endif bool sketch_valid = true; struct sketch_header_v1 *sketch_hdr = (struct sketch_header_v1 *)(header + 7); diff --git a/package/package_infineon_pse84_index.template.json b/package/package_infineon_pse84_index.template.json new file mode 100644 index 000000000..edc1c8820 --- /dev/null +++ b/package/package_infineon_pse84_index.template.json @@ -0,0 +1,125 @@ +{ + "packages": [ + { + "name": "infineon", + "maintainer": "Infineon Technologies AG", + "websiteURL": "https://www.infineon.com/", + "email": "maker@infineon.com", + "platforms": [ + { + "name": "Infineon PSOC Edge Boards", + "architecture": "zephyr_pse84", + "version": "", + "category": "Contributed", + "url": "", + "archiveFileName": "", + "checksum": "", + "size": "", + "help": { + "online": "" + }, + "boards": [ + { + "name": "Infineon KIT-PSE84-AI (PSOC Edge E84)" + } + ], + "toolsDependencies": [ + { + "packager": "infineon", + "name": "openocd", + "version": "5.16.1.4486" + }, + { + "packager": "arduino", + "name": "gen-rodata-ld", + "version": "0.1.1" + }, + { + "packager": "arduino", + "name": "zephyr-sketch-tool", + "version": "0.3.0" + }, + { + "packager": "zephyr", + "name": "arm-zephyr-eabi", + "version": "1.0.1" + }, + { + "packager": "arduino", + "name": "zephyr-check-size", + "version": "0.1.0" + } + ] + } + ], + "tools": [ + { + "name": "openocd", + "version": "5.16.1.4486", + "systems": [ + { + "host": "i686-mingw32", + "archiveFileName": "openocd-5.16.1.4486-windows.zip", + "url": "https://github.com/Infineon/openocd/releases/download/release-v5.16.1/openocd-5.16.1.4486-windows.zip", + "checksum": "SHA-256:5bfde009a525c6a2490f50456efc18ba8420892d0e7b5a2a47e7727603deec87", + "size": "5690850" + }, + { + "host": "x86_64-pc-linux-gnu", + "archiveFileName": "openocd-5.16.1.4486-linux.tar.gz", + "url": "https://github.com/Infineon/openocd/releases/download/release-v5.16.1/openocd-5.16.1.4486-linux.tar.gz", + "checksum": "SHA-256:d3c6d0142d29c898f11c124140d44e0ca64fe58794aea15769eb6a981293c637", + "size": "5339070" + }, + { + "host": "arm64-apple-darwin", + "archiveFileName": "openocd-5.16.1.4486-macos-arm64.zip", + "url": "https://github.com/Infineon/openocd/releases/download/release-v5.16.1/openocd-5.16.1.4486-macos-arm64.zip", + "checksum": "SHA-256:7b1b3dfb3fc13c2c189bdcc14b25c08fa06cc50c5e37b21fd093305fa0eedafd", + "size": "5576669" + } + ] + } + ] + }, + { + "name": "zephyr", + "maintainer": "The Zephyr Project", + "websiteURL": "https://zephyrproject.org/", + "email": "devel@zephyrproject.org", + "help": { + "online": "https://docs.zephyrproject.org/latest/" + }, + "platforms": [], + "tools": [ + { + "name": "arm-zephyr-eabi", + "version": "1.0.1", + "systems": [ + { + "host": "i686-mingw32", + "archiveFileName": "toolchain_gnu_windows-x86_64_arm-zephyr-eabi-1.0.1.tar.xz", + "url": "https://github.com/Infineon/ArduinoCore-zephyr/releases/download/windows_toolchain_1.0.1/toolchain_gnu_windows-x86_64_arm-zephyr-eabi-1.0.1.tar.xz", + "checksum": "SHA-256:bca104bc09a3c5173622ccd17b80ab26aff1d2370d85258b6b7aba429fab3f61", + "size": "96856296" + }, + { + "host": "x86_64-linux-gnu", + "archiveFileName": "toolchain_gnu_linux-x86_64_arm-zephyr-eabi-1.0.1.tar.xz", + "url": "https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.1/toolchain_gnu_linux-x86_64_arm-zephyr-eabi.tar.xz", + "checksum": "SHA-256:21b85981cb5a1818d9bc53d82af80f208946ec038b982ff1907287572ed3a634", + "size": "101752776" + }, + { + "host": "arm64-apple-darwin", + "archiveFileName": "toolchain_gnu_macos-aarch64_arm-zephyr-eabi.tar.xz", + "url": "https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.1/toolchain_gnu_macos-aarch64_arm-zephyr-eabi.tar.xz", + "checksum": "SHA-256:4008edb5d4840cd994aedd7f1309bfb63e7243729d57839ebf1cc83c1f17c886", + "size": "89958448" + } + ] + } + ] + } + ] +} diff --git a/platform.txt b/platform.txt index 9c541554c..4b5f648b0 100644 --- a/platform.txt +++ b/platform.txt @@ -286,12 +286,12 @@ tools.remoteocd.path={runtime.tools.remoteocd.path} tools.remoteocd.cmd=remoteocd tools.remoteocd.upload.params.verbose=--verbose tools.remoteocd.upload.params.quiet= -tools.remoteocd.upload.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{runtime.platform.path}/firmwares/{bootloader.file}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd.upload.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" tools.remoteocd.bootloader.params.verbose=--verbose tools.remoteocd.bootloader.params.quiet= tools.remoteocd.erase.pattern= -tools.remoteocd.bootloader.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/flash_bootloader.cfg" "{upload.verbose}" "{runtime.platform.path}/firmwares/{bootloader.file}" +tools.remoteocd.bootloader.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/flash_bootloader.cfg" "{upload.verbose}" "{runtime.platform.path}/firmwares/{bootloader.file}" tools.remoteocd_network.upload.protocol=network tools.remoteocd_network.upload.field.password=Password @@ -300,7 +300,7 @@ tools.remoteocd_network.path={runtime.tools.remoteocd.path} tools.remoteocd_network.cmd=remoteocd tools.remoteocd_network.upload.params.verbose=--verbose tools.remoteocd_network.upload.params.quiet= -tools.remoteocd_network.upload.pattern="{path}/{cmd}" upload -a "{upload.port.address}" --password "{upload.field.password}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{runtime.platform.path}/firmwares/{bootloader.file}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd_network.upload.pattern="{path}/{cmd}" upload -a "{upload.port.address}" --password "{upload.field.password}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" # # PYOCD WRAPPER diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.conf b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.conf new file mode 100644 index 000000000..3c87c6611 --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.conf @@ -0,0 +1,57 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 +# +# Kconfig overlay for KIT-PSE84-AI (PSOC Edge E84, CM33 secure) +# +# NOTE: The board defconfig already provides: +# CONFIG_GPIO=y +# CONFIG_SERIAL=y +# CONFIG_UART_CONSOLE=y +# CONFIG_FPU=y +# CONFIG_ARM_TRUSTZONE_M=y +# CONFIG_TRUSTED_EXECUTION_SECURE=y +# CONFIG_CORTEX_M_SYSTICK=y + +# --- Bootloader --- +# Force MCUBoot off for Infineon KIT-PSE84-AI (PSOC Edge E84) +CONFIG_BOOTLOADER_MCUBOOT=n + +# --- Stack / heap sizing for Arduino + LLEXT runtime --- +# CM33 SRAM (m33s_data) is only 132 KB — keep sizes minimal +CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_HEAP_MEM_POOL_SIZE=16384 +CONFIG_LLEXT_HEAP_SIZE=16 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1024 + +# --- XIP flash: read sketch directly from memory, no RAM copy needed --- +CONFIG_LLEXT_STORAGE_WRITABLE=n + +# --- Peripheral drivers --- +CONFIG_I2C=y +CONFIG_SPI=y + +# Required for arch_irq_disconnect_dynamic, which is exported by +# loader/llext_exports.c when CONFIG_DYNAMIC_INTERRUPTS is enabled. +# Zephyr provides that symbol from arch/common/shared_irq.c only when +# CONFIG_SHARED_INTERRUPTS is enabled. +CONFIG_SHARED_INTERRUPTS=y + +# Disable boot banner to save flash and reduce startup time; the loader doesn't need it, and the sketch can print its own banner if desired +CONFIG_BOOT_BANNER=n + +# --- Override board defconfig for Arduino LLEXT loader --- +# Board defconfig enables MPU + HW_STACK_PROTECTION which the loader doesn't need +# and ASSERT which adds code size +CONFIG_ARM_MPU=n +CONFIG_HW_STACK_PROTECTION=n + +# The PSE84 QSPI controller DTS entry uses "infineon,qspi-flash-mtb-hal" which has no +# Zephyr binding, so the flash driver never compiles. Explicitly disabling CONFIG_FLASH +# prevents the Zephyr build from trying to compile/link flash symbols. +# Without this, loader/main.c would call flash_area_open/flash_area_read which do not +# exist — the loader function must guard those calls with #if defined(CONFIG_FLASH_MAP). +CONFIG_FLASH=n +CONFIG_FLASH_MAP=n + +# --- Build output --- +# CONFIG_BUILD_OUTPUT_BIN=n # removed: conflicts with Zephyr default; use HEX instead diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.overlay b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.overlay new file mode 100644 index 000000000..048f0f159 --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/kit_pse84_ai_pse846gps2dbzc4a_m33.overlay @@ -0,0 +1,328 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + * + * Devicetree overlay for KIT-PSE84-AI (PSOC Edge E84, CM33 secure) + * + * Hardware mapping derived from: + * - Infineon TARGET_KIT_PSE84_AI BSP (design.modus) + * - Zephyr board DTS (kit_pse84_ai_common.dtsi) + * - Zephyr SoC DTS (pse84.bga-220.dtsi) + * + * Peripherals: + * UART : SCB2 - P6_7(TX) / P6_5(RX) (console, enabled in board DTS) + * I2C : SCB0 - P8_0(SCL) / P8_1(SDA) (1.8V I2C bus) + * SPI : SCB10 - P16_0(CLK) / P16_1(MOSI) / P16_2(MISO) / P16_6(CS) + * LEDs : P10_7(LED0) P10_5(LED1) P20_6(RED) P20_4(GREEN) P20_5(BLUE) + * Button: P7_0 (SW1, active-low, internal pull-up) + */ + +/* ------------------------------------------------------------------ */ +/* Arduino user sketch partition */ +/* Placed at the end of the CM33 secure XIP flash region. */ +/* m33s_xip starts at 0x70100400 with size 0x1FFC00 (~2MB). */ +/* Loader occupies the first portion; user_sketch gets the tail end. */ +/* */ +/* IMPORTANT: Keep one coherent address model for both: */ +/* - upstream loader flash_area_read() (partition reg as flash off) */ +/* - upstream loader runtime base math (flash0_base + reg) */ +/* PSE84 secure XIP uses the 0x70000000 alias for SMIF flash. */ +/* Target sketch address is 0x70200000, so use: */ +/* flash0_base = 0x70000000 */ +/* user_sketch_offset = 0x00200000 */ +/* ------------------------------------------------------------------ */ +&flash0 { + reg = <0x70000000 DT_SIZE_M(64)>; + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + user_sketch: partition@200000 { + reg = <0x200000 DT_SIZE_K(1023)>; + }; + }; +}; + +/* ------------------------------------------------------------------ */ +/* Enable GPIO ports needed for digital pins, LEDs, button, SPI, I2C */ +/* ------------------------------------------------------------------ */ +&gpio_prt7 { + status = "okay"; +}; + +&gpio_prt8 { + status = "okay"; +}; + +&gpio_prt9 { + status = "okay"; +}; + +&gpio_prt10 { + status = "okay"; +}; + +&gpio_prt11 { + status = "okay"; +}; + +&gpio_prt13 { + status = "okay"; +}; + +&gpio_prt15 { + status = "okay"; +}; + +&gpio_prt16 { + status = "okay"; +}; + +&gpio_prt17 { + status = "okay"; +}; + +&gpio_prt20 { + status = "okay"; +}; + +&gpio_prt21 { + status = "okay"; +}; + +/* ------------------------------------------------------------------ */ +/* I2C bus - SCB0 on P8_0(SCL) / P8_1(SDA) */ +/* ------------------------------------------------------------------ */ +i2c0: &scb0 { + compatible = "infineon,i2c"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = <100000>; + + clocks = <&peri0_group1_16bit_1>; + + pinctrl-0 = <&p8_0_scb0_i2c_scl &p8_1_scb0_i2c_sda>; + pinctrl-names = "default"; +}; + + + +i2c1: &scb5 { + compatible = "infineon,i2c"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = <100000>; + + clocks = <&peri0_group1_16bit_3>; + + pinctrl-0 = <&p17_0_scb5_i2c_scl &p17_1_scb5_i2c_sda>; + pinctrl-names = "default"; +}; + + +&peri0_group1_16bit_1 { + status = "okay"; + clock-div = <1>; +}; + +&peri0_group1_16bit_3 { + status = "okay"; + clock-div = <1>; +}; + +&p8_0_scb0_i2c_scl { + drive-open-drain; + input-enable; +}; + +&p8_1_scb0_i2c_sda { + drive-open-drain; + input-enable; +}; + +&p17_0_scb5_i2c_scl { + drive-open-drain; + input-enable; +}; + +&p17_1_scb5_i2c_sda { + drive-open-drain; + input-enable; +}; + +/* ------------------------------------------------------------------ */ +/* UART1 bus - SCB1 on P9_2(TX) / P9_3(RX) */ +/* Exposed as Arduino Serial1 via zephyr,user.serials */ +/* ------------------------------------------------------------------ */ +uart1: &scb1 { + compatible = "infineon,uart"; + status = "okay"; + current-speed = <115200>; + + clocks = <&peri0_group1_16bit_0>; + + pinctrl-0 = <&p9_2_scb1_uart_tx &p9_3_scb1_uart_rx>; + pinctrl-names = "default"; +}; + +&p9_2_scb1_uart_tx { + drive-push-pull; +}; + +&p9_3_scb1_uart_rx { + input-enable; +}; + +/* ------------------------------------------------------------------ */ +/* SPI bus - SCB3 on P21_6(CLK) / P21_5(MOSI) / P21_4(MISO) */ +/* CS on P21_7 (directly driven as GPIO) */ +/* ------------------------------------------------------------------ */ +spi0: &scb3 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "infineon,spi"; + status = "disabled"; + + clocks = <&peri0_group1_16bit_2>; + + pinctrl-0 = <&p21_5_scb3_spi_m_mosi &p21_4_scb3_spi_m_miso + &p21_6_scb3_spi_m_clk>; + pinctrl-names = "default"; + cs-gpios = <&gpio_prt21 7 GPIO_ACTIVE_LOW>; +}; + +/* ------------------------------------------------------------------ */ +/* SPI bus (external header) - SCB10 on P16_0/1/2 */ +/* CLK = D3 (P16_0) */ +/* MOSI = D2 (P16_1) */ +/* MISO = D5 (P16_2) */ +/* CS = D9 (P16_6, GPIO-driven) */ +/* ------------------------------------------------------------------ */ +spi1: &scb10 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "infineon,spi"; + status = "okay"; + clocks = <&peri0_group1_16bit_2>; + + pinctrl-0 = <&p16_1_scb10_spi_m_mosi &p16_2_scb10_spi_m_miso + &p16_0_scb10_spi_m_clk>; + pinctrl-names = "default"; + cs-gpios = <&gpio_prt16 6 GPIO_ACTIVE_LOW>; +}; + +&peri0_group1_16bit_2 { + status = "okay"; +}; + +&p21_5_scb3_spi_m_mosi { + drive-strength = "full"; + drive-push-pull; +}; + +&p21_4_scb3_spi_m_miso { + drive-strength = "full"; + input-enable; +}; + +&p21_6_scb3_spi_m_clk { + drive-strength = "full"; + drive-push-pull; +}; + +&p16_1_scb10_spi_m_mosi { + drive-strength = "full"; + drive-push-pull; +}; + +&p16_2_scb10_spi_m_miso { + drive-strength = "full"; + input-enable; +}; + +&p16_0_scb10_spi_m_clk { + drive-strength = "full"; + drive-push-pull; +}; + +/* ------------------------------------------------------------------ */ +/* Arduino 'zephyr,user' node */ +/* */ +/* Digital pin numbers are assigned by order in digital-pin-gpios */ +/* below (top entry is D0, then D1, etc.). */ +/* */ +/* SPI mapping (SCB10): D3=CLK(P16_0), D2=MOSI(P16_1), */ +/* D5=MISO(P16_2), D9=CS(P16_6) */ +/* Internal SCB3 SPI is disabled for now to free clock/divider usage. */ +/* The only exposed SPI bus is SCB10 (use Arduino SPI object). */ +/* */ +/* ------------------------------------------------------------------ */ +/ { + zephyr,user { + digital-pin-gpios = <&gpio_prt17 5 0>, /* D0 - P17_5 */ + <&gpio_prt17 7 0>, /* D1 - P17_7 */ + <&gpio_prt16 1 0>, /* D2 - P16_1 */ + <&gpio_prt16 0 0>, /* D3 - P16_0 */ + <&gpio_prt16 3 0>, /* D4 - P16_3 */ + <&gpio_prt16 2 0>, /* D5 - P16_2 */ + <&gpio_prt16 5 0>, /* D6 - P16_5 */ + <&gpio_prt16 4 0>, /* D7 - P16_4 */ + <&gpio_prt16 7 0>, /* D8 - P16_7 */ + <&gpio_prt16 6 0>, /* D9 - P16_6 */ + <&gpio_prt11 1 0>, /* D10 - P11_1 (input only) */ + <&gpio_prt17 4 0>, /* D11 - P17_4 */ + <&gpio_prt17 2 0>, /* D12 - P17_2 */ + <&gpio_prt17 3 0>, /* D13 - P17_3 */ + <&gpio_prt17 0 0>, /* D14 - P17_0 */ + <&gpio_prt17 1 0>, /* D15 - P17_1 */ + + <&gpio_prt9 3 0>, /* D16 - P9_3 / SERIAL_INT3 */ + <&gpio_prt9 2 0>, /* D17 - P9_2 / SERIAL_INT2 */ + <&gpio_prt9 1 0>, /* D18 - P9_1 / SERIAL_INT1 */ + <&gpio_prt9 0 0>, /* D19 - P9_0 / SERIAL_INT0 */ + + <&gpio_prt15 0 0>, /* D20 - P15_0 - A0 */ + <&gpio_prt15 1 0>, /* D21 - P15_1 - A1 */ + <&gpio_prt15 2 0>, /* D22 - P15_2 - A2 */ + <&gpio_prt15 3 0>, /* D23 - P15_3 - A3 */ + <&gpio_prt15 4 0>, /* D24 - P15_4 - A4 */ + <&gpio_prt15 5 0>, /* D25 - P15_5 - A5 */ + <&gpio_prt15 6 0>, /* D26 - P15_6 - A6 */ + <&gpio_prt15 7 0>, /* D27 - P15_7 - A7 */ + + <&gpio_prt13 0 0>, /* D28 - P13_0 - A8 */ + <&gpio_prt13 1 0>, /* D29 - P13_1 - A9 */ + <&gpio_prt13 2 0>, /* D30 - P13_2 - A10 */ + <&gpio_prt13 3 0>, /* D31 - P13_3 - A11 */ + <&gpio_prt13 4 0>, /* D32 - P13_4 - A12 */ + <&gpio_prt13 5 0>, /* D33 - P13_5 - A13 */ + <&gpio_prt13 6 0>, /* D34 - P13_6 - A14 */ + <&gpio_prt13 7 0>, /* D35 - P13_7 - A15 */ + + <&gpio_prt10 7 0>, /* D36 - LED_0 */ + <&gpio_prt10 5 0>, /* D37 - LED_1 */ + <&gpio_prt20 6 0>, /* D38 - LED_RGB_RED */ + <&gpio_prt20 4 0>, /* D39 - LED_RGB_GRN */ + <&gpio_prt20 5 0>, /* D40 - LED_RGB_BLU */ + <&gpio_prt7 0 0>, /* D41 - SW1 / BTN */ + <&gpio_prt8 0 0>, /* D42 - I2C_SCL */ + <&gpio_prt8 1 0>, /* D43 - I2C_SDA */ + <&gpio_prt21 6 0>, /* D44 - SCB3_CLK */ + <&gpio_prt21 5 0>, /* D45 - SCB3_MOSI */ + <&gpio_prt21 4 0>, /* D46 - SCB3_MISO */ + <&gpio_prt21 7 0>; /* D47 - SCB3_CS */ + + builtin-led-gpios = <&gpio_prt10 7 GPIO_ACTIVE_HIGH>, /* LED_0 (default) */ + <&gpio_prt10 7 GPIO_ACTIVE_HIGH>, /* LED_0 */ + <&gpio_prt10 5 GPIO_ACTIVE_HIGH>, /* LED_1 */ + <&gpio_prt20 6 GPIO_ACTIVE_HIGH>; /* LED_RGB_RED */ + + serials = <&uart2 &uart1>; + i2cs = <&i2c0 &i2c1>; + spis = <&spi1>; + }; +}; diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/machine_flags.txt b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/machine_flags.txt new file mode 100644 index 000000000..28fc43eee --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/machine_flags.txt @@ -0,0 +1,4 @@ +-mcpu=cortex-m33 +-mthumb +-mfloat-abi=hard +-mfpu=fpv5-sp-d16 diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/openocd.cfg b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/openocd.cfg new file mode 100644 index 000000000..ada2b2e31 --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/openocd.cfg @@ -0,0 +1,42 @@ +# Copyright (c) 2025 Infineon Technologies AG, +# or an affiliate of Infineon Technologies AG. +# +# SPDX-License-Identifier: Apache-2.0 + +set ENABLE_CM55 1 +set ENABLE_CM33 1 + +source [find interface/kitprog3.cfg] +transport select swd + +if { [info exists _ZEPHYR_BOARD_SERIAL] } { + adapter serial $_ZEPHYR_BOARD_SERIAL +} + +if { [info exists WEST_ATTACH] } { + set ENABLE_ACQUIRE 0 +} + +source [find target/infineon/pse84xgxs2.cfg] +cat1d.cm55 configure -rtos auto -rtos-wipe-on-reset-halt 1 +cat1d.cm33 configure -rtos auto -rtos-wipe-on-reset-halt 1 +gdb_breakpoint_override hard + +if { [info exists WEST_ATTACH] } { + set _RESET 0 +} else { + set _RESET 1 +} + +if {$_RESET} { + cat1d.cm55 configure -event gdb-attach { + reset_halt cm55 + } + + cat1d.cm33 configure -event gdb-attach { + cat1d.cm33 cortex_m vector_catch reset + reset run + cat1d.cm33 arp_waitstate halted 8000 + cat1d.cm33 cortex_m vector_catch none + } +} diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/qspi_config.cfg b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/qspi_config.cfg new file mode 100644 index 000000000..4b5f461dc --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/qspi_config.cfg @@ -0,0 +1,8 @@ +# Copyright (c) 2025 Infineon Technologies AG, +# or an affiliate of Infineon Technologies AG. +# +# SPDX-License-Identifier: Apache-2.0 + +set SMIF_BANKS { + 1 {addr 0x60000000 size 0x1000000 psize 0x0000100 esize 0x0010000} +} diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/skip_these_examples.txt b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/skip_these_examples.txt new file mode 100644 index 000000000..dcd0d7ae7 --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/skip_these_examples.txt @@ -0,0 +1,10 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + +# Examples skipped for kit_pse84_ai: these libraries are not yet supported +# on this board. Remove entries as support is added. + +libraries/CAN/ +libraries/Ethernet/ +libraries/RTC/ +libraries/WiFi/ diff --git a/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/variant.h b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/variant.h new file mode 100644 index 000000000..7f701c590 --- /dev/null +++ b/variants/kit_pse84_ai_pse846gps2dbzc4a_m33/variant.h @@ -0,0 +1,197 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + * + * Arduino variant header for KIT-PSE84-AI (PSOC Edge E84, CM33 secure) + * + * Pin numbers correspond to digital-pin-gpios indices in the overlay: + * + * D0 = P17_5 D12 = P17_2 D24 = P15_4 - A4 + * D1 = P17_7 D13 = P17_3 D25 = P15_5 - A5 + * D2 = P16_1 D14 = P17_0 - I2C1_SCL D26 = P15_6 - A6 + * D3 = P16_0 D15 = P17_1 - I2C1_SDA D27 = P15_7 - A7 + * D4 = P16_3 D16 = P9_3 - SINT3 D28 = P13_0 - A8 + * D5 = P16_2 D17 = P9_2 - SINT2 D29 = P13_1 - A9 + * D6 = P16_5 D18 = P9_1 - SINT1 D30 = P13_2 - A10 + * D7 = P16_4 D19 = P9_0 - SINT0 D31 = P13_3 - A11 + * D8 = P16_7 D20 = P15_0 - A0 D32 = P13_4 - A12 + * D9 = P16_6 D21 = P15_1 - A1 D33 = P13_5 - A13 + * D10 = P11_1 D22 = P15_2 - A2 D34 = P13_6 - A14 + * D11 = P17_4 D23 = P15_3 - A3 D35 = P13_7 - A15 + * + * D36 = P10_7 - LED_0 D40 = P20_5 - LED_BLU D44 = P21_6 - SCB3_CLK + * D37 = P10_5 - LED_1 D41 = P7_0 - SW1/BTN D45 = P21_5 - SCB3_MOSI + * D38 = P20_6 - LED_RED D42 = P8_0 - I2C_SCL D46 = P21_4 - SCB3_MISO + * D39 = P20_4 - LED_GRN D43 = P8_1 - I2C_SDA D47 = P21_7 - SCB3_CS + */ + +#pragma once + +/** Digital pin aliases (indices into digital-pin-gpios) */ +#define D0 0 +#define D1 1 +#define D2 2 +#define D3 3 +#define D4 4 +#define D5 5 +#define D6 6 +#define D7 7 +#define D8 8 +#define D9 9 +#define D10 10 +#define D11 11 +#define D12 12 +#define D13 13 +#define D14 14 +#define D15 15 +#define D16 16 +#define D17 17 +#define D18 18 +#define D19 19 +#define D20 20 +#define D21 21 +#define D22 22 +#define D23 23 +#define D24 24 +#define D25 25 +#define D26 26 +#define D27 27 +#define D28 28 +#define D29 29 +#define D30 30 +#define D31 31 +#define D32 32 +#define D33 33 +#define D34 34 +#define D35 35 +#define D36 36 +#define D37 37 +#define D38 38 +#define D39 39 +#define D40 40 +#define D41 41 +#define D42 42 +#define D43 43 +#define D44 44 +#define D45 45 +#define D46 46 +#define D47 47 + +/** SPI pin definitions (default SPI = SCB10 on P16) */ +#define MOSI D2 /**< P16_1 */ +#define MISO D5 /**< P16_2 */ +#define SCK D3 /**< P16_0 */ +#define SS D9 /**< P16_6 */ + +/** I2C pin definitions (Wire = SCB0 on P8, Wire1 = SCB5 on P17) */ +#define SDA 43 /**< P8_1 */ +#define SCL 42 /**< P8_0 */ +#define SDA1 15 /**< P17_1 */ +#define SCL1 14 /**< P17_0 */ + +#define PIN_WIRE_SDA SDA +#define PIN_WIRE_SCL SCL +#define PIN_WIRE1_SDA SDA1 +#define PIN_WIRE1_SCL SCL1 + +/** Built-in LED aliases */ +#undef LED_BUILTIN +#define LED_BUILTIN 36 /**< LED_0 on P10_7 (primary) */ +#define LED_BUILTIN_1 36 /**< LED_0 on P10_7 */ +#define LED_BUILTIN_2 37 /**< LED_1 on P10_5 */ +#define LED_BUILTIN_ACTIVE (HIGH) + +/** RGB LED aliases */ +#define LED_RED 38 /**< P20_6 */ +#define LED_GREEN 39 /**< P20_4 */ +#define LED_BLUE 40 /**< P20_5 */ + +/** Built-in button alias */ +#define BTN_BUILTIN 41 /**< SW1 on P7_0 (active-low) */ + +/** Analog pin definitions (indices into digital-pin-gpios) */ +#define A0 20 +#define A1 21 +#define A2 22 +#define A3 23 +#define A4 24 +#define A5 25 +#define A6 26 +#define A7 27 +#define A8 28 +#define A9 29 +#define A10 30 +#define A11 31 +#define A12 32 +#define A13 33 +#define A14 34 +#define A15 35 + +/** + * GPIO aliases using Infineon-style P_ names. + * Values are indices into the digital-pin-gpios array in the overlay. + */ +/* Expansion GPIO - P16/P17 */ +#define P17_5 0 +#define P17_7 1 +#define P16_1 2 +#define P16_0 3 +#define P16_3 4 +#define P16_2 5 +#define P16_5 6 +#define P16_4 7 +#define P16_7 8 +#define P16_6 9 +#define P11_1 10 +#define P17_4 11 +#define P17_2 12 +#define P17_3 13 +#define P17_0 14 +#define P17_1 15 + +/* UART1 / serial interrupt pins */ +#define P9_3 16 +#define P9_2 17 +#define P9_1 18 +#define P9_0 19 + +/* Analog input pins - P15 (A0-A7) */ +#define P15_0 20 +#define P15_1 21 +#define P15_2 22 +#define P15_3 23 +#define P15_4 24 +#define P15_5 25 +#define P15_6 26 +#define P15_7 27 + +/* Analog input pins - P13 (A8-A15) */ +#define P13_0 28 +#define P13_1 29 +#define P13_2 30 +#define P13_3 31 +#define P13_4 32 +#define P13_5 33 +#define P13_6 34 +#define P13_7 35 + +/* On-board peripherals */ +#define P10_7 36 +#define P10_5 37 +#define P20_6 38 +#define P20_4 39 +#define P20_5 40 +#define P7_0 41 +#define P8_0 42 +#define P8_1 43 +#define P21_6 44 +#define P21_5 45 +#define P21_4 46 +#define P21_7 47 + +/** Serial interrupt aliases */ +#define SERIAL_INT0 P9_0 +#define SERIAL_INT1 P9_1 +#define SERIAL_INT2 P9_2 +#define SERIAL_INT3 P9_3 diff --git a/west.yml b/west.yml index e8b1b3103..6076f99dc 100644 --- a/west.yml +++ b/west.yml @@ -20,8 +20,8 @@ manifest: projects: - name: zephyr - remote: arduino - revision: zephyr-arduino-v4.2.0 + remote: zephyrproject-rtos + revision: v4.4.0 import: name-allowlist: - cmsis