TinkerOS 2.1.16 までのCodama動作確認しました
2021年1月 2日(土) 22:15 JST
閲覧数 2,105
Tinker Board S の TinkerOS が昨年ぽつぽつとアップデートが出ているのは気がついていました。
TinkerOS のイメージのダウンロードはこちらですね。なんかURLが昔と変わったみたいですね。
Download - Tinker Board - Asus
その TinkerOS での、Codama の動作確認をしました。
対象は、2.0.11, 2.1.11, 2.1.16 になります。
結果、全て動作問題なしです。
2.1.11だけ、kernelが少し違うので、導入には注意が必要です。
Codama を Tinker Board S で動かすためのコードは、こちらにあります。
https://github.com/srchack/codama-tinker-driver
Tinker OS 2.0.11 以降では、apt 等で導入できる device-tree-compiler では、バージョンが古くてビルドができないので、別で device-tree-compiler を導入しなくてはいけません。
Tinker Board Forum にも同様の問題に対して情報があります。 device-tree-compiler をパッケージから導入している場合は、こういうエラーになってしまいます。
$ sudo make KERNEL_SRC=/lib/modules/$(uname -r)/build all ARCH=arm dtc -@ -I dts -O dtb -o codama-soundcard.dtbo codama-soundcard-overlay.dts dtc: invalid option -- '@' Usage: dtc [options] <input file> Options: -[qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv] -q, --quiet Quiet: -q suppress warnings, -qq errors, -qqq all -I, --in-format使用されている Kernel が 4.4.132+ となっている 2.0.11 と 2.1.16 では、linux-headers-4.4.132+_4.4.132+-1_armhf.deb を使用する事が可能です。Input formats are: dts - device tree source text dtb - device tree blob fs - /proc/device-tree style directory -o, --out Output file -O, --out-format Output formats are: dts - device tree source text dtb - device tree blob asm - assembler source -V, --out-version Blob version to produce, defaults to 17 (for dtb and asm output) -d, --out-dependency Output dependency file -R, --reserve Make space for reserve map entries (for dtb and asm output) -S, --space Make the blob at least long (extra space) -p, --pad Add padding to the blob of long (extra space) -b, --boot-cpu Set the physical boot cpu -f, --force Try to produce output even if the input tree has errors -i, --include Add a path to search for include files -s, --sort Sort nodes and properties before outputting (useful for comparing trees) -H, --phandle Valid phandle formats are: legacy - "linux,phandle" properties only epapr - "phandle" properties only both - Both "linux,phandle" and "phandle" properties -W, --warning Enable/disable warnings (prefix with "no-") -E, --error Enable/disable errors (prefix with "no-") -h, --help Print this help and exit -v, --version Print version and exit Error: unknown option Makefile:21: recipe for target 'codama-soundcard.dtbo' failed make: *** [codama-soundcard.dtbo] Error 1
これは、TinkerBoard の github から入手できます。
https://github.com/TinkerBoard/debian_kernel/releases/tag/2.0.8
これを入れた後に、dtc をパスの通った場所に配置してください。
$ sudo cp -p /usr/src/linux-headers-$(uname -r)/scripts/dtc/dtc /usr/bin
Tinker OS 2.0.11 と 2.1.16 については、linux-headers-4.4.132+_4.4.132+-1_armhf.deb が利用できるので良いのですが、
2.1.11 だけが何故か異なります。2.1.11 の uname の結果はこうなっています。何故か "+" がついていないのです。
$ uname -a Linux tinkerboard 4.4.132 #1 SMP Thu Mar 5 07:47:01 UTC 2020 armv7l GNU/Linux2.0.11 と 2.1.16 ではこうなります。
$ uname -a Linux tinkerboard 4.4.132+ #1 SMP Wed Aug 21 19:15:55 CST 2019 armv7l GNU/Linux
$ uname -a Linux tinkerboard 4.4.132+ #8 SMP Thu Aug 13 08:51:08 UTC 2020 armv7l GNU/Linux
おそらく、4.4.132+ の dtc を持ってきてもいいのですが、少し気持ちが悪いです。
真面目に、Kernel source を持ってきて、ビルドを通すのを今回行いました。
linux-headers パッケージが無い場合には、こういう手順になりました。
開発系パッケージ追加
$ sudo apt update && sudo apt install -y git-core build-essential bc libssl-devKernel ソースコードの入手、イメージバージョン毎に tag は一応着いていそう。
$ wget https://github.com/TinkerBoard/debian_kernel/archive/tinker_board-debian-2.1.11.tar.gz $ tar zxf tinker_board-debian-2.1.11.tar.gzdtc をビルドする。(Kernel のビルドをしてしまうと時間が勿体ないので、scripts のみビルドを通す)
そして、dtc をパスの通った場所に配置。
$ cd debian_kernel-tinker_board-debian-2.1.11/ $ make ARCH=arm miniarm-rk3288_defconfig $ make ARCH=arm -j6 scripts $ sudo cp -p ./scripts/dtc/dtc /usr/binCodama のモジュールを作る時に必要なヘッダーファイル系の準備 (たぶんコレでいいと思ってる)
$ make ARCH=arm -j6 modules_prepare
$ sudo rm /lib/modules/$(uname -r)/source $ sudo ln -s ~/debian_kernel-tinker_board-debian-2.1.11 /lib/modules/$(uname -r)/source $ sudo rm /lib/modules/$(uname -r)/build $ sudo ln -s ~/debian_kernel-tinker_board-debian-2.1.11 /lib/modules/$(uname -r)/buildあとは、ここ
の README.md に従えば導入できます。
codama_i2c 等のユーティリティについては、ユカイ工学さんの github で公開されているものが利用できます。
https://github.com/YUKAI/codama-doc-r0/
ただし、i2cデバイス番号が異なるので、古いのもを入手する必要があります。
commit id が cf0ad5e8f50b3e34bb9ffd5a24dcef61ffbc04a2 の時のものが必要になります。
Raspberry Pi 4Bで、メモリも増えたため、あえて Tinker Board S を利用する事は減っている気もします。
ライセンスや、ボードの保証等を考えると、商用利用であればまだありそうとも言えますが、
既に、Tinker Board S の後継である Tinker Board 2、Tinker Board 2S が発表されていますし、Tinker Board S 自体は収束方向ですかね。
Tinker Board 2、Tinker Board 2S は、お値段しそうなので、運良く入手できたら対応しますかねぐらいの気持ちです。