Slide 1

Slide 1 text

FPGAの開発コンペでZephyrを 使ってみた ミソジ 2026/6/26 Zephyr Project meetup: Sapporo, Japan #ZephyrRTOS

Slide 2

Slide 2 text

自己紹介 名前:ミソジ @misoji_engineer ブログ: エンジニアの電気屋さん(https://misoji-engineer.com/) ハードウェアのエンジニアで、趣味でブログとか書いてます

Slide 3

Slide 3 text

アジェンダ • このテーマを選んだ理由 • ちょうど良いタイミングで開発コンペがあった • KV260(R5)コアにZephyr(RTOS)を組み込んでみる • DPU(Deep Learning Processor Unit)をモニター • 実装+テストしてみた FPGAの監視でZephyrを使ってみた話

Slide 4

Slide 4 text

このテーマを選んだ理由

Slide 5

Slide 5 text

SC-OBC Module V1 Space Cubics カッコいい...と思ったから。 ■AMD(Xilinx)の「FPGA」でZephyrを使っている。   FPGA…自由にハード設計・書き換え可能なIC https://spacecubics.com/products/scobc_v1/ AMD Versal (最新のFPGA)

Slide 6

Slide 6 text

真似(パクリ) リスペクトしてみたい... R5コアにZephyr(RTOS)を実装。 ■サブコアの軽量なRPU(Real-time Processing Unit)に実装。   Zephyrの良さを活かしている。   https://prtimes.jp/main/h tml/rd/p/000000003.00 0169018.html Zephyr (RTOS)を実装

Slide 7

Slide 7 text

ちょうど良いタイミングで 開発コンペがあった

Slide 8

Slide 8 text

趣味のハードウェア 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年も開発コンペやプログラムに参加しています

Slide 9

Slide 9 text

趣味のハードウェア 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月)

Slide 10

Slide 10 text

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部門は、特に完走者が  少なかったのが一番の理由

Slide 11

Slide 11 text

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 オープンソースカンファレンス 名古屋 発表・展示

Slide 12

Slide 12 text

コンペのFPGAの指定のボード 折角なので、AMDの 最新Versalを使いたいが... AMDの最新ボードから、Microchipのボードまで色々 https://www.newark.com/devkit-hq?utm_source=hackster#explore-by-family

Slide 13

Slide 13 text

最新の高スペックFPGAのボードは高い... AMD Versalの公式ボード・・・250万円近い。 ■公式ボード AMD Versal™ AI VCK190… $13,195.00 ≒200万円 +最近のメモリコストUp   色んな機能・高スペックがてんこ盛りの 最新FPGA評価ボード ✖最新のFPGAは流石に諦める。 https://www.amd.com/ja/products/adaptive-socs-and-fpgas/evaluation-boards/vck190.html

Slide 14

Slide 14 text

所持しているボードで参加 一世代前の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

Slide 15

Slide 15 text

KV260のR5はZephyr公式もサポート ビルド手法も確立されている。→行けそう! ■ZephyrのAMDのBoardsフォルダ   https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/amd KV260(R5コアx2) *Lock-stepは未対応なので。 Split-Modeで対応。

Slide 16

Slide 16 text

プロジェクト概要

Slide 17

Slide 17 text

AI Safety Monitor with FPGA FPGA上のコア(DPU)を、Zephyrで監視する内容 プロジェクトURL https://www.hackster.io/iotengineer22/ai-safety-monitor-with-fpga-zephyr-rtos-bf21d8 DPU・・・Deep Learning Processor Unit コンペのため、 無駄に映えるような テーマ名に...

Slide 18

Slide 18 text

DPU・・・Deep Learning Processor Unit 数年前にFPGA+AI関連で流行った。最近はNPUが主流。 ■FPGA…自由にハード設計・書き換え可能なIC  →DPU(CNN演算のコア)をFPGA上で作れるけど、リソース消費大+燃費悪い DPUによる 高速の画像認識 https://misoji-engineer.com/archives/onnx-vitis-ai.html ブログ記事

