カメラ、というか動画をいじろう、ということを前から思ってて、カメラモジュールも持ってるものの、なかなか手をつけられずにおりました。手元のボードコンピュータたち、カメラI/F、いわゆるCSIがあるのは、ラズパイ3Bと、PineA64なんですが、ラズパイは言わずと知れた「指定センサ以外はまず使えない」、A64は別の仕事をしている関係で容易に使えず。ということで、何かないかなー、A64は8bitパラレルCSIはOKだけどMIPIは使えないなーと思ってた所に、次の2つを見つけました。
別段新登場、ということではなく、今までそういう目で探してなかった、ということなんですが、一つはM1n、もう一つはLichee Zero Dock、どちらもSipeed製。2枚合わせてもラズパイ買うより安い…(いや比べる事自体正しくない)。で、M1nは、Linuxはちょっと難しそうでRTOS必要そう、かつ、目的がちょっと違うので、一旦置いておいて、Licheeからいじってみることにしました。
Lichee Zero Dock
Lichee Pi Zero? Lichee Zero? どっちでも良いみたいですが、それをコアにして、すこーし周辺I/Fコネクタを追加したもの、と言って良いかと思います。ただ、Zeroはブレボに刺して使うイメージですが、Dockはさらにコネクタなどが乗っている都合で、ブレボに刺してもあんまり嬉しい状況にはなりません。Ethernetを使えてほしかった関係で、ZeroではなくZero Dockを調達してます。そういうわけで、最低限必要そうなUARTだけとりあえず引きだすためのボードを用意しました。電源も、UARTのところから引けるんですが、母艦側がちょっと苦しいので、5V電源を追加してあります(UART側は当然外します)。以下では省いてるんですが、最初、ちょっとLCDをつないでみたときは、LCDバックライト依存性あるとはいえ電源が窮屈だったようでした。
OSと初期設定
Sipeedのサイト から mindb_dd.tar.gzをダウンロード、tar xfして出てくるlichee_zero-mindb_alpha.ddをmicroSDにdd。起動してみると、このddイメージはDebian Jessieです。
この段階ではethernetは生きていません。でもネットにはつなぎたいので、Wi-Fiどうかなと思いTL-WN725NをUSBにつなぐと、r8188euで認識してくれました。
『最小パッケージ』なので、NetworkManagerとかいないので、interfacesとwpa_suppliant.confを作成してまずは動かします。
wpa_supplicant.confのスケルトンはあるので、wpa_passphraseでssidとパスコードからpskを作らせます。
/etc/network/interfacesにwlan0を追加し、wpa-confがwpa_supplicant.confを示すようにしてやります。これでネットワークにつながりました。
armbianみたいにパーティション自動最大化とかはしてくれないので、マニュアルでパーティションサイズ変更してresize2fs実施します。
fdisk /dev/mmcblk0
/用パーティション一旦削除して、改め最大値で確保します。
write→quit→reboot(partprobeとかないので)
立ち上がり後resize2fs -f /dev/mmcblk0p2
Lichee Zeroには、内蔵メモリ64Mしかないのでswap足しておきます(128M追加)。
dd if=/dev/zero of=<filename> bs=1M count=128
swapon
/etc/fstabに追加して再起動時でも有効にします。
さすがにDebian JessieはLTS的にも切れてるので、せめてstretchにupgrade。カーネルは4.10.2のまま。stretchにupgradeするときには、debian-keyringのupdateが必要なことを忘れがち、ということと、多分、Wi-Fiがfirmware必要なので、追加しておきます(大丈夫だったかもしれない)。しかし、ethernetが使えないのは痛い…。
ethernet
サイズ的な大小はあるにせよ、こういう「規模」が当たり前だった昔ならいざ知らず、いまだとこのクラスのマシン用イメージはセルフではなくクロスビルドが普通だよな…と思いつつ、こちらのサイトに、ethernetを有効とする手順紹介があるので、それを元にセルフビルドしてやります。中国語は読めないので、Web翻訳使いながら読みます。
u-bootはdenxではなく同じサイトにリンクがあるこちらとこちらを使います。
makeできたら次で書き込む。
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
u-boot直しただけではu-bootレベルで触れる、と言うだけなので、Linux側も、ドライバ、デバイスツリーを修正します。そのため、カーネルソース、次を利用。
時間計らなかったけど半日は掛からなかったようです。
make install modules_installではなく、dtbとzImageを/bootにcpしてreboot → お、LEDが点灯& ethernet稼働!
カーネルをより新しく…
これで4.12.0-rc1。しかし、それにしてもこのカーネルはちょいと古く、linux-sunxiサイト見ても、主目的であるカメラサポートは5.0以降となっている。そのため、このイメージはここでストップして、改めて5.10のイメージ作成にチャレンジする。
最新u-bootにすべきかもしれないけど、device treeが結構違っているようで、マージには相当手間が掛かりそうなので一旦捨て置いて、Linuxカーネルソース5.10.42をcloneして、sunxi_defconfigしてbuild、ほぼ5時間で終了。
/bootにdts、zImageをcpして、make modules_install、rebootで5.10.42は起動しました。
なお、カーネルdevice treeには、u-boot同様の変更が必要です(Linuxサイドが新しいので、一部、語を変更する必要がある。)
次の問題
だが、USBが動いていない模様で、u-bootで有効にできていないようであることが判明。u-bootを使った確認方法。
U-Boot 2017.01-rc2-00057-g32ab1804cd-dirty (Jun 13 2021 - 15:14:29 +0900) Allwinner Technology
CPU: Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM: 64 MiB
MMC: SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment
Setting up a 480x272 lcd console (overscan 0x0)
dotclock: 10000kHz = 10000kHz: (1 * 3MHz * 20) / 6
In: serial@01c28000
Out: serial@01c28000
Err: serial@01c28000
Net: phy interface0
eth0: ethernet@1c30000
starting USB...
USB0: musb_init_controller failed with status -22
probe failed, error -5
USB error: all controllers failed lowlevel init
Hit any key to stop autoboot: 0
=>
ということなので、ここのレベルでUSBを有効にできていない。mindbにあるu-bootではちゃんと使えているのだが、.configがなく…。
結構、config様々試してみたんですが動いてくれず。素人目なので確実ではないけども、u-bootのUSBまわりを追ってみると、V3sのサポートが足らないような気がする。Ethernetについても、最新のu-bootでもまだのようなので(patchが流れていた)、V3s自体、まだ十分にサポートされてはいないようです。
がまぁ、ネットワークは動いていることだし、カメラをつなぐことを考えてみたいと思います。
とりあえず今回ここまで。
0 件のコメント:
コメントを投稿