Linux Kconfig
Kconfig
kernelにリンクされるモジュールを見つける方法。
基本的には.configにconfigが保存されており、configの内容を元にリンクされるモジュールが決まる。
.config から対象のモジュールがリンクされているかを知る方法は、.configを読むしかない?
Device Tree
config通りにカーネルにリンクされたかを知る方法は?
リンクされても実際にアクティブなドライバを知る方法は?
dmesgコマンドの出力を見るのが一番早い。但し、未搭載デバイスのドライバ起動もあり、詳細はドライバを確認する。
あるいは、デバイスツリーを使って、
strings /proc/device-tree/compatible
cat /proc/device-tree/axi@0/compatible
等により、ツリー上のデバイスドライバを確認。
ref
device tree
https://qiita.com/koara-local/items/ed99a7b96a0ca252fc4e#_reference-7fb61179985d53e7a181
https://qiita.com/iwatake2222/items/0d13142863d9ed064e41
http://nahitafu.cocolog-nifty.com/nahitafu/2017/12/menuconfig-2062.html
https://tnishinaga.hatenablog.com/entry/2016/04/11/035548
https://www.anarg.jp/personal/t-tugawa/note/linux/kernel_restruct.html
Jetson nano kernel compile
kernel self compile
全体の流れ
- swap拡大&max perf
- Download and expand kernel sources
- .config 取り出し & 編集
- build & install
全体で4ステップ。
configやソースを変更したら、4. build&installを繰り返す。
作業一覧
# 1. swap拡大 & max perf wget http://github.com/JetsonHacksNano/installSwapfile cd installSwapfile ./installSwapfile.sh sudo jetson_clocks # 2. Download & Expand top=~/nano dl=$top/dl srclink=https://developer.nvidia.com/embedded/dlc/l4t-sources-32-1-jetson-nano srcpkg=l4t-sources-32-1-jetson-nano.tar.gz #srcpkg related ksrc=public_sources/kernel_src.tbz2 mkdir -p $dl cd $top wget $srclink -O $dl/$srcpkg tar jxvf $dl/$srcpkg tar jxvf $ksrc # 3. get config & edit cd kernel/kernel-4.9 zcat /proc/config.gz > .config # config 編集 # as you like # 4. build & install ## now in $top/kernel/kernel-4.9 make oldconfig make prepare make modules_prepare ## build に1時間程度かかる make -j4 Image && make -j4 modules ## install sudo make modules_install sudo cp arch/arm64/boot/Image /boot/Image # 最後にリブート sudo reboot
ref
Jetson and Tegra names
tegra
Jetson | Tegra | Devkit | rule | note |
---|---|---|---|---|
K1 | 132/K1-64 | ... | 28nm | Denver,nexus 9 tablet |
TX1 | 210 X1/erista | p2597-2180 | 20nm | nintendo switch, CortexA57x4/53x4 |
TX2 | 186 X2/Parker | p3310-1000 | 16nm | Denver2 |
Xavier | 194 | 12nm | carmel | |
Nano | 210 | p3448-0000 | TX1base |
ref
https://www.rt-shop.jp/blog/archives/11277
https://en.wikichip.org/wiki/nvidia/tegra/xavier
note
Jetson TX1/TX2 devkitのCarrier Boardは同じ。
tx2
hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-c00-00-auo-1080p-edp.dts
DTS name
board-som-ver-xxx.dts
shのステップ制御
shのステップ制御
インストールスクリプトや、試験スクリプト作成時、エラーが起きた行を修正し、エラーの行から再実行したい場合がないだろうか。
そんな時、一部をコメントアウトしたり、コピペしたりしていませんか。
そんな時に役立つshのステップ実行用関数。
作り方
shスクリプトファイルをfooとする。
sh スクリプト
- s && 試験コード1
- s && 試験コード2
- ...
実行方法
- foo -s 23
ステップ23 から実行。
先頭にs && を追加するのが大変とは言え、個別にコメントを入れるよりはマシ。
コマンド全体を文字列として受け取り、行単位に実行する方法もあるが、大掛かりになり過ぎるかもしれない。
s関数
_start=0 _end=0 _to=0 s (){ _step=$(( $_step + 1)) echo "step $_step" [ $_step -lt $_start ] && return 0 [ $_step -gt $_end ] && return 0 return 1 } # 引数処理 handleopts (){ while getopts hs:e: OPT ; do case $OPT in h) usage ; exit 0;; s) _start=$OPTARG ;; e) _end=$OPTARG ;; *) usage ;; esac done shift $(( $OPTIND - 1 )) } usage(){ echo "usage: cmd [options] params..." }
Jetson nano usb boot
usb boot
Jetson Nano のUSB bootには、usb3 firmware とxusbドライバをカーネルに盛り込む必要がある。
全体の流れ。
- kernel source download
- get kernel config
- get usb firmware
- make menuconfig & build & install
- create ext4 and copy on usb
- edit extlinux.conf
kernel source
Jetson-Nano-public_sources.tbz2
get config
zcat /proc/config.gz > .config
get firmware
cp /lib/firmware/tegra21x_xusb_firmware ./firmware/
make menuconfig
kernel config
- sudo apt-get install libncurses5-dev
- make menuconfig
Device Drivers -> Generic Driver Options -> "External firmware blobs to build into the kernel binary," -> "tegra21x_xusb_firmware"
build and install kernel
カーネルのビルドとインストール。
cd ~/kernel/kernel-4.9 make -j5 sudo make modules_install sudo cp /boot/Image /boot/Image.dist sudo cp arch/arm64/boot/Image /boot
ここでreboot。
create ext4 and copy on usb
usb flashにパーティションを作成し、rootfsをコピー。
# clear usb flash sudo dd if=/dev/zero of=/dev/sda bs=1M count=1 sudo cfdisk /dev/sda # root とswapの2つのgptパーティションを作成。 # 24GB/root + 6GB/swapの例 sudo parted /dev/sda print sudo parted /dev/sda mklabel gpt sudo parted /dev/sda mkpart root ext4 1MB 24GB sudo parted /dev/sda mkpart swap linux-swap 24GB 30GB # copy rootfs sudo mkfs.ext4 /dev/sda1 sudo mkswap /dev/sda2 sudo mkdir /mnt/root sudo mount /dev/sda1 /mnt/root sudo mkdir /mnt/root/proc sudo apt -y install rsync sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc / /mnt/root
edit extlinux.conf
sudo sed -i 's/mmcblk0p1/sda1/' /boot/extlinux/extlinux.conf # 以下は不要。 sudo sed -i 's/rootwait/rootwait zswap.enabled=1/' /boot/extlinux/extlinux.conf
上記のzswap.enabled=1はドライバを入れた場合だが、本記事では省略しているので不要。
ここでreboot
最後にswap partition
先のrebootで問題なければ、
echo "/dev/sda2 none swap \ defaults 0 1" | sudo tee -a /etc/fstab cd ~ wget https://raw.githubusercontent.com/Syonyk/raspberry_pi_scripts/master/zswap.sh
zswap は、ドライバを入れていれば。
参考元にはzswapドライバを入れる手順があるが省略。
ref
https://syonyk.blogspot.com/2019/04/nvidia-jetson-nano-desktop-use-kernel-builds.html?m=1
機械学習/DL, 推論用モデル、フレームワーク、DNN、データ
推論モデル
- Tensorflow
- keras
- ONNX caffe, pytorch, mxnet, etc
Ftamework
- keras
- Pytorch
- Tensorflow
- Caffe
- chainer
- Mxnet
- Therano
- CNTX
Library
- cuDNN CUDA用DNNライブラリ
- cuBLAS CUDA用代数ライブラリ
- TensorRT nvidiaのDL用ライブラリ
Language
データ、ネットワーク、実装
- imagenet
- yolo/darknet 物体検知
- MNIST 手書き数字認識データセット
- CIFAR-10 画像データセット
- mobilenet
- SSD 物体検知
- coco Common Object in context データセット
- styleGAN 画像生成
- VGGnet : 物体認識
- googlenet
- alexnet 2012 ILSVRC Alex Krizhevskyさん作, SuperVisionとも呼ばれる。
学会、コンペ系
ILSVRC : ImageNet Large Scale Visual Recognition Competition
- 2012 alexnet 5cnv, 3pool, 3fc
- 2013 ZFnet
- 2014 Googlenet
補足
時間があれば時間軸で整理したい。
参考
TensorRT
https://developer.nvidia.com/tensorrt
CIFR-10
Raspberry Pi 4 B
2019/6/24 pi 4B 発表
価格
- 1GB $35
- 2GB $45
- 4GB $55
- 電源 $8
- ケース $5
- kit $120
Pi 3B+との比較
Pi4B | Pi3B+ | Pi3B | |
---|---|---|---|
発表 | 2019/6/24 | 2018/3/14 | |
wifi | 802.11ac | ← | |
Blutooth | 5.0 | 4.0? | |
HDMI | 2xTypeD/micro HDMI | 1xTypeA | |
LAN | 1G | 1G/実効300M | 100M |
usb dev | TypeC | MicroB | |
USB Host. | 3.0x2,2.0x2 | 2.0x4 | |
SD | MicroSDx1 | ← | |
CSI | o | o | |
DSI | o | o | |
CPU | 1.5Ghz A72x4 | 1.4GHz A53x4 | 1.2Gx4 |
SoC | BCM2711 | BCM2837B0 | BCM2837 |
mem | LPDDR4 1-4GB | LPDDR2 1GB | |
PoE | jumper | ← | x |
Power | 5V 3A | 5V 2.5A | |
他 | 4kx60fps | ||
他 | GLES3.x |
ref
pi4b
https://www.google.com/amp/s/www.gizmodo.jp/amp/2019/06/raspberry-pi4-launch.html
pi3b+
https://www.phileweb.com/sp/review/article/201803/27/2984_3.html