2019/08/14

Zephyr (2)

未だに、"Zephyr"の綴りを見ながらじゃないと書けない。。。

さて、QEMUでHello Worldだけは動いたので、もう少し本体のことを見ておこう。


まず、BLE部分。

Nordic Blog(2016/12/22)によると、Link Layer + HCIを移植したそうだ。
ソースファイルを見てみると、Nordicの名前が入っている。
もう少し上のディレクトリになると、NordicだけでなくIntelの名前も入っていた。
shellやmeshなんかはIntelのようだ。

今のところこの部分はNordicだけしか入っていないので、Nordicで使いやすくポーティングされているのだろう。highly optimizedと書いているのは、そういった理由からだろうか。
いや、nRF5x SDKで作っていたコードを移植しやすいということか。"you can clone, build and run"ってのがよくわかってない。が、まあ、ZepherがサポートするIPv6 over BLEなんかの機能と組み合わせられるとか恩恵を受けるとか、そんなことをいいたいんじゃなかろうか。
あるいは、git cloneとかで好きかって改造したらいいやん、みたいなところもあるのか・・・。

考えても分からんので、そのうち考えよう。


Blogの手順を見ると、beaconを動かす手順が書かれていた。
3年前の記事だから、手順が多少違うかもしれない。

なんとなくZephyr SDKを展開したものの、これっていらないんじゃなかろうか・・・。

image

zephyr-sdk-0.10.2/arm-zephyr-eabi/bin$ ./arm-zephyr-eabi-gcc --version
arm-zephyr-eabi-gcc (crosstool-NG 1.24.0-rc2-dirty) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2019-q3-update) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

うーん?
ZEPHYR_SDK_INSTALL_DIRを設定しなければいいだけのような気もするが、そういえばdtcのバージョンがあったな。。。

dtcのソースコードを取ってきてビルドしよう。

https://git.kernel.org/pub/scm/utils/dtc/dtc.git

$ sudo apt install flex bison
$ make
$ make install

うーん、/home/xxxx/bin/dtcにインストールされたようだ。

$ sudo make PREFIX=/usr install

無理やりな感じもするが、これでパスが通るところに最新dtcが置かれた。

 

$ west build -b qemu_x86 samples/hello_world

...

  ZEPHYR_SDK_INSTALL_DIR must be set

ああ、ZEPHYR_TOOLCHAIN_VARIANT=zephyrが設定されていたままだった。
しかし、未設定にするとZEPHYR_TOOLCHAIN_VARIANTの設定を要求された。
GCCのprefixみたいなイメージだったのだが、何を指定すれば良いのだろうか。。。

どうも、zephyrproject/zephyr/cmake/toolchainの下にあるディレクトリ名として使っているようだ。

image

host、でいいのかな?

$ file build/zephyr/zephyr.elf
build/zephyr/zephyr.elf: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, with debug_info, not stripped

まあ、いいのかな。

しかし、 west build -t runは動かなかった。

/bin/sh: 1: QEMU-NOTFOUND: not found
FAILED: zephyr/CMakeFiles/run

QEMUがインストールされていないのか?

$ sudo apt install qemu-system-x86

ダメか。

どうも、CMakeCache.txtに載ってるらしい。

https://github.com/zephyrproject-rtos/zephyr/issues/6911#issuecomment-378770605

確かに、QEMUはnotfoundだった。

//Path to a program.
QEMU:FILEPATH=QEMU-NOTFOUND

CMakeCache.txtの更新方法が分からんかったので、build/ごと削除してwest buildからやり直した。
そしたら、動いた。

qemuって、動いたらCtrl+Cでは止められないのね。。。


というわけで、SDKディレクトリは削除をしてよいだろう。
数GBあって、うちのSSDの空き容量を圧迫していたのよねぇ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。