Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FPGAの開発コンペでZephyrを使ってみた

 FPGAの開発コンペでZephyrを使ってみた

ミソジ 2026/6/26
Zephyr Project meetup: Sapporo, Japan
#ZephyrRTOS

Avatar for misoji engineer

misoji engineer

June 24, 2026

More Decks by misoji engineer

Other Decks in Technology

Transcript

  1. 趣味のハードウェア 2025年 Board Designer Competition https://www.hackster.io/contests/board-designer Maker's nRF54L15 Debug Board

    BLE Audio Design Challenge https://www.hackster.io/contests/SonicSprint Adaptive Directional BLE Audio Speaker *BLE…Bluetooth Low Energy Edge AI Earth Guardians https://www.hackster.io/contests/earthguardians Edge AI on Zephyr: ULP Acoustic Monitoring for Wildlife 2026年 Best of 2025 Competition https://www.hackster.io/contests/best-of-2025-competition AI Safety Monitor with FPGA + Zephyr RTOS Incorporate RISC-V Chips into Your Next PCB Design https://jp.nextpcb.com/blog/build-with-riscv-freedom Invent the Future with Arduino UNO Q and App Lab https://www.hackster.io/contests/invent-the-future-with-arduino-uno-q-and-app-lab 2026年も開発コンペやプログラムに参加しています
  2. 趣味のハードウェア 2025年 Board Designer Competition https://www.hackster.io/contests/board-designer Maker's nRF54L15 Debug Board

    BLE Audio Design Challenge https://www.hackster.io/contests/SonicSprint Adaptive Directional BLE Audio Speaker *BLE…Bluetooth Low Energy Edge AI Earth Guardians https://www.hackster.io/contests/earthguardians Edge AI on Zephyr: ULP Acoustic Monitoring for Wildlife 2026年 Best of 2025 Competition https://www.hackster.io/contests/best-of-2025-competition AI Safety Monitor with FPGA + Zephyr RTOS Incorporate RISC-V Chips into Your Next PCB Design https://jp.nextpcb.com/blog/build-with-riscv-freedom Invent the Future with Arduino UNO Q and App Lab https://www.hackster.io/contests/invent-the-future-with-arduino-uno-q-and-app-lab 2026年も開発コンペやプログラムに参加しています ちょうど最近 (2026年2月~5月)
  3. Best of 2025 Competition ▪ざっくりコンペ概要 ・SBC (Single Board Computer)/MCU(マイコン)/FPGAの3部門あり。 ・良いプロジェクト提案したものは、$150の設計費用サポート。(優勝者は+$500)

    ・テーマは何でもOK。2025年までに発売した指定のボードならOK。 小さめなコンテストで、テーマもかなり自由なコンペ 2026年2月~5月 Best of 2025 Competition https://www.hackster.io/contests/best-of-2025-competition AI Safety Monitor with FPGA + Zephyr RTOS 優勝しました *FPGA部門は、特に完走者が  少なかったのが一番の理由
  4. 2月後半 3月前半 3月後半 4月前半 4月後半 5月前半 5月後半 6月前半 構想設計 開発設計

    デバッグ ドキュメント コンテストの期間 他イベントなど(遊びつつ)平行して、GWで仕上げた。 ・2026/2/13 プロジェクト承認 ・2026/5/17 プロジェクト納期 ・2026/6/12 コンぺ結果発表 環境構築・技術調査 (実機)デバッグ ドキュメント・デモビデオ 地元(名古屋)のカンファレンスやMeetupが重なった。締め切りヤバかった。 PetaLinux・FPGA合成 3/27 Zephyr Meetup 名古屋 開催 4/27 M5 Japan Tour 名古屋 発表・展示 5/23 オープンソースカンファレンス 名古屋 発表・展示
  5. 所持しているボードで参加 一世代前のFPGA評価ボード(KV260、KR260) ▪RPU(R5)コアが搭載している。  数年前に参加した、NEDO(経産省)やAMDのコンテストの関係で持っていた   KV260 (R5コア有) KR260 (R5コア有) 2023年 第6回AIエッジコンテスト

    https://signate.jp/competitions/732 RISC-Vを使用した自動車走行時の 画像・点群データによる3D物体検出 2024年 AMD Pervasive AI Developer Contest https://www.hackster.io/contests/amd2023 360° Object Detection Robot Car
  6. 非常に長い、実装フロー Zephyrに加えて、PetaLinux + FPGAのビルドも必要 0. PetaLinuxのビルド・環境構築(Cortex-A53側ベース) • PetaLinux 2025.2環境のインストールとKV260用BSPの展開 •

    デバイスツリー(system-user.dtsi)の編集によるRPU(Cortex-R5)用のメモリ領域・IPI通信の確保 • Zephyr用へのUART1の解放(Linux側での無効化設定) • WICイメージのビルドおよびmicroSDカードへの書き込みと実機ログイン 1. Vivadoでのハードウェア設計(PL側) • Zynq UltraScale+ MPSoCコアと、制御・デバッグ用AXI GPIOの配置 • Address Editorでの各IP(GPIOや後述のDPU)のベースアドレス確定 • ビットストリームの生成および.xsaファイルのエクスポート 2. VitisでのDPUモデルの準備 • Vitis でのDPU(Deep Learning Processor Unit)アーキテクチャのビルド設定 • ターゲットDPUサイズ(B3136サイズなど)やURAM利用フラグ等のパラメータ定義 • コンパイル後の統合DPUモデル(.xmodel)の出力 3. Kria用アクセラレーション・バリアントの準備 • Vitis xsctツールを使用したデバイスツリーオーバーレイ(pl.dtbo)の生成 • bootgenによるビットストリーム(.bit)からバイナリ(.bit.bin)への変換 • アクセラレータ種別を定義するshell.jsonの作成 4. Zephyr RTOS側の設定・ビルド(Cortex-R5側) • arm_mpu_regions.c修正によるPL(AXI領域)へのアクセス権限付与 • Zephyr用デバイスツリーオーバーレイ(.overlay)によるDPU・GPIOアドレスのマッピング • レジスタ(REG_AP_CTRLなど)を監視し状態をLED/コンソールへ出力するメインプログラムの実装 • west buildコマンドによるzephyr.elfのビルド 5. KV260実機へのデプロイと実行 • 生成した各種ファイル(pl.dtbo, shell.json, .bit.bin, .elf)の実機(Linux環境)への転送 • xmutilコマンドを使用した、FPGAファブリックへのハードウェアデザインの動的ロード • remoteprocフレームワークを介したCortex-R5(Zephyr RTOS)のファームウェア起動とリアルタイム監視の開始 何時ものZephyrでの Westビルドまでが遠い...
  7. ざっくりの手順紹介(PetaLinux) 0. PetaLinuxのビルド・環境構築(Cortex-A53側ベース) • PetaLinux 2025.2環境のインストールとKV260用BSPの展開 • デバイスツリー(system-user.dtsi)の編集によるRPU(Cortex-R5)用のメモリ領域・IPI通信の確保 • Zephyr用へのUART1の解放(Linux側での無効化設定)

    • WICイメージのビルドおよびmicroSDカードへの書き込みと実機ログイン 1. Vivadoでのハードウェア設計(PL側) • Zynq UltraScale+ MPSoCコアと、制御・デバッグ用AXI GPIOの配置 • Address Editorでの各IP(GPIOや後述のDPU)のベースアドレス確定 • ビットストリームの生成および.xsaファイルのエクスポート 2. VitisでのDPUモデルの準備 • Vitis でのDPU(Deep Learning Processor Unit)アーキテクチャのビルド設定 • ターゲットDPUサイズ(B3136サイズなど)やURAM利用フラグ等のパラメータ定義 • コンパイル後の統合DPUモデル(.xmodel)の出力 3. Kria用アクセラレーション・バリアントの準備 • Vitis xsctツールを使用したデバイスツリーオーバーレイ(pl.dtbo)の生成 • bootgenによるビットストリーム(.bit)からバイナリ(.bit.bin)への変換 • アクセラレータ種別を定義するshell.jsonの作成 4. Zephyr RTOS側の設定・ビルド(Cortex-R5側) • arm_mpu_regions.c修正によるPL(AXI領域)へのアクセス権限付与 • Zephyr用デバイスツリーオーバーレイ(.overlay)によるDPU・GPIOアドレスのマッピング • レジスタ(REG_AP_CTRLなど)を監視し状態をLED/コンソールへ出力するメインプログラムの実装 • west buildコマンドによるzephyr.elfのビルド 5. KV260実機へのデプロイと実行 • 生成した各種ファイル(pl.dtbo, shell.json, .bit.bin, .elf)の実機(Linux環境)への転送 • xmutilコマンドを使用した、FPGAファブリックへのハードウェアデザインの動的ロード • remoteprocフレームワークを介したCortex-R5(Zephyr RTOS)のファームウェア起動とリアルタイム監視の開始
  8. 0. PetaLinuxのビルド・環境構築(Cortex-A53側ベース) • PetaLinux 2025.2環境のインストールとKV260用BSPの展開 • デバイスツリー(system-user.dtsi)の編集によるRPU(Cortex-R5)用のメモリ領域・IPI通信の確保 • Zephyr用へのUART1の解放(Linux側での無効化設定) •

    WICイメージのビルドおよびmicroSDカードへの書き込みと実機ログイン 1. Vivadoでのハードウェア設計(PL側) • Zynq UltraScale+ MPSoCコアと、制御・デバッグ用AXI GPIOの配置 • Address Editorでの各IP(GPIOや後述のDPU)のベースアドレス確定 • ビットストリームの生成および.xsaファイルのエクスポート 2. VitisでのDPUモデルの準備 • Vitis でのDPU(Deep Learning Processor Unit)アーキテクチャのビルド設定 • ターゲットDPUサイズ(B3136サイズなど)やURAM利用フラグ等のパラメータ定義 • コンパイル後の統合DPUモデル(.xmodel)の出力 3. Kria用アクセラレーション・バリアントの準備 • Vitis xsctツールを使用したデバイスツリーオーバーレイ(pl.dtbo)の生成 • bootgenによるビットストリーム(.bit)からバイナリ(.bit.bin)への変換 • アクセラレータ種別を定義するshell.jsonの作成 4. Zephyr RTOS側の設定・ビルド(Cortex-R5側) • arm_mpu_regions.c修正によるPL(AXI領域)へのアクセス権限付与 • Zephyr用デバイスツリーオーバーレイ(.overlay)によるDPU・GPIOアドレスのマッピング • レジスタ(REG_AP_CTRLなど)を監視し状態をLED/コンソールへ出力するメインプログラムの実装 • west buildコマンドによるzephyr.elfのビルド 5. KV260実機へのデプロイと実行 • 生成した各種ファイル(pl.dtbo, shell.json, .bit.bin, .elf)の実機(Linux環境)への転送 • xmutilコマンドを使用した、FPGAファブリックへのハードウェアデザインの動的ロード • remoteprocフレームワークを介したCortex-R5(Zephyr RTOS)のファームウェア起動とリアルタイム監視の開始 ざっくりの手順紹介(FPGA)
  9. 0. PetaLinuxのビルド・環境構築(Cortex-A53側ベース) • PetaLinux 2025.2環境のインストールとKV260用BSPの展開 • デバイスツリー(system-user.dtsi)の編集によるRPU(Cortex-R5)用のメモリ領域・IPI通信の確保 • Zephyr用へのUART1の解放(Linux側での無効化設定) •

    WICイメージのビルドおよびmicroSDカードへの書き込みと実機ログイン 1. Vivadoでのハードウェア設計(PL側) • Zynq UltraScale+ MPSoCコアと、制御・デバッグ用AXI GPIOの配置 • Address Editorでの各IP(GPIOや後述のDPU)のベースアドレス確定 • ビットストリームの生成および.xsaファイルのエクスポート 2. VitisでのDPUモデルの準備 • Vitis でのDPU(Deep Learning Processor Unit)アーキテクチャのビルド設定 • ターゲットDPUサイズ(B3136サイズなど)やURAM利用フラグ等のパラメータ定義 • コンパイル後の統合DPUモデル(.xmodel)の出力 3. Kria用アクセラレーション・バリアントの準備 • Vitis xsctツールを使用したデバイスツリーオーバーレイ(pl.dtbo)の生成 • bootgenによるビットストリーム(.bit)からバイナリ(.bit.bin)への変換 • アクセラレータ種別を定義するshell.jsonの作成 4. Zephyr RTOS側の設定・ビルド(Cortex-R5側) • arm_mpu_regions.c修正によるPL(AXI領域)へのアクセス権限付与 • Zephyr用デバイスツリーオーバーレイ(.overlay)によるDPU・GPIOアドレスのマッピング • レジスタ(REG_AP_CTRLなど)を監視し状態をLED/コンソールへ出力するメインプログラムの実装 • west buildコマンドによるzephyr.elfのビルド 5. KV260実機へのデプロイと実行 • 生成した各種ファイル(pl.dtbo, shell.json, .bit.bin, .elf)の実機(Linux環境)への転送 • xmutilコマンドを使用した、FPGAファブリックへのハードウェアデザインの動的ロード • remoteprocフレームワークを介したCortex-R5(Zephyr RTOS)のファームウェア起動とリアルタイム監視の開始 ざっくりの手順紹介(Zephyr)
  10. 時間切れでアプリケーションは諦めた Vitis AI + PetaLinux を弄れば行けそうだが...ギブアップ。 PetaLinuxのビルド時にエラー。 tensor.hpp:41:45: error: 'int32_t'

    is not a member of 'std'; did you mean 'int32_t'? GCC 13以降の仕様変更により、 ヘッダーの不足で std::int32_t が 未定義エラーとなりビルドが失敗。 →ヘッダー合わせて行けばエラー消えていったが  対象範囲が多すぎて、時間切れ。 Vitis AIのレシピ 弄ってみた ブログ記事 https://misoji-engineer.com/archives/petalinux2025-dpu.html