はじめに
Zephyrの勉強のためにとりあえず動かしてみる。
準備
いろいろ事前にインストールが必要なのでやっておく。
west
直接gitでソースを取得するのではなくwest
というツールを使用することが推奨されているようだ。
pip3が必要なのでインストールする。 OSの環境を汚したくないのでuserインストールする。
$ sudo apt install python3-pip $ pip3 install --upgrade pip $ sudo apt purge python3-pip
westのインストール。
$ pip3 install --user west
ninja
westは内部からninjaを叩くようなのでninjaをインストールする。
$ sudo apt install ninja-build
CMakeの更新
Ubuntu 18.04のcmakeでは古いため新しいcmakeをインストール
$ wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz $ tar xvf ./cmake-3.14.4.tar.gz $ cd cmake-3.14.4 $ ./configure $ make -j $(nproc) $ sudo make install
Zephyr SDK
$ cd /tmp $ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.10.0/zephyr-sdk-0.10.0-setup.run
インストーラを実行する。
$ sh zephyr-sdk-0.10.0-setup.run Verifying archive integrity... All good. Uncompressing SDK for Zephyr 100% Enter target directory for SDK (default: /opt/zephyr-sdk/): ~/bin/zephyr-sdk
デフォルトでは/opt/zephyr-sdk/
にインストールされる。
インストール先はどこでも良いが、ここでは~/bin/zephyr-sdk
にインストールした。
環境変数を設定する必要がある。
次の内容を~/.bashrc
に追加する。
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr export ZEPHYR_SDK_INSTALL_DIR=${HOME}/bin/zephyr-sdk
.bashrcを読み込む。
$ source ~/.bashrc
Zephyrのソースを取得
west
でソースを取得する。
$ west init zephyrproject $ cd zephyrproject $ west update
依存パッケージのインストール
依存するpythonパッケージをインストールする。
$ pip3 install --user -r zephyr/scripts/requirements.txt
westでビルドする
先程のzephyrprojectディレクトリに戻り次のコマンドを実行する。
$ cd zephyr $ source zephyr-env.sh
対応ボードを調べる
次のコマンドでSTM32F4Discoveryを探す。
$ west boards | grep stm32f4 stm32f411e_disco stm32f412g_disco stm32f429i_disc1 stm32f469i_disco stm32f4_disco
stm32f4_disco
が見つかった。
Hello worldをビルドする
手始めに世界に挨拶してみる。
$ west build -b stm32f4_disco samples/hello_world
westで書き込む
次のコマンドで書き込みからボードのリセットまでやってくれる。
$ west flash
次のように接続し、minicom
などのターミナルを起動しておく
USB Cable | STM32 |
---|---|
TXD | PA3 |
RXD | PA2 |
GND | GND |
次のように表示されればOK
***** Booting Zephyr OS zephyr-v1.14.0-1091-ge58df2c34eab ***** Hello World! stm32f4_disco
まとめ
だいたい全部west
で片付く。
platformio
みたい。最近はこういうのが流行りなのか。
(おまけ)qemuで実行
実機なしで手軽に試すにはqemuを使用できる。
$ west build -b qemu_x86 samples/hello_world $ west build -t run ...(snip)... SeaBIOS (version rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org) Booting from ROM..***** Booting Zephyr OS zephyr-v1.14.0-1091-ge58df2c34eab ***** Hello World! qemu_x86
Ctrl+a, xで終了。