コラム

Column

ご挨拶

AMD™ 社製 KV260 で Zephyr® を動作させる:Linux 経由と直接起動の2手順を解説

Wind River コラム 特集

目次

はじめに

本ブログでは、これまでも度々触れてきた、Zephyr® について、今回は、AMD™ 社製 KV260 で動作させる手順の概要について紹介します。

KV260 は、Vision AI Starter Kit として位置付けのリファレンスで、ARM Cortex a53、ARM Cortex r5、FPGA を搭載しています。

下記サイトの内容に従い、KV260 ボードで Zephyr® のコードを実際に動作させました。

① Zephyr® 生成環境の構築、および生成手順

参照サイト:https://docs.zephyrproject.org/latest/develop/getting_started/index.html

② KV260 Development Board RPU Cortex-R5 で Zephyr Hello_world デモコードを動作させる手順

参照サイト:https://docs.zephyrproject.org/latest/boards/amd/kv260_r5/doc/index.html
上記 1) で生成した、Zephyr® コードを KV260 ボードで動作させます。
より詳細には、r5 で動作する Zephyr® コードを、a53 で動作している Linux 経由で実行しています。

③ KV260 にて、Linux を経由せず Zephyr® コードを r5 で動作させる手順

作業環境として、Ubuntu 22.04 LTS を使用しました。
それでは、手順詳細を順に紹介していきます。

①Zephyr® 生成環境の構築、および生成手順

手順の詳細は以下のサイトを参照しました。
参照サイト:https://docs.zephyrproject.org/latest/develop/getting_started/index.html

作業手順(参照したサイトの内容から抜粋しています)

Install dependencies(依存パッケージのインストール)

Ubuntu 22.04 LTS で必要となるパッケージをインストールします。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \
xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1

Get Zephyr and install Python dependencies(Zephyr® の取得および Python® 依存関係のインストール)

Create a new virtual environment(新しい仮想環境の作成)

新しい仮想環境を作成します。

$ mkdir zephyrproject
$ cd zephyrproject
$ python3 -m venv ./zephyrproject/.venv
* python3 等がインストールされていなければ、以下を実行します。
$ sudo apt install python3-venv

Activate the virtual environment(仮想環境の有効化)

仮想環境を有効化します。

$ source ./zephyrproject/.venv/bin/activate

Install west(west のインストール)

west をインストールします。

$ pip install west

Get the Zephyr source code(Zephyr® ソースコードの取得)

Zephyr® ソースコードを取得します。

$ west init ./zephyrproject
$ cd ./zephyrproject
$ west update

Export a Zephyr CMake package(Zephyr® CMake パッケージのエクスポート)

Zephyr® CMake パッケージをエクスポートします。これにより、CMake は Zephyr® アプリケーションの生成に必要な定型コードを自動的に読み込むことができるようになります。

$ west zephyr-export

Install Python dependencies using west packages(west packages を使用して Python® 依存関係をインストール)

Zephyr® の west 拡張コマンドを用いて、Python® 依存関係をインストールします。

$ west packages pip --install

Install the Zephyr SDK(Zephyr® SDK をインストールする)

Install the Zephyr SDK using the west sdk install(west sdk install を使用し、Zephyr® SDK をインストールします)

$ cd ./zephyr
$ west sdk install

サンプルコードの生成

$ west build -p always -b <your-board-name> samples/basic/blinky
^^^^^^^^         ^^^^^^^^^^
kv260_r5         samples/hello_world

今回は、hello_world を Build するので、

$ west build -p always -b kv260_r5 samples/hello_world

hello_world は、~/zephyrproject/zephyr/samples/hello_world/ 以下にあります。

生成の結果、以下に、zephyr.elf が生成されます。

~/zephyrproject/zephyr/build/zephyr/zephyr.elf

②KV260 Development Board RPU Cortex-R5 で Zephyr Hello_world デモコードを動作させる手順

手順の詳細は以下を参照しました。
参照サイト:https://docs.zephyrproject.org/latest/boards/amd/kv260_r5/doc/index.html

実際の手順は以下の通りでした。

起動用 SD Card image のダウンロード

以下のサイトより、OpenAMP を含んだイメージをダウンロードします。
参照サイト:https://www.xilinx.com/member/forms/download/xef.html?filename=petalinux-sdimage_xilinx-k26-starterkit.wic.xz

以下のコマンドで、SD Card 書き込みます。

$ sudo dd of=/dev/sdb if=Downloads/amd/petalinux-sdimage_xilinx-k26-starterkit.wic

デモコードを 対象機にコピー