Slide 19

Slide 19 text

レジスタ・バス通せば、繋がりそう AXIバス経由で、Zephyr(R5コア)からDPUを監視する FPGA(KV260)上に DPU作って、Zephyrで監視する

Slide 20

Slide 20 text

非常に長い、実装フロー 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ビルドまでが遠い...

Slide 21

Slide 21 text

ざっくり実装手順の紹介

Slide 22

Slide 22 text

ざっくりの手順紹介(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)のファームウェア起動とリアルタイム監視の開始

Slide 23

Slide 23 text

PetaLinux(A53) R5コア単独では動かないので、PetaLinux(A53側)をビルド ■PetaLinux…AMDのFPGA向けの組み込みLinux開発環境 ブログ記事 https://misoji-engineer.com/archives/kv260-r5-zephyr.html

Slide 24

Slide 24 text

先人達に感謝! 既にある神記事に従って、ビルドしただけ。 ■これらの記事が無かったら、今回のプロジェクト作れなかったです。本当にリスペクト。 https://blog-between-hw-sw.com/howto -use-openamp-r5-2core-ubuntu/ https://qiita.com/mana_t/items/e56b b6c94c9420167aa9

Slide 25

Slide 25 text

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)

Slide 26

Slide 26 text

FPGA(DPU) AMDのツール(Vivado, Vitis)で、FPGAを作る ■特にDPU関連のビルドは結構メンドイ ブログ記事 https://misoji-engineer.com/archives/zephyr-kv260-dpu.html DPUのIP Zephyrで監視する レジスタ

Slide 27

Slide 27 text

DPUはリソース食います パラメータ次第ですが、燃費悪いです。 ■大きいIPコアで作れば、性能も上がりますが... ブログ記事 https://misoji-engineer.com/archives/dpuczdx8g.html 容量大 →速度Up FPGAの リソース消費大

Slide 28

Slide 28 text

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)

Slide 29

Slide 29 text

Zephyr(R5) FPGA(PL)領域のアクセス許可、デバイスツリーでレジスタ共有 ■zephyr/soc/xlnx/zynqmp/arm_mpu_regions.cに追記 ブログ記事 https://misoji-engineer.com/archives/r5-fpgapl.html FPGAの領域 アクセス許可 DPUのコントロール レジスタを共有 ■overlay(デバイスツリー)でFPGAのレジスタ共有

Slide 30

Slide 30 text

デモ動画 https://youtu.be/owYmlJc4roc

Slide 31

Slide 31 text

あとは楽勝と思ったら...

Slide 32

Slide 32 text

画像認識を試みたが… 昔作ったアプリケーションで、DPUをモニターするだけ! 3年前ぐらいに 作ったやつ。

Slide 33

Slide 33 text

既にDPUが(あまり)サポートされていない アプリケーション(Vitis AI)側がNPU主体に... AI関連 サポートは短い... https://docs.amd.com/r/en-US/ug1414-vitis-ai/Vitis-AI-Library Vivado/Vitis 2025 →DPUの接続OK *PetaLinux+BSP 2025環境 →Vitis AI+DPU関連が デフォだとNG 2023環境ならDPU動くのに...

Slide 34

Slide 34 text

時間切れでアプリケーションは諦めた 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

Slide 35

Slide 35 text

まとめ

Slide 36

Slide 36 text

・普段使わないR5コアにZephyrを実装できた。  (ARMのA系とM系のコアは経験ありましたが、R系は初めて。) ・FPGAのレジスタをZephyr(RTOS)と繋げれた。  (AXIバスあるので繋がるとは思っていたけど、確認できた) ・最近は無理してDPU使うことはおススメしないです。  (特にAI関連はその時にマッチするものを使うのを推奨です) まとめ Zephyrと R5コア使ってFPGAのレジスタ監視できた!