目次
Jetsonシステム関連
このページでは、 Qiitaなどに投稿する前のメモ書きを書いておく。
センサドライバ関連
センサドライバを開発した際に苦労したことを書きたいところだが、仕事上の情報が入ってしまうのと、いまいち、 ひとに伝えるほどわかっていないことが多いので、、未だに書けず。
カーネルのクロスビルドの32.6.1での確認
Jetson Nanoのクロスビルド環境の構築(Qiita)
で紹介した内容を、L4T 32.6.1の環境で、同じことをやる。 そのときにやったことを、ここにメモ書きする。
まず、SDK Managerのアップデート。
いつも、HeroBoxのデスクトップ上に出ていた、SDK Manager version 1.x.x.xxxx is now available。 今日は、1.6.0.8170。今日はUpdate Nowボタンを押して、アップデート開始。 Continueボタン、そして、パスワードを入力すると、しばらくして、
Update successfully! のダイアログ。
そして、
New version is available
New version: JetPack 4.6 Linux
Installed version: JetPack 4.5 Linux
- Install Now
- Later
の選択から、Install Nowのボタンを押す。 SDK ManagerのSTEP 02まで行ったが、前の環境が残っていて、容量が足らない。 一旦手動で、前のバージョンを削除および、カーネルのビルド環境はポータブルHDDにコピー。
カーネルのビルド環境をmvしてしまったため、処理が遅くなってしまった。 固めてからコピーしたらよかった。。。
少し待ってみたが、待ちきれず、途中でやめて削除。
SDK Managerで4.6をダウンロード。ターゲットにFlashするのはSkip。
Jetson Linux R32.6.1 Release Page
L4T Driver Package (BSP) Sources
からソースをダウンロードして展開。 I copied the file kernel-4.9/build_setup.sh from the backup.
Device Treeの記述が若干大きく?変わっている。 tegrat210-p3448-0000-p3449-0000-b00.dtsに直接、tegra210-tc358748.dtsiをincludeし、 ラズパイカメラ用のdtsiファイルのincludeを外した。(それでいけたみたい)
あと、.configはビルドディレクトリに生成されるんだった。
flash.shの実行時に、xmllint not foundと言われた。 apt-get install libxml2-utilsでインストールして、再度、flash.shを実行。
flash完了で、リブートおよびセットアップ。
uname -aで、4.9.253-tegraとバージョンアップされたことが確認できた。
/dev/spidev0.0などが自動的には生成されないが、insmod spidevすればOK。 spidev.koのありかはmodinfo spidevで分かる。
CONFIGSPISPIDEV=m だからだろうが、以前もm指定だった。 何かの依存関係で、自動的にロードされたのか?
ひとまず、CONFIGSPISPIDEV=yとすれば、最初からspidevのデバイスファイルが生成された。 ひとまず、そうしておくか。
Jetson Nanoのルータ化
を参考に検討。
sirius@jetson-nano-05:~$ sudo cp -p /etc/sysctl.conf /etc/sysctl.conf.org sirius@jetson-nano-05:~$ sudo vi /etc/sysctl.conf sirius@jetson-nano-05:~$ diff /etc/sysctl.conf /etc/sysctl.conf.org 28c28 < net.ipv4.ip_forward=1 --- > #net.ipv4.ip_forward=1 sirius@jetson-nano-05:~$ sudo sysctl -p net.ipv4.ip_forward = 1
sirius@jetson-nano-05:~$ sudo apt install iptables-persistent パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: apt-clone archdetect-deb bogl-bterm busybox-static cryptsetup-bin dpkg-repack gir1.2-timezonemap-1.0 gir1.2-xkl-1.0 grub-common kde-window-manager kinit kio kpackagetool5 kwayland-data kwin-common kwin-data kwin-x11 libdebian-installer4 libkdecorations2-5v5 libkdecorations2private5v5 libkf5activities5 libkf5attica5 libkf5completion-data libkf5completion5 libkf5declarative-data libkf5declarative5 libkf5doctools5 libkf5globalaccel-data libkf5globalaccel5 libkf5globalaccelprivate5 libkf5idletime5 libkf5jobwidgets-data libkf5jobwidgets5 libkf5kcmutils-data libkf5kcmutils5 libkf5kiocore5 libkf5kiontlm5 libkf5kiowidgets5 libkf5newstuff-data libkf5newstuff5 libkf5newstuffcore5 libkf5package-data libkf5package5 libkf5plasma5 libkf5quickaddons5 libkf5solid5 libkf5solid5-data libkf5sonnet5-data libkf5sonnetcore5 libkf5sonnetui5 libkf5textwidgets-data libkf5textwidgets5 libkf5waylandclient5 libkf5waylandserver5 libkf5xmlgui-bin libkf5xmlgui-data libkf5xmlgui5 libkscreenlocker5 libkwin4-effect-builtins1 libkwineffects11 libkwinglutils11 libkwinxrenderutils11 libqgsttools-p1 libqt5designer5 libqt5help5 libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediaquick-p5 libqt5multimediawidgets5 libqt5opengl5 libqt5quickwidgets5 libqt5sql5 libqt5test5 libxcb-composite0 libxcb-cursor0 libxcb-damage0 os-prober python3-dbus.mainloop.pyqt5 python3-icu python3-pam python3-pyqt5 python3-pyqt5.qtsvg python3-pyqt5.qtwebkit qml-module-org-kde-kquickcontrolsaddons qml-module-qtmultimedia qml-module-qtquick2 rdate tasksel tasksel-data これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: netfilter-persistent 以下のパッケージが新たにインストールされます: iptables-persistent netfilter-persistent アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 260 個。 13.1 kB のアーカイブを取得する必要があります。 この操作後に追加で 81.9 kB のディスク容量が消費されます。 続行しますか? [Y/n] 取得:1 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe arm64 netfilter-persistent all 1.0.4+nmu2ubuntu1.1 [6,748 B] 取得:2 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe arm64 iptables-persistent all 1.0.4+nmu2ubuntu1.1 [6,340 B] 13.1 kB を 1秒 で取得しました (17.9 kB/s) debconf: delaying package configuration, since apt-utils is not installed 以前に未選択のパッケージ netfilter-persistent を選択しています。 (データベースを読み込んでいます ... 現在 159766 個のファイルとディレクトリがインストールされています。) .../netfilter-persistent_1.0.4+nmu2ubuntu1.1_all.deb を展開する準備をしています ... netfilter-persistent (1.0.4+nmu2ubuntu1.1) を展開しています... 以前に未選択のパッケージ iptables-persistent を選択しています。 .../iptables-persistent_1.0.4+nmu2ubuntu1.1_all.deb を展開する準備をしています ... iptables-persistent (1.0.4+nmu2ubuntu1.1) を展開しています... netfilter-persistent (1.0.4+nmu2ubuntu1.1) を設定しています ... Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service → /lib/systemd/system/netfilter-persistent.service. update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults iptables-persistent (1.0.4+nmu2ubuntu1.1) を設定しています ... man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... systemd (237-3ubuntu10.50) のトリガを処理しています ...
$ sudo apt install iptables-persistent $ sudo su # iptables -t nat -A POSTROUTING -s 192.168.130.0/24 -o wlan0 -j MASQUERADE # iptables-save > /etc/iptables/rules.v4
などとやってみたが、まだうまく行っていない。
デバイスドライバのデバッグ手法(dynamic debug編)
V4L2ドライバあたりのデバッグで、去年やっていたことをもう一度やり直す際に、そのときやっていたdynamic debugの手法を復習しているので、それをここに記録する。
DYNAMIC DEBUGの使い方 - hana_shinのLinux技術ブログ
あたりを参考に。
$ echo file channel.c +p > /sys/kernel/debug/dynamic_debug/control
などとすると、channel.c内のdev_dbgによるデバッグ用ログ出力が有効になる。
カーネルのクロスビルドの32.7.3での確認
Jetson Nanoのクロスビルド環境の構築(Qiita)
で紹介した内容を、Jetson Linux 32.7.3の環境で、同じことをやる。 そのときにやったことを、ここにメモ書きする。これは、後で、Qiitaにて紹介してあげた方がよいかもしれない。
Ubuntu 22.04だとJetson Nanoへのflashまでたどり着けなかったので、Ubuntu 20.04を入れなおして再実行。 os-releaseに小細工をすることは以前の通りで、20.04にするとflashまで行けて、無事、Jetson Nanoの初期セットアップまでうまく行った。
以前に、20.04の時代にflashまで行けていた環境で、その後に22.04にアップグレードしていたが、SDK Manager内で色々とエラーになっていたが、flashはできていたのだが、最初の時点で22.04だとダメだ、という状況のようだ。
https://developer.nvidia.com/embedded/linux-tegra-r3273
から“Driver Package (BSP) Sources”のリンクを辿って、publicsources.tbz2をダウンロード。 kernelsrc.tbz2