【第2回】Zephyr OSの開発環境構築!Windows(WSL2)&仮想環境(QEMU)で「Hello World」を動かしてみよう

この記事は約7分で読めます。

こんにちは!「Zephyr OS入門」連載の第2回です。

[第1回:Zephyr OSとは?] では、Zephyr OSの概要や対応アーキテクチャ、豊富な標準ドライバの魅力について解説しました。

「さっそく触ってみたいけれど、まだ手元にマイコンボードがない…」

「Windowsマシンを使っているけれど、環境構築でハマりたくない…」

そんな方でも大丈夫!今回はWindowsのWSL2(Ubuntu)を利用し、実機マイコン不要の仮想環境(QEMUエミュレータ)上でZephyr OSを動かしていきます。

この記事の手順を一緒に進めながら、開発環境の構築と「Hello World」の実行まで一気にチャレンジしてみましょう!

今回のゴール

  1. WSL2(Ubuntu) 内にビルドツール群を導入する
  2. Zephyr専用の管理ツール「west」と「Zephyr SDK」をセットアップする
  3. 仮想ボード(qemu_x86)向けにサンプルプログラムをビルドする
  4. QEMU上で「Hello World!」の出力を確認する

Step 1:WSL2の有効化と必要パッケージの導入

まずはWindows上でLinux(Ubuntu)を動かすための事前準備を行います。

1. 推奨のUbuntuバージョンについて

Zephyr OSの開発環境には、長期サポート版(LTS)である Ubuntu 22.04 LTS または Ubuntu 24.04 LTS の利用を推奨します。

すでにWSL環境をお持ちの方は、ターミナルで以下のコマンドを実行してUbuntuのバージョンを確認しておきましょう。

lsb_release -a

(※ Description: Ubuntu 22.04.x LTS または 24.04.x LTS と表示されれば問題ありません)

2. WSL2(Ubuntu)の起動

まだWSL2を導入していない方は、管理者権限のPowerShellで以下を実行してPCを再起動します。

# WSL2のインストール(標準で最新のUbuntu LTSが自動導入されます)
wsl --install

3. 必要パッケージの一括インストール

Ubuntuターミナルが開いたら、以下のコマンドでシステム更新とビルドに必要な各種ツール(CMake, Ninja, Python等)を一括インストールします。

sudo apt update && sudo apt upgrade -y

sudo apt install -y git cmake ninja-build gperf \
  ccache dfu-util device-tree-compiler wget \
  python3-dev python3-pip python3-venv file make gcc \
  gcc-multilib g++-multilib libsdl2-dev libmagic1

Step 2:Python仮想環境の作成と「west」の導入

Zephyrプロジェクトでは、リポジトリの取得やビルド、書き込みなどを一括管理する 「west」 という専用ツールを使用します。Pythonの仮想環境(venv)を作成してセットアップを進めましょう。

1. 仮想環境(venv)の作成と有効化

作業用ディレクトリ(~/zephyr-workspace)を作成し、仮想環境に入ります。

mkdir -p ~/zephyr-workspace
cd ~/zephyr-workspace

# Python仮想環境の作成
python3 -m venv .venv

# 仮想環境の有効化
source .venv/bin/activate

※ ターミナルの先頭に (.venv) と表示されれば準備完了です。

2. west のインストールとワークスペース初期化

# west ツールのインストール
pip install west

# Zephyr のソースコード(マニフェスト)を取得して初期化
west init zephyrproject
cd zephyrproject

# 依存モジュール(HALや外部ライブラリ等)の一括ダウンロード(数分かかります)
west update

3. Python依存ライブラリのインストール

# Zephyrが必要とするPythonパッケージを一括インストール
pip install -r zephyr/scripts/requirements.txt

Step 3:Zephyr SDK(コンパイラ&QEMU)の導入

次に、各種CPU用のコンパイラやエミュレータ(QEMU)が含まれた 「Zephyr SDK」 をインストールします。

# zephyrproject ディレクトリ内で実行
west sdk install

実行すると自動で、CPUを判断して必要なパッケージをdownloadしてくれます。

Step 4:仮想環境(QEMU)で「Hello World」をビルド&実行!

いよいよ「Hello World」を動かしてみましょう!

Zephyrのソースコードには標準でたくさんのサンプル(samples/)が用意されています。今回はその中から samples/hello_world を使用します。

1. ビルドの実行

ターゲットとなるボード(-b オプション)に、x86用のQEMU仮想ボード qemu_x86 を指定してビルドを行います。

# zephyrproject/zephyr ディレクトリへ移動
cd zephyr

# qemu_x86 向けに hello_world サンプルをビルド
west build -b qemu_x86 samples/hello_world

ターミナルに Generating files from /xxx/zephyr-workspace/zephyrproject/zephyr/build/zephyr/zephyr.elf for board: qemu_x86/atom と表示されればビルド成功です!

2. QEMU上でプログラムを実行!

続いて、ビルドしたバイナリをそのままQEMU上で起動します。

west build -t run

実行すると、ターミナル上に以下のような文字列が出力されます!

画面上に 「Hello World! qemu_x86」 と出力されました!これで、仮想OS上でZephyr RTOSが正常にブートし、タスクを実行できたことが確認できました。

💡 QEMUの終了方法(重要)

QEMUが起動するとターミナルがQEMUのコンソール画面と繋がった状態になり、そのままでは通常のコマンド入力画面に戻れません。

QEMUを終了させるには、キーボードで以下のように操作します。

  • Ctrl + A を押したあと、指を離して X を押す

これでQEMUプロセスが終了し、通常のターミナルに戻ることができます。

補足&トラブルシューティング

Q1. 次回ターミナルを開いたときはどうすればいい?

新しいUbuntuターミナルを開いた際は、作成したPython仮想環境の有効化を行ってください。

cd ~/zephyr-workspace
source .venv/bin/activate

Q2. 他の仮想ボード(ARMなど)で動かしてみたい!

Zephyrはボード名を切り替えるだけで、全く同じコードを別アーキテクチャのQEMU上で動かせます。例えば ARM Cortex-M3 の仮想環境で動かす場合は、以下のように -p always(クリーンビルド)を付けて実行できます。

# ARM Cortex-M3 仮想環境(qemu_cortex_m3)でビルド&実行
west build -p always -b qemu_cortex_m3 samples/hello_world
west build -t run

出力が Hello World! qemu_cortex_m3 に変わるのを確認してみると、Zephyrのマルチプラットフォーム対応の柔軟性が体感できます!

まとめ

今回は、Windowsマシン上で 「WSL2(Ubuntu 22.04/24.04 LTS)を使用したZephyr OSの開発環境構築」 から 「QEMU上でのHello World実行」 までを実際に手を動かしながら体験しました!

  • WSL2(Ubuntu) を使えばLinuxと同じ手軽なコマンドで環境構築が可能
  • west ツールを使ってプロジェクトや依存関係をスマートに管理
  • QEMU を使えば、実機マイコンが手元になくてもすぐに挙動確認ができる

次回は、RTOSの真骨頂である 「マルチタスクとマルチスレッド機能(タスク間通信・セマフォなど)」 について、実際にコードを書きながら深掘りしていきます!お楽しみに!

コメント

タイトルとURLをコピーしました