nishioka
2023年8月9日 17時01分
お世話になっております。
iot-g4でspiの設定を行ったのですが、armadilloで/dev/spidev0.0が作成されません。
以下を参照しながら作業を行いました。
https://armadillo.atmark-techno.com/howto/aiotg4-connect-g4-spi
https://armadillo.atmark-techno.com/forum/armadillo/14913
1. at-dtwebを用いて、ECSPI1を設定しました。
2. kernelConfigの"User mode SPI device drive support"は有効になっています。
3. mkswu/at-dtweb-Armadillo-IoT_G4/at-dtweb.desc からupdate.swuを作成しました。
4. 作成したswuでアップデートを行いましたが、作成されませんでした。
何か手順が抜けているのでしょうか。
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
設定.png |
コメント
nishioka
at_ohsawa様
ありがとうございます。
"cat /boot/overlays.txt" の確認
armadillo:~# cat /boot/overlays.txt fdt_overlays=armadillo_iotg_g4-aw-xm458.dtbo armadillo_iotg_g4-at-dtweb.dtbo
"find /sys/firmware/devicetree/base |grep ecspi1"の確認
armadillo:~# find /sys/firmware/devicetree/base |grep ecspi1 /sys/firmware/devicetree/base/soc@0/bus@30000000/pinctrl@30330000/ecspi1grp /sys/firmware/devicetree/base/soc@0/bus@30000000/pinctrl@30330000/ecspi1grp/fsl,pins /sys/firmware/devicetree/base/soc@0/bus@30000000/pinctrl@30330000/ecspi1grp/phandle /sys/firmware/devicetree/base/soc@0/bus@30000000/pinctrl@30330000/ecspi1grp/name /sys/firmware/devicetree/base/__symbols__/ecspi1
アップデートの確認
base_os 3.17.4-at.8 boot 2020.4-at16 cwm 1 extra_os.at_dtweb 3 extra_os.cwm 1 extra_os.karnel 2 extra_os.kernel 5.10.82-3 extra_os.start 1 extra_os.tmcUpdate 12
問題なくアップデートされていることを確認しました。
モジュールが付属しているのか確認
armadillo:~# uname -r 5.10.180 <code> armadillo:# modprobe spidev #spidevの読み込み <code> armadillo:~# modprobe spidev modprobe: can't change directory to '5.10.180': No such file or directory
となりました。kernelのバージョンが問題なのでしょうか。
以上、よろしくお願い致します。
at_dominique.m…
nishiokaさん、
横からすみません、
マルティネです。
> armadillo:~# modprobe spidev > modprobe: can't change directory to '5.10.180': No such file or directory
> となりました。kernelのバージョンが問題なのでしょうか。
カーネルを自分でインストールしましたが、モジュールはインストールしてないようです。
Armadillo Base OS で使っているカーネルは様々なハードウェアを対応するためにモジュールを使っていますので、インストールするときにモジュールも必ずインストールするようにしてください。
マニュアルに説明されている「ビルドしたカーネルは、以下に示すどちらかの方法でインストールしてください。」で説明されている手順を参考にできます:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
ちなみに、spidev だけでしたら標準のカーネルでもモジュールを提供しています。
「abos-ctrl restore-kernel」でカーネルを元に戻して、再起動すれば spidev を使えるようになると思います。
(標準で提供していない、あるいはカスタムなモジュールを使用している場合はもちろん自分のカーネルでも使えます)
よろしくお願いします。
nishioka
マルティネ様
ありがとうございます。
> Armadillo Base OS で使っているカーネルは様々なハードウェアを対応するためにモジュールを使っていますので、インストールするときにモジュールも必ずインストールするようにしてください。
> マニュアルに説明されている「ビルドしたカーネルは、以下に示すどちらかの方法でインストールしてください。」で説明されている手順を参考にできます:
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
マニュアル「swupdate でインストールする」を参考にしてアップデートを既に行っています。
以下がアップデート用のdesc内容です。
# set version once for all below swdesc elements unless # forced with --version swdesc_option component=extra_os.kernel version=5.10.82-3 # write over files in /boot swdesc_files --dest /boot "Image" "armadillo_iotg_g4.dtb"
> ちなみに、spidev だけでしたら標準のカーネルでもモジュールを提供しています。
> 「abos-ctrl restore-kernel」でカーネルを元に戻して、再起動すれば spidev を使えるようになると思います。
> (標準で提供していない、あるいはカスタムなモジュールを使用している場合はもちろん自分のカーネルでも使えます)
"abos-ctrl restore-kernel"を行ったところ、
armadillo:~# abos-ctrl restore-kernel Cloning current partition to other side. Rollback in case of error. Starting clone to /dev/mmcblk2p2 Reusing up-to-date rootfs Updating appfs snapshots Reusing up-to-date bootloader Rollback clone successful Removing old kernel Nothing to do, none of the requested files exist: /boot/Image ERROR: Could not remove kernel image
となりエラーになります。
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
kernel.png |
at_dominique.m…
nishiokaさん、
> マニュアル「swupdate でインストールする」を参考にしてアップデートを既に行っています。
> 以下がアップデート用のdesc内容です。
> # set version once for all below swdesc elements unless > # forced with --version > swdesc_option component=extra_os.kernel version=5.10.82-3 > > # write over files in /boot > swdesc_files --dest /boot "Image" "armadillo_iotg_g4.dtb"
申し訳ございません、この desc ファイルはすごく古くて、2021年12月以前のバージョンでモジュールをまだインストールしていませんでした。
マニュアルも今年の3月に明確にモジュールのインストールの話を追加して、使用中のカーネルバージョンからみるとちょうど同じころでしたね…お手数をおかけしました。
ATDE で「sudo apt update && sudo apt install mkswu」で mkswu をアップデートして、新しい手順にしたがえばインストールされます…が、今回は標準カーネルでよさそうなのでそちらの手順を続いてみましょう。
> "abos-ctrl restore-kernel"を行ったところ、
> armadillo:~# abos-ctrl restore-kernel > Cloning current partition to other side. Rollback in case of error. > Starting clone to /dev/mmcblk2p2 > Reusing up-to-date rootfs > Updating appfs snapshots > Reusing up-to-date bootloader > Rollback clone successful > Removing old kernel > Nothing to do, none of the requested files exist: /boot/Image > ERROR: Could not remove kernel image
> となりエラーになります。
/boot/Image がなければ起動できないと思いますが、手動で編集しましたか?今後のバージョンでエラーせずに続くように直します。
続いても問題ないので、お手数ですがスクリプトの続きを Armadillo に手動に実行してください:
sed -i -e '/POST \/\(boot\|lib\/modules\)$/d' /etc/swupdate_preserve_files && persist_file /etc/swupdate_preserve_files persist_file -a update persist_file -a del 'linux-at-*' persist_file -dr /lib/modules persist_file -a add linux-at-x2@atmark
今の状態では起動できなくなっていると思いますので、最後のコマンドだけでも成功させるまで再起動しないでください。
コマンドを実行した後に、 ls /boot/Image
でファイルがあるはずです。
よろしくお願いします。
nishioka
マルティネ様
ありがとうございます。
> 続いても問題ないので、お手数ですがスクリプトの続きを Armadillo に手動に実行してください:
>
> sed -i -e '/POST \/\(boot\|lib\/modules\)$/d' /etc/swupdate_preserve_files && persist_file /etc/swupdate_preserve_files > persist_file -a update > persist_file -a del 'linux-at-*' > persist_file -dr /lib/modules > persist_file -a add linux-at-x2@atmark >
を行ったところ、spidev0.0 が作成されました。ありがとうございます。
> ATDE で「sudo apt update && sudo apt install mkswu」で mkswu をアップデートして、新しい手順にしたがえばインストールされます… とのことですが、
atmark@atde9:~$ sudo apt update && sudo apt install mkswu [sudo] atmark のパスワード: ヒット:1 http://ftp.jp.debian.org/debian bullseye InRelease 無視:2 http://download.atmark-techno.com/debian bullseye InRelease ヒット:3 http://ftp.jp.debian.org/debian bullseye-updates InRelease 取得:4 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB] ヒット:5 http://download.atmark-techno.com/debian bullseye Release ヒット:6 http://packages.microsoft.com/repos/code stable InRelease 48.4 kB を 3秒 で取得しました (13.9 kB/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 パッケージはすべて最新です。 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 mkswu はすでに最新バージョン (4.14.1-1) です。 以下のパッケージが自動でインストールされましたが、もう必要とされていません: linux-headers-5.10.0-20-amd64 linux-headers-5.10.0-20-common linux-image-5.10.0-20-amd64 これを削除するには 'sudo apt autoremove' を利用してください。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
最新の状態でした。手順が変わっているとの事ですが、マニュアルに記載されている
/usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc
の事でしょうか。
以上。よろしくお願い致します。
at_dominique.m…
nishiokaさん
>手順が変わっているとの事ですが、マニュアルに記載されている
> /usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc
> の事でしょうか。
はい、そのコマンドをカーネルのビルドディレクトリで実行することで ~/mkswu/kernel.desc が生成されて、 ~/mkswu/kernel ディレクトリにカーネルの Image, dtb/dtbo とモジュールがインストールされます。
前の手順のように(新しい) /usr/share/mkswu/examples/kernel_update_plain.desc を手動にコピーして、コメントに記載されているコマンドで必要なファイルをインストールしてもいいですが、...install.sh のスクリプトで色々確認していますので推奨します。
よろしくお願いします
at_dominique.m…
nishiokaさん
連続の返事ですみません。
自分のカーネルをインストールすることに問題があるわけではありませんが、参考までになぜビルドしているかを教えていただけますでしょうか?
spidev だけでしたら先ほど確認できましたので、他の(標準のカーネルにない)モジュールが必要ということでしょうか?
それか swu を使って他の Armadillo を救いたいだけでしょうか?
後者でしたら、カーネルを戻す .desc ファイルを準備しますのでその方がいいかもしれません。
(Armadillo Base OS を更新しているように見えますので、カスタムなカーネルが不要の場合にカーネルの更新も使えるようにした方が脆弱性などの面で便利だと思います)
よろしくお願いします。
nishioka
マルティネ様
> 連続の返事ですみません。
> 自分のカーネルをインストールすることに問題があるわけではありませんが、参考までになぜビルドしているかを教えていただけますでしょうか?
>
> spidev だけでしたら先ほど確認できましたので、他の(標準のカーネルにない)モジュールが必要ということでしょうか?
> それか swu を使って他の Armadillo を救いたいだけでしょうか?
>
> 後者でしたら、カーネルを戻す .desc ファイルを準備しますのでその方がいいかもしれません。
> (Armadillo Base OS を更新しているように見えますので、カスタムなカーネルが不要の場合にカーネルの更新も使えるようにした方が脆弱性などの面で便利だと思います)
>
> よろしくお願いします。
EDIDの固定方法とタッチパネルが動作しなかった件でカーネルの設定を変更したためです。
EDIDの固定方法: https://armadillo.atmark-techno.com/forum/armadillo/14580
タッチパネル:https://armadillo.atmark-techno.com/forum/armadillo/15679
手順の件ですが、
atmark@atde9:~/ダウンロード/linux-5.10-5.10.180-r0$ /usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc ERROR: Please build kernel first
となり作成することが出来ません。
linux-5.10-5.10.180-r0/tools/build が存在しますがこの中で行うのでしょうか。
以上、よろしくお願い致します。
at_dominique.m…
nishiokaさん
> EDIDの固定方法とタッチパネルが動作しなかった件でカーネルの設定を変更したためです。
>
> EDIDの固定方法: https://armadillo.atmark-techno.com/forum/armadillo/14580
> タッチパネル:https://armadillo.atmark-techno.com/forum/armadillo/15679
返事ありがとうございます。。。すみませんでした、タッチパネルは私が回答していたのに忘れていました。
色々ありましたね。確かにカスタムなカーネルが必要です。
インストール方法に戻ります。
> atmark@atde9:~/ダウンロード/linux-5.10-5.10.180-r0$ /usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc > ERROR: Please build kernel first
> となり作成することが出来ません。
> linux-5.10-5.10.180-r0/tools/build が存在しますがこの中で行うのでしょうか。
カーネルをビルドしたディレクトリで実行するコマンドで間違いありません。
このエラーメッセージは、(現在・ビルド)ディレクトリに「vmlinux」というファイルが存在しない場合のエラーです。
カーネルをビルドした時に生成されたはずのファイルですが、この 「~/ダウンロード/linux-5.10-5.10.180-r0」ディレクトリはまだビルドしてないディレクトリでしょうか?
必要なコンフィグ変更/確認 (「make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
」)を行った後に
「make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j5
」を実行すると必要なファイル(vmlinux, arch/arm64/boot/Image, モジュールファイルなど)が生成されますので、もう一度ビルドしてみてください。
その後にまたインストールスクリプトがエラーしていたらまた聞いてください。
よろしくお願いします。
nishioka
at_dominique.m…
at_ohsawa
2023年8月9日 18時53分
at-dtwebの出力したdtboとdescを使ってmkswuしたということですね。
作業そのものより、実機の状態が不明なので、次の確認をしてみてください。
(この記述が無ければ、at-dtwebの生成したdtboが読み込まれません)
(ここで、最後の行の./__symbols__/ecspi1だけしか無ければ、dtboが正しく生成されていないか
何か古い物をswuに入れた可能性が有ります。)
上の状態になっていなければ、device-treeの問題です。
mkswuしているものやswupdateの実行に成功したかどうかの確認をしてみてください。
ここまで問題なければ後はkernel本体側ですが、
実はspidevはカーネルモジュールが既にabosに付属しているため再ビルド不要です。
(今年の3月のリリースから付属しています、もしそれ以前のバージョンであれば、
このモジュールと関係なくABOSをアップデートしたほうが良い程度には古いです)
モジュールが付属しているのか確かめる方法
ビルド済みのモジュールが付属しているABOSの中では、次の手順でspidevを有効化して、永続化できます。
再起動後にモジュールが有効になっているかlsmodで確認できます。
ここまで完了できていれば/dev/spidev0.0が存在しているはずです。