follow me

TinkerOS 2.1.16 までのCodama動作確認しました


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 
        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
使用されている Kernel が 4.4.132+ となっている 2.0.11 と 2.1.16 では、linux-headers-4.4.132+_4.4.132+-1_armhf.deb を使用する事が可能です。
これは、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/Linux
2.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-dev
Kernel ソースコードの入手、イメージバージョン毎に 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.gz
dtc をビルドする。(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/bin
Codama のモジュールを作る時に必要なヘッダーファイル系の準備 (たぶんコレでいいと思ってる)
$ 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 2Tinker Board 2S は、お値段しそうなので、運良く入手できたら対応しますかねぐらいの気持ちです。
TinkerOS 2.1.16 までのCodama動作確認しました | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。