VS CodeでNuvoton MCUを開発!Zephyr RTOS編
Zephyrは、リソースが制限されたMCU向けに設計された、オープンソースの小型で軽量なRTOSです。Nuvoton Technology(以下Nuvoton)のNuMicro®シリーズMCUにおいても、Zephyrのサポートが進められています。
本記事では、Visual Studio Code(以下VS Code)を用いたZephyr開発環境の構築から、サンプルコードのビルド、Flash書き込み、GUIデバッグ、そしてネットワーク機能(Webサーバー)の動作確認までの流れをご紹介します。詳しい手順書は、本記事の末尾よりダウンロードいただけますので、ぜひご活用ください。
評価環境には、NuvotonのM55M1シリーズ搭載ボード「NuMaker-X-M55M1D」を使用しており、GitHub上のM55M1用リポジトリに記載されている「Install for Zephyr samples」の手順をベースに構成しています。Zephyr環境のセットアップ前に必要な「Nuvoton NuMicro Cortex-M Pack」のインストールにつきましては、「VS CodeでNuvoton MCUを開発!環境構築の手順」をご参照ください。
目次
導入&セットアップ
VS Codeを用いたZephyr開発のベースとなる環境を構築していきます。
動作環境
Visual Studio Code: v1.132.1
Zephyr IDE Extension Pack: v0.0.4
Zephyr OS: v4.4.0
Zephyr IDE拡張パックの導入
VS Codeに「Zephyr IDE Extension Pack」をインストールします。この拡張パックを導入することで、ビルドツールの管理からデバッグまで、Zephyr開発に必要な機能がVS Code上に統合されます。
ホストツールのセットアップ
Zephyrのビルドに必要なcmakeやninjaなどのホストツールをインストールします。(環境に合わせてWingetまたはpipを利用します。)
Zephyr Workspaceの指定
Zephyr Workspaceとは、Zephyr OS本体や各種開発ツール、SDKなどを一括して格納・管理する、環境の土台となる大元のフォルダを指します。拡張機能の案内に従って、任意の空フォルダをZephyr Workspaceとして指定します。
West Workspaceの設定
West Workspaceとは、先ほど指定したZephyr Workspace内に、Zephyr OS本体や構成ファイル(west.yml)などが配置され、ビルド・開発が可能になった環境全体のことを指します。
※Westとは、Zephyr専用のコード・リポジトリ管理ツールです。OS本体や各マイコン用のライブラリ(HAL)など、複数のGitリポジトリを自動でまとめて管理・更新します。West Workspaceの初期化では、標準的なテンプレート(Full Zephyr)を選択し、インターネット経由で最新のZephyrソースコード群を全自動で取得・構築します。
ビルド&デバッグ環境
構築したZephyr Workspace上で、実際にNuMaker-X-M55M1D向けのビルドとデバッグを行います。
プロジェクト作成とビルド
Zephyr Workspace内に用意されているサンプルコードを、作業用フォルダ(Project Folder)へコピーして使用します。
- コピー元(Sample Code):Zephyr¥external¥zephyr¥samples¥hello_world
- コピー先(Project Folder):C:¥WORK¥NTC¥Projects¥hello_world(例)
VS Code上でこの Project Folder を追加し、ターゲットボード(numaker_m55m1/m55m1xxx)を指定してビルド構成を作成します。
Flash書き込み
Flash書き込みを行うためには、「Runner Profile」の作成が必要です。VS CodeのRunner Profilesエディタを開き、zephyr-ide.json にOpenOCDを使用したFlash書き込み用の引数を追加設定することで、GUI上のボタンから簡単に書き込みが実行できるようになります。
デバッグ環境
デバッグを行うためのlaunch.jsonを生成します。ペリフェラルレジスタ定義(SVDファイル)やターゲットボード構成のパスを環境に合わせて最適化することで、直感的なソースコードデバッグが可能になります。
Ethernetサンプルカスタマイズ【デモ動画】
プロジェクト作成とドライバ改修
Zephyrの特長でもあるネットワークスタックを検証するため、Webサーバー・サンプル(http_server)を使用します。
- コピー元(Sample Code):Zephyr¥external¥zephyr¥samples¥net¥sockets¥http_server
- コピー先(Project Folder):C:¥WORK¥NTC¥Projects¥http_server(例)
本環境では、起動時にLANケーブルが未接続だとタイムアウトエラーで停止してしまいます。そこで、Nuvotonの標準ドライバ(eth_numaker.c)に対し、起動時の接続完了を待たず1秒周期で定期ポーリングを行う改修を加えています。
Webサーバー動作確認
Webサーバーサンプルを起動し、PCのブラウザからボードへアクセスできます。ブラウザ画面からボード上のLED制御(ON/OFF)や、通信ステータスのリアルタイム確認が可能です。
改修サンプルの動作確認
デモ動画
PC直結でのLED制御から、ルーター接続(DHCP)による動的IPアドレスの取得、およびDNS名前解決(google.com)のデモ動画です。
おわりに
本記事では、VS Codeを利用したZephyr開発環境の構築と、デバッグ・ネットワーク検証の全体的な流れをご紹介しました。詳しい手順書は、下記の「資料ダウンロード」ボタンより入手いただけます。実際の開発・検証環境の構築に、ぜひご活用ください。
弊社では、今回ご紹介したM55M1シリーズや評価ボード(NuMaker-X-M55M1D)に関する技術的なサポートをはじめ、製品の選定やサンプル・お見積りのご要望を承っております。「具体的な動作仕様について知りたい」「自社の開発で検討したい」など、ご興味がございましたら、ぜひお気軽にお問い合わせください。