前の手順で生成した zephyr.elf を使います。
開発環境側(Ubuntu 22.04 LTS)から以下のコマンドで対象機に zephyr.elf をコピーします。

$ scp <path_to>/zephyr.elf petalinux@<board-ip-address>:/home/petalinux

実行例は以下の通りです。

$ scp workspace/zephyrproject/zephyr/build/zephyr/zephyr.elf petalinux@192.168.13.205:/home/petalinux
petalinux@192.168.13.205's password:
zephyr.elf 100% 375KB 4.0MB/s 00:00

下記メッセージが表示されてエラーが出る場合は、-O オプションを使用します。

<エラーメッセージ>
sh: line 1: /usr/libexec/sftp-server: No such file or directory
scp: Connection closed

$ scp -O workspace/zephyrproject/zephyr/build/zephyr/zephyr.elf petalinux@192.168.13.205:/home/petalinux
petalinux@192.168.13.205's password:
zephyr.elf 100% 375KB 4.0MB/s 00:00

対象ボード側で zephyr.elf がコピーされていることを確認します。

xilinx-k26-starterkit-20221:~$ pwd
/home/petalinux
xilinx-k26-starterkit-20221:~$ ls
zephyr.elf <<< zephyr.elf がコピーされた
xilinx-k26-starterkit-20221:~$

重要

公式手順に記載されている以下の内容に従い、
対象ボード側の /lib/firmware 以下にも zephyr.elf をコピーします。

After that move the file to /lib/firmware directory, then you be able to start the firmware on the desired RPU via remoteproc with:

デモコードの実行に従い、対象ボード側のコンソールは、r5 の出力用に使用するため ssh 接続で操作します。

$ ssh petalinux@192.168.13.249
petalinux@192.168.13.249's password:
xilinx-k26-starterkit-20221:~$ sudo -i
Password:
root@xilinx-k26-starterkit-20221:~# pwd <<< target 側の shell
/home/root
root@xilinx-k26-starterkit-20221:~# cd ../petalinux
root@xilinx-k26-starterkit-20221:/home/petalinux# ls
xilinx-kv260.tar.gz zephyr.elf
root@xilinx-k26-starterkit-20221:/home/petalinux# ls -l
total 177512
-rwxr-xr-x 1 petalinux petalinux 449772 Aug 27 21:49 zephyr.elf
root@xilinx-k26-starterkit-20221:/home/petalinux#
root@xilinx-k26-starterkit-20221:/home/petalinux# echo zephyr.elf > /sys/class/remoteproc/remoteproc0/firmware
root@xilinx-k26-starterkit-20221:/home/petalinux# echo start > /sys/class/remoteproc/remoteproc0/state

コンソール側の結果

*** Booting Zephyr OS build v4.3.0-1097-g5220936bbc02 ***
Hello World! kv260_r5/zynqmp_rpu

上記出力が対象ボード側のコンソールに表示されました。

なお、本作業は、2025年12月9日に実施したものです。

③KV260 にて、Linux を経由せずに Zephyr® コードを r5 で動作させる手順

本手順では、KV260 の基本構成に基づく Vivado™ XSA ファイルを使用します。

(注) XSA ファイルについて
XSA(eXtensible System Archive)ファイルとは、FPGA/SoC 設計のハードウェア情報(IP、ピン配置、クロック、メモリ設定など)と作成時の Vivado™/Vitis™ バージョンなどのメタデータをまとめたアーカイブファイルです。本手順では .xsa ファイルが必要で、生成には、Vivado™ を使用します。

Vitis™ の起動 (Vitis™ Embedded を使用)

Vitis™ は、AMD™ FPGA processors のためのアプリケーションソフトウェア開発環境です。
以下のサイトより、Vitis™ Embedded をダウンロードします。(本記事では、2025.1 を使用)

参照サイト:https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vitis.html

Worksapce の作成

作業用フォルダの作成と初期化を行います。
あらかじめ、作業用フォルダを作成します(例:$ mkdir -p workspace/kv260_zephyr)。

次に、Vitis™ メニューにて、
[File] [Set Workspace …] を選択し、kv260_zephyr を指定します。

Platform Component の作成

Vivado™ で設計した XSA ファイルに基づき、BSP、FSBL を生成するための Platform Component を作成します。Platform Component は、Vivado™ で設計したハードウェア情報(XSA ファイル)に基づき、BSP(Board Support Package)、FSBL(First Stage BootLoader)を生成するためのプロジェクトです。これを作成します。

VITIS EXPLORER にて、[Create Platform Component] を選択します。
Component name に任意の名称を入力します(本例では、kv260_zephyr)(図1)。入力後、[Next]ボタンを押下します。

