はじめに
Zephyrに自作のアプリケーションを追加したい。
ここの手順を参考にする。
環境変数の読み込み
とりあえず一番始めにsource zephyr-env.sh
を実行して環境変数を読み込む。
これを忘れるとwest
がまともに動かない。
$ cd zephyr $ source zephyr-env.sh
作成するファイル
次のような構成になるようにファイルを作成する。
app ├── CMakeLists.txt ├── prj.conf └── src └── main.c
ディレクトリの名前はapp
以外でも問題ない。
zephyrのソースツリー配下である必要もない。
今回は次のように作成する。
$ mkdir -p ~/zephyr_app/hello/src $ cd ~/zephyr_app/hello
west
でビルドする予定なので、あえて一段深い階層を作成する。
最終的には次のようになる。
~/zephyr_app └── hello ├── CMakeLists.txt ├── prj.conf └── src └── main.c
CMakeLists.txt
CMakeLists.txtを次の内容で作成する、
cmake_minimum_required(VERSION 3.13.1) include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE) project(my_zephyr_app) target_sources(app PRIVATE src/main.c)
使用するボイラープレートの都合でCMakeLists.txtに記述するプロジェクト名はapp
としなければならない。
prj.conf
プロジェクト固有のコンフィグ設定を記述する。何もない場合は内容は空でもよいがファイルは作成する。
$ echo '# nothing here' > prj.conf
src/main.c
プログラム本体。
#include <stdio.h> int main(int argc, char *argv[]) { printf("My first Zephyr application. \n"); return 0; }
ビルド
west
でビルドする。
$ cd ~/zephyr_app $ west build -b qemu_x86 hello
アプリケーションと同じ階層にbuild
が作成され、その中に成果物が出力される。
とりあえずqemu向けにビルドする。
実行
qemuなのでwest
で実行できる。
$ west build -t run
次のように表示されればOK.
SeaBIOS (version rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org) Booting from ROM..***** Booting Zephyr OS zephyr-v1.14.0-1091-ge58df2c34eab ***** My first Zephyr application.
Ctrl+a,x
で終了。
まとめ
source zephyr-env.sh
で環境変数を読み込んでしまえば、zephyrのソースツリー以外でもwest
が使用できる。
アプリケーションを管理するためのディレクトリもzephyrのソースツリーの外に置くことができるので、管理がしやすい。
アプリケーションのビルドやデバッグにもwest
が使用できるので便利。