目次: Zephyr
前回はPythonとwestの準備をしました。今回はZephyrをビルドするツールzephyr-sdkをインストールします。基本的にはZephyr SDKにあるとおりです。westを使える方はwestで良いですが詰みやすい(※)ので、インストーラを使う方法も知っておいて損はないでしょう。
SDKのバージョンは何でも良い訳ではなくZephyr Version Compatibilityにある通り、SDKのバージョンによってサポートしているZephyrのバージョンが違うのでご注意ください。
今回はSDK 1.0系とZephyr 4.4.0を使いましたが、特に理由はないので必要に応じて適切なバージョンを選んでください。
$ mkdir work_dir $ cd work_dir $ tar xf zephyr-sdk-1.0.1_linux-x86_64_minimal.tar.xz $ cd zephyr-sdk-1.0.1 Install GNU toolchain [y/n]? y Install GNU toolchains for all targets [y/n]? y → この問いにnと答えると、アーキテクチャごとに要るか/要らないかを聞かれるので、 要るものだけにyと答えると時間節約になります。 Install LLVM toolchain [y/n]? y Install host tools [y/n]? y Register Zephyr SDK CMake package [y/n]? y Create symbolic links for old Zephyr bisectability [y/n]? y → 以前はSDK直下にアーキテクチャのディレクトリ(例: x86_64-zephyr-elf)がありましたが、 llvmが導入されてgnu/以下に移動しました。 昔のディレクトリ構造を期待する古いZephyrを使うなら、yと答えてシンボリックリンクを作っておいたほうが良いです。
基本は全部yと答えれば良いはずです。インストール時間を短くしたい人は"Install GNU toolchains for all targets"にnと答えて要るものだけに絞りましょう。
(※)west sdk installでもインストールできますが、westだと何が起きたのか全くわかりません。成功するうちは良いものの、いざ失敗するとどうしようもなくなります。
Zephyr SDKを/optや/usr/localなどに置く場合はZephyrのビルドシステムが勝手にSDKを探してくれます。もし別の場所に置きたい場合はもうひと手間必要です。ホームディレクトリに下記の.zephyrrc設定ファイルを作ります。
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=/home/ubuntu/work_dir/zephyr-sdk-1.0.1
設定を反映させるため、zephyrのディレクトリにあるzephyr-env.shをsourceで取り込みます。
$ cd work_dir/zephyr $ source zephyr-env.sh
先ほど作った設定ファイルの内容が環境変数に反映されていれば成功です。
$ env | grep -i zephyr ZEPHYR_BASE=/home/ubuntu/work_dir/zephyr PWD=/home/ubuntu/work_dir/zephyr ZEPHYR_TOOLCHAIN_VARIANT=zephyr ZEPHYR_SDK_INSTALL_DIR=/home/ubuntu/work_dir/zephyr-sdk-1.0.1 PATH=/home/ubuntu/work_dir/zephyr/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
注意点は、シェルを終了させると環境変数が消えてしまうことです。したがってシェルを立ち上げる度に、
$ cd work_dir $ source .venv/bin/activate $ cd zephyr $ source zephyr-env.sh
を実行する必要がありまして面倒です……。手間なく設定する方法がありそうなので、ご存じの方は教えてくださいませ。以上がうまくいっていたら、ディレクトリはこうなっているはずです。
work_dir |-- .venv `-- zephyr-sdk-1.0.1
またセットアップだけで話が終わってしまいました。Zephyrは本題に至るまでが遠いです。次こそアプリを作ります。
この記事にコメントする
目次: Zephyr
Zephyrのアプリケーションをビルドするには、Zephyrをビルドできる環境が必要です。最初はPython環境のセットアップを行います。
なんで初手がPythonかというと、ZephyrのツリーをダウンロードしたりビルドするときにwestというPython製のツールを実行するためです。基本的にはGetting Started Guideにあるとおりです。
私の環境はDebian Testingなのでcmake(> 3.20.5), Python(> 3.12), Devicetree compiler(> 1.4.6)のバージョンを満たしています。
$ cmake --version cmake version 3.28.3 $ python3 --version Python 3.12.3 $ dtc --version Version: DTC 1.7.0
Ubuntu 24.04 LTSも問題ありません。もし古めのディストリビューションを使っている場合は上記の3ツールの最小バージョンを満たしているかチェックしてください。
$ 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 $ mkdir work_dir $ cd work_dir $ python3 -m venv .venv $ source .venv/bin/activate $ pip install west
Getting Started Guideには続きがありますが、In-treeアプリケーションをビルドするわけではないので今は実行しなくて良いです。以上がうまくいっていたら、ディレクトリはこうなっているはずです。
work_dir `-- .venv
続きはまた今度。
この記事にコメントする
目次: 射的
JTSA Unlimitedの大会に参加しました。
「水」ステージが大失敗、「木」もダメダメでした。他は結構良かったです。結果は72.1秒(前回は75.69秒)でした(総合78位/111人、LM 10位/17人)。60秒台はなかなか遠いです。
練習会の記録を見ても60秒台がほぼ出ないので75〜70秒くらいが実力ですが、去年よりは70秒台前半が出る回数が多いかなあ……?最近はあまり上達している感がありませんが、今後もゆるゆると続けていきます。
この記事にコメントする
目次: Zephyr
Zephyr RTOSはツリー内にアプリケーションを持ちます(以降、In-treeアプリケーションと呼びます)。zephyr/sample以下にサンプルアプリがあります。別の場所に自分のアプリケーションを足すこともできます。FreeRTOSもアプリケーションの横にカーネルのソースコードを置く形でした。RTOSだと普通なんでしょうね。
zephyr |-- LICENSES |-- arch |-- boards |-- build |-- cmake |-- doc |-- drivers |-- dts |-- include |-- kernel |-- lib |-- misc |-- modules |-- samples ★アプリケーションのサンプルはここにある★ |-- scripts |-- share |-- snippets |-- soc |-- submanifests |-- subsys `-- tests
In-treeアプリケーションは簡単に追加できて便利ですが、LinuxやUnixに慣れた人はアプリケーションとカーネルコードが混ざることに違和感を感じるでしょう。小さめなFreeRTOSならまだしも、でかいZephyrを常にアプリの横に置かれるのは邪魔です。
ご安心ください、Zephyrはアプリとカーネルを別のディレクトリに置くことができます(以降、Out-of-treeアプリケーションと呼びます)。便利ですね。
続きはまた今度。
この記事にコメントする
| < | 2026 | > | ||||
| << | < | 05 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | - | - | - | - | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | - | - | - | - | - | - |
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
2026年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: