1.Lichee RVとは
Lichee RVとは、Sipeed社の超小型SBCです。CPUにはD1chipというRISK Vプロセッサを搭載しています。少し前に同じCPUを搭載したNezhaという比較的リッチなSBCが発売されましたが、Lichee RVは最小限の構成でSBC化し、dockパーツに搭載して機能拡張するという思想のようです。(合体ギミックはロマン)
この小さなボード単体か、1.14inch 135x240dotの液晶ディスプレイとのセットで[購入できます。]
(https://ja.aliexpress.com/item/1005003594875290.html?spm=a2g0o.productlist.0.0.161227daivjPCl&algo_pvid=de3b1aa5-a053-46c5-be67-29cfe28b7878&algo_exp_id=de3b1aa5-a053-46c5-be67-29cfe28b7878-2&pdp_ext_f=%7B%22sku_id%22%3A%2212000026453901221%22%7D&pdp_pi=-1%3B2620.0%3B-1%3B-1%40salePrice%3BJPY%3Bsearch-mainSearch)
まだ入手できていませんが、480×480のタッチパネルディスプレイ付きの「Panel」か、HDMI出力可能のディスプレイ無し「Dock」が発売されていて、機能拡張できるようです。
Panelは、IoTのコントローラーの様な使い方を想定している様です。DockはHDMI出力とGPIOがついていて、RasPiに近い使い方ができそうです。PanelやDockへは、M.2 B-key X 2という見慣れない方法で接続します。
2.起動用MicroSD作成
liche RVはRaspberry Piなどと同様、MicroSD Card(TF Card)から起動します。
目の前にRPiがあるのでこれを使って起動用SDを作りますが、linuxマシンならなんでもいけるはずです。
OSのイメージはこちらで配布されています。いくつかのOSイメージがありますが、今回使用するのは「licheerv_d1_1.14lcd_ub2004.tgz」です。
適当なフォルダでファイルを解凍します。
$ tar zxvf licheerv_d1_1.14lcd_ub2004.tgz
licheerv_d1_ub2004_20220104a/
licheerv_d1_ub2004_20220104a/readme
licheerv_d1_ub2004_20220104a/ub2004_rootfs.img
licheerv_d1_ub2004_20220104a/d1-kernel.toc1
licheerv_d1_ub2004_20220104a/boot0_sdcard_sun20iw1p1.bin
解凍先のフォルダに移動して作業を続けます。
$ cd licheerv_d1_ub2004_20220104a
基本的な起動用SDカードの作り方はreadmeに書かれている通りです。
1. A tf size sd/mmc card (/dev/mmcblk0 here)
2. clean up old disk information
- umount all partition if needed
$ sudo wipefs -a /dev/mmcblk0
3. create a primary partition using fdisk (/dev/mmcblk0p1)
- /dev/mmcblk0p1 for rootfs, used as command line parameter compiled to kernel by now.
- /dev/mmcblk0p1 should be start from sector 81920 (40MB reserved for spl and kernel)
4. write data to sd/mmc
- $ sudo dd if=boot0_sdcard_sun20iw1p1.bin of=/dev/mmcblk0 bs=512 seek=16
- $ sudo dd if=d1-kernel.toc1 of=/dev/mmcblk0 bs=512 seek=32800 status=progress
- $ sudo dd if=ub2004_rootfs.img of=/dev/mmcblk0p1 bs=1M status=progress
このREADMEの内容に沿って作業を進めます。
最初の行はTFサイズのカード(MicroSD)を使えとあります。手元に16GBのMicroSDがありますのでこれを使います。
この作業ではMicroSDへのデータを書き込みを行いますが、RPi自体のOSもMicroSDにインストールされています。間違えて消してしまうと大参事ですので、先にデバイスの状況を確認しておきます。
lsblkコマンドでデバイスを確認すると次の通りでした。mmcblk0というのがRPiの起動用MicroSDで、二つのパーティションに分かれている様です。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
続いて、USBカードリーダーに空のMicroSDをセットしてRPiに挿入して同様に確認すると、
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 14.8G 0 disk
└─sda1 8:1 1 14.8G 0 part /media/pi/BOOT
mmcblk0 179:0 0 29.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
とあります。「sda」というのが新たに挿入したMicroSDで、「sda1」というパーティションがマウントされていることがわかりました。
マウントされているとパーティションを消せないので先にアンマウントします。
$ sudo umount /dev/sda1
パーティションをクリアします。
$ sudo wipefs -a /dev/sda
/dev/sda: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sda: calling ioctl to re-read partition table: 成功です
続いてパーティションを作成します。
$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xcc24c714.
Command (m for help): n <==新しいパーティションを作成する場合は「n」
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p <==プライマリーを作成するので「p」
Partition number (1-4, default 1): 1
First sector (2048-31207423, default 2048): 163840 <==推奨の81920では動かない様なので倍の16340
Last sector, +/-sectors or +/-size{K,M,G,T,P} (163840-31207423, default 31207423): <==今回は起動させるだけなので残りの領域全部を一つのパーティションにします。
Created a new partition 1 of type 'Linux' and of size 14.8 GiB.
Command (m for help): w <==書き込んで終了するので「w」
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
パーティションが作成できたか確認してみましょう。
blk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 14.8G 0 disk
└─sda1 8:1 1 14.8G 0 part
mmcblk0 179:0 0 29.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
パーティションが作成できていたらOSに必要なファイルを書き込みます。
$ sudo dd if=boot0_sdcard_sun20iw1p1.bin of=/dev/sda bs=512 seek=16
96+0 レコード入力
96+0 レコード出力
49152 bytes (49 kB, 48 KiB) copied, 0.0239097 s, 2.1 MB/s
$ sudo dd if=d1-kernel.toc1 of=/dev/sda bs=512 seek=32800 status=progress
27058688 bytes (27 MB, 26 MiB) copied, 8 s, 3.4 MB/s
59194+0 レコード入力
59194+0 レコード出力
30307328 bytes (30 MB, 29 MiB) copied, 9.07536 s, 3.3 MB/s
$ sudo dd if=ub2004_rootfs.img of=/dev/sda1 bs=1M status=progress
507510784 bytes (508 MB, 484 MiB) copied, 11 s, 46.1 MB/s
496+1 レコード入力
496+1 レコード出力
520318976 bytes (520 MB, 496 MiB) copied, 14.2932 s, 36.4 MB/s
MicroSDをlicheeRVに挿して、USBから電源を供給したら・・・・動きました(^^)
3.ログインして様子を見てみる
デフォルトのuser/passはroot/2183abc
https://twitter.com/SipeedIO/status/1478538364915650563