図1

[Hardware Designe(XSA) For Implementation] の [Browse]ボタンを選択し、あらかじめ作成しておいた .xsa ファイルを指定します(図2)。指定後、[Next]ボタンを押下します。

図2

[Generate Boot artifacts] がチェックされていること、および[target processor to create FSBL:] が、cortexa53 になっていることを確認します(図3)。確認後、[Next]ボタンを押下します。

図3

Summary の画面にて、[Finish]ボタンを押下します。
これで、Platform Component の作成が完了します。

Platform Component の生成

FSBL(fsbl.elf)を生成します。
[Build]ボタンが追加されているので(図4)、選択して、生成を実施します。

図4

fsbl.elf が生成されます(図5)。

図5

Boot Image の作成

生成した fsbl.elf と 動作させたいアプリケーションを結合し、起動可能なイメージである、BOOT.bin を生成します。

上記動作させたいアプリケーションを生成した zephyr.elf とします。

Vitis メニューにて、
[Vitis] [Create Boot Image] [Zynq Ultrascale+] を選択します。
図6 の [+]ボタンを押下し、fsbl.elf を登録します。
[File Path] に fsbl.elf への path を指定します。
[Type] は自動的に “bootloader” が選択されます。
[Destination CPU] は a53-0 を選択し、[OK]ボタンを押下します。

図6

続けて、再度[+]ボタンを押下し、zephyr.elf を登録します。
[Type] は、datafile、[Destination CPU] は r5-0 を選択します(図7)。
[OK]ボタンを押下します。

図7

[Output BIF File Path] に任意のファイル名をパスと併せて入力します。
[Output Image] のファイル名が BOOT.bin になっていることを確認します(図8)。
赤枠のファイル名の順序が異なる場合は、[+] 右側にある矢印で変更できます。
確認後、[Create Image] ボタンを押下します。
BOOT.bin、および bootImage.bif が生成されます。
Vitis での操作はこれで終了です。

図8

KV260 Flash Memory への BOOT.bin のコピー

KV260 の web サーバーによる BOOT.bin イメージのコピー

KV260 ボードの FWUEN(Firmware Update) Button を押したまま、RESET Button を押すと、web サーバーが使用可能になります。
ブラウザから http://192.168.0.111 に接続します。
KV260 の Flash Memory は、Image A、Image B の 2 領域があり、いずれか一方を選択して使用します。

BOOT.bin イメージのコピー手順は以下の通りです(図9)。

  • 1) Recover Image 下の [Browse] ボタンで、<path to>/BOOT.bin を選択
  • 2) [Select Image to bo recovered] で、Image A または Image B を選択
  • 3) [Upload] ボタンを押下してコピーを実施

次に、(図9) の Boot Image Status 下にて、

  • 4) [Requested Boot Image] で、コピーした Image A または Image B を選択
  • 5) コピーした側の Image の Bootable ボタンを有効化
  • 6) [Configure] ボタンを押下

これで、コピー処理および BOOT.bin を動作させる準備が完了します。

図9

 

BOOT.bin の起動

電源 OFF —> ON、または RESET ボタンで BOOT.bin を動作させます。
コンソールに、以下の出力が表示されました。

Hello World! kv260_r5/zynqmp_rpu

最後に

以上になります。
このコラムが、皆様がAMDボードやZephyrに興味を抱くきっかけになりましたら幸いです。

また弊社ではZepher開発・運用支援サービスを提供しておりますので、こちらも参考にしてください。

ウインドリバーのZephyr RTOS 開発・運用支援サービス

詳細資料をご希望の方には送付させていただきますので、以下フォームよりメールアドレスをご登録ください。

    メールアドレス(必須)

    <個人情報の取り扱い>

    ※上記内容は、弊社の掲げる個人情報保護方針に沿って管理し、本件に関するお問い合わせ、
    お申込み等いただいた内容への対応のために利用する場合がございます。
    お客様の同意なく目的外の利用や第三者への開示、提供することはございません。
    詳細につきましては、当サイトの「個人情報保護方針」をご参照ください。

    「個人情報保護方針」に同意し、送信する
    (必須)


    • AMD™、Vivado™、Vitis™ は、Advanced Micro Devices, Inc. の商標または登録商標です。
    • Zephyr® は The Linux Foundation の商標です。
    • Python® は Python Software Foundation の登録商標です。

    [2026年01月20日 時点]

    POPULAR COLUMN
    人気コラム



    CONTACT

    まずはお気軽に
    お問い合わせください!

    PAGE TOP