HiKey の入手と Debian のインストール()

HiKey という 8 コアの 64 ビット ARM を使ったシングルボードコンピュータが到着しました。 発注が 2015/12/13、到着が 2016/01/18 でした。LENOVATORというサイトで HiKey (LeMaker version) 2GB RAM というモデルが、本体 99 ドルと送料で計15673円でした。運送業者の問題で予定より遅れたため、5.5 mm × 2.1 mm のDCプラグを 4.75 mm×1.7 mm に変換するケーブルをオマケとして付けてくれました。 結果的に スイッチサイエンス のほうがちょっと安く入手出来たようですね。



LeMakerHiKey は、 QualcommDragonBoard 410C と同じく、 Linaro が作った 96boards という オープンな規格に合わせて作られたシングルボードコンピュータの一つです。他にも別の SoC を使った 96boards のボードがいくつか予定されているようです。

CPU (Soc) は 下の写真右側の HiSilicon Kirin 620 という ARMv8 アーキテクチャの Cortex-A53 x 8 コア、クロック 1.2GHz という強力なものです。発熱がちょっと気になります。2GB のメモリは写真左側のチップです。



Wifi のモジュールについて、気になる技適マークは下の写真のように取得済みです。スイッチサイエンス によると「無線LANモジュールWL1835MODの工事設計認証番号 201-135370としてのアンテナ、ANT016008LCD2442MA1を搭載しています。」とのことです。



電源として 6.5 - 18V の直流電源を使います。DCジャックコネクタ(PJ-041H)が 日本で標準的に使われている外径5.5㎜/内径2.1㎜のプラグではなく、 外径4.75㎜/内径1.7㎜のプラグを使うタイプなので、 変換アダプタ を使うか、(今回だけのオマケかもしれない)付属のケーブルで変換します。

Dragonboard、HiKey と Raspberry Pi の比較

初代Raspberry Pi Model B、HiKey、Dragonboard 410C を並べてみました。 Raspberry Pi のほうがUSBコネクタと有線LANコネクタのせいで大きく見えますが、基板のサイズは同じです。



ボードの仕様をRaspberry Pi model B+、Raspberry Pi2 model B、Dragonboard 410C、HiKey(LeMaker 2GB) で比べてみます。

ボード Raspberry Pi B+Raspberry Pi2Dragonboard 410CHiKey
チップ名称 BCM2835 BCM2836 SnapDragon410HiSilicon Kirin 620
プロセッサアーキテクチャ ARMv6 ARMv7ARMv8ARMv8
命令セット AArch32 AArch32AArch32+ AArch64AArch32+ AArch64
コア名称 ARM1176JZF-S Cortex-A7 Cortex-A53 Cortex-A53
コア数 1 4 4 8
浮動小数点演算 VFPv2 VFPv4 + NEON VFPv4 + NEON VFPv4 + NEON
クロック 700MHz 900MHz1200MHz1200MHz
メモリ 512MB 1GB 1GB 2GB
GPU VideoCore IVVideoCore IVAdreno 306 400MHzMali450-MP4 500MHz
eMMC --SanDisk 8GBhynyx 8GB
microSD slot 1 1 1 1
USB 2 4 4 2 2
Ethernet 100M100M--
Wifi -- 802.11a/b/g/n 2.4GHz 802.11b/g/n 2.4GHz
Bluetooth -- 4.1 4.1LE
GPS -- 1-


HiKey への Debian のインストール

HiKey へのインストールには Linux マシンを用意して、ブートローダや パーティションテーブル、カーネル、Debianのファイルシステムなどの ファイルを fastboot プロトコールで HiKey に転送する必要があります。 難易度は高めです。 私が Ubuntu 15.10 が動作するLinux PC (デスクトップ) で作業した記録です。 内蔵の 8GB のフラッシュ(eMMC)にインストールしました。 将来的には Debian を内蔵フラッシュにインストールして出荷する予定のようです。

fastboot のインストール

Linux PC で fastboot コマンドが使えるようにインストールします。

$ sudo apt-get install android-tools-fastboot
[sudo] password for jun:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  android-tools-fastboot
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 119 個。
47.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 132 kB のディスク容量が消費されます。
取得:1 https://jp.archive.ubuntu.com/ubuntu/wily/universe android-tools-fastboot
 amd64 4.2.2+git20130218-3ubuntu42 [47.6 kB]
47.6 kB を 0秒 で取得しました (475 kB/s)
以前に未選択のパッケージ android-tools-fastboot を選択しています。
(データベースを読み込んでいます ... 現在 181045 個のファイルと
ディレクトリがインストールされています。)
.../android-tools-fastboot_4.2.2+git20130218-3ubuntu42_amd64.deb を
展開する準備をしています ...
android-tools-fastboot (4.2.2+git20130218-3ubuntu42) を展開しています...
android-tools-fastboot (4.2.2+git20130218-3ubuntu42) を設定しています ...

udev ルールの作成

Linux PC と HiKey を USB で通信させるため、Linuxカーネル用のデバイス管理ツールの udev のためにルールを記述したファイルを作成します。 下の内容の /etc/udev/rules.d/51-android.rules というファイルをを作成します。

# fastboot protocol on HiKey
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0660", GROUP="dialout"
# adb protocol on HiKey
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", ATTR{idProduct}=="1057", MODE="0660", GROUP="dialout"
# rndis for HiKey
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", ATTR{idProduct}=="1050", MODE="0660", GROUP="dialout"

ファイルの入手

https://builds.96boards.org/releases/hikey/linaro/binaries/latest/ から以下の ファイルをダウンロードします。

 boot-fat.uefi.img.gz
 l-loader.bin
 fip.bin
 ptable-linux-8g.img
 nvme.img

また、 https://raw.githubusercontent.com/96boards/burn-boot/master/から hisi-idt.py を ダウンロードします。

ディレクトリの作成

Linux PC に hikey という名前のディレクトリを作って、そこで作業することにします。

jun@werewolf:~$ mkdir hikey
jun@werewolf:~$ cd hikes

l-loader.bin のダウンロード

$ wget https://builds.96boards.org/releases/hikey/linaro/binaries/latest/l-loader.bin
--2016-01-18 20:57:40--
https://builds.96boards.org/releases/hikey/linaro/binaries/latest/l-loader.bin
builds.96boards.org (builds.96boards.org) をDNSに問いあわせています...
 54.85.96.66
builds.96boards.org (builds.96boards.org)|54.85.96.66|:443 に接続しています...
 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 47616 (46K) [application/octet-stream]
`l-loader.bin' に保存中

l-loader.bin
 100%[============================================>]  46.50K   122KB/s   時間 0.4s

2016-01-18 20:57:42 (122 KB/s) - `l-loader.bin' へ保存完了 [47616/47616]

fip.bin のダウンロード

$ wget https://builds.96boards.org/releases/hikey/linaro/binaries/latest/fip.bin
--2016-01-18 20:57:58--
https://builds.96boards.org/releases/hikey/linaro/binaries/latest/fip.bin
builds.96boards.org (builds.96boards.org) をDNSに問いあわせています...
 54.85.96.66
builds.96boards.org (builds.96boards.org)|54.85.96.66|:443 に接続しています...
 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1422568 (1.4M) [application/octet-stream]
`fip.bin' に保存中

fip.bin
 100%[============================================>]   1.36M   421KB/s   時間 3.3s

2016-01-18 20:58:02 (421 KB/s) - `fip.bin' へ保存完了 [1422568/1422568]

ptable-linux-8g.img のダウンロード

$ wget https://builds.96boards.org/releases/hikey/linaro/binaries/latest/ptable-linux-8g.img
--2016-01-18 20:58:12--
https://builds.96boards.org/releases/hikey/linaro/binaries/latest/ptable-linux-8g.img
builds.96boards.org (builds.96boards.org) をDNSに問いあわせています...
54.85.96.66
builds.96boards.org (builds.96boards.org)|54.85.96.66|:443 に接続しています...
接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 17920 (18K) [application/force-download]
`ptable-linux-8g.img' に保存中

ptable-linux-8g.img
 100%[============================================>]  17.50K  93.5KB/s   時間 0.2s

2016-01-18 20:58:13 (93.5 KB/s) - `ptable-linux-8g.img' へ保存完了
[17920/17920]

nvme.img のダウンロード

$ wget https://builds.96boards.org/releases/hikey/linaro/binaries/latest/nvme.img
--2016-01-18 20:58:27--
https://builds.96boards.org/releases/hikey/linaro/binaries/latest/nvme.img
builds.96boards.org (builds.96boards.org) をDNSに問いあわせています...
54.85.96.66
builds.96boards.org (builds.96boards.org)|54.85.96.66|:443 に接続しています...
接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 131072 (128K) [application/force-download]
`nvme.img' に保存中

nvme.img
 100%[============================================>] 128.00K   236KB/s   時間 0.5s

2016-01-18 20:58:28 (236 KB/s) - `nvme.img' へ保存完了 [131072/131072]

boot-fat.uefi.img.gz のダウンロード

$ wget https://builds.96boards.org/releases/hikey/linaro/debian/latest/boot-fat.uefi.img.gz
--2016-01-18 20:58:42--
https://builds.96boards.org/releases/hikey/linaro/debian/latest/boot-fat.uefi.img.gz
builds.96boards.org (builds.96boards.org) をDNSに問いあわせています...
54.85.96.66
builds.96boards.org (builds.96boards.org)|54.85.96.66|:443 に接続しています...
接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 265691 (259K) [application/force-download]
`boot-fat.uefi.img.gz' に保存中

boot-fat.uefi.img.gz
 100%[============================================>] 259.46K   347KB/s   時間 0.7s

2016-01-18 20:58:44 (347 KB/s) - `boot-fat.uefi.img.gz' へ保存完了
[265691/265691]

hisi-idt.py のダウンロード

$ wget https://raw.githubusercontent.com/96boards/burn-boot/master/hisi-idt.py
--2016-01-18 21:06:30--  https://raw.githubusercontent.com/96boards/burn-boot/master/hisi-idt.py
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに
問いあわせています... 103.245.222.133
raw.githubusercontent.com (raw.githubusercontent.com)|103.245.222.133|:443
に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 8567 (8.4K) [text/plain]
`hisi-idt.py' に保存中

hisi-idt.py
 100%[============================================>]   8.37K  --.-KB/s   時間 0s

2016-01-18 21:06:31 (156 MB/s) - `hisi-idt.py' へ保存完了 [8567/8567]

入手したファイルを確認

jun@werewolf:~/hikey$ ls -lt
-rw-rw-r-- 1 jun jun       8567 Jan 18 21:06 hisi-idt.py
-rw-rw-r-- 1 jun jun     265691 Nov 30 09:56 boot-fat.uefi.img.gz
-rw-rw-r-- 1 jun jun      47616 Nov 28 19:55 l-loader.bin
-rw-rw-r-- 1 jun jun    1422568 Nov 28 19:54 fip.bin
-rw-rw-r-- 1 jun jun      17920 Nov 28 19:54 ptable-linux-8g.img
-rw-rw-r-- 1 jun jun     131072 Nov 28 19:54 nvme.img

boot-fat.uefi.img の解凍

jun@werewolf:~/hikey$ gunzip boot-fat.uefi.img.gz
jun@werewolf:~/hikey$ ls -lt boot-fat.uefi.img
-rw-rw-r-- 1 jun jun 67108864 11月 30 09:56 boot-fat.uefi.img

HiKey にブートローダを書き込む

HiKey の電源が切断されていることを確認します。 fastboot をインストールした Linux マシンと HiKey のマイクロUSB端子を USBケーブル(A-microBタイプ)を使って接続します。

マイクロSDソケットの反対側にあるピンヘッダー(J601)の「Auto Power up」と「Boot Select」をジャンパピンでショート(リカバリーモード)した後、HiKey の電源を入れます。

jumper.jpg

名前 ピン 設定 動作
Auto Power up 1-2 ショートオープンの場合は電源ボタンを押すとブート
Boot Select 3-4 ショートショートでブートローダをUSBから書き込み
GPIO3_1 5-6 オープンショートで fastboot

Linux マシン側でUSBデバイスが認識できていることを確認します。

jun@werewolf:~/hikey$ ls /dev/ttyUSB*
/dev/ttyUSB0

dmesg でも確認してみます。

[19212.600018] usb 8-2: new full-speed USB device number 2 using uhci_hcd
[19212.762038] usb 8-2: New USB device found, idVendor=12d1, idProduct=3609
[19212.762043] usb 8-2: New USB device strings: Mfr=1, Product=4, SerialNumber=0
[19212.762046] usb 8-2: Product: \xffffffe3\xffffff84\xffffffb0㌲㔴㜶㤸
[19212.762048] usb 8-2: Manufacturer: 䕇䕎䥎
[19214.043227] usbcore: registered new interface driver usbserial
[19214.043244] usbcore: registered new interface driver usbserial_generic
[19214.043276] usbserial: USB Serial support registered for generic
[19214.055165] usbcore: registered new interface driver option
[19214.055517] usbserial: USB Serial support registered for GSM modem (1-port)
[19214.055638] option 8-2:1.0: GSM modem (1-port) converter detected
[19214.055761] usb 8-2: GSM modem (1-port) converter now attached to ttyUSB0

内蔵フラッシュに書き込み

コマンド「fastboot flash 領域名 ファイル名」で内蔵フラッシュを書き換えます。

l-loader.bin の書き込み

まず最初に fastboot コマンドを使えるようにするため、 Hisilicon boot downloader (参考) を HiKeyに書き込みます。python2.7 が必要です。 参考

jun@werewolf:~/hikey$ sudo python hisi-idt.py -d /dev/ttyUSB0 --img1=l-loader.bin
+----------------------+
 Serial:  /dev/ttyUSB0
 Image1:  l-loader.bin
 Image2:
+----------------------+

Sending l-loader.bin ...
Done

l-loader.bin の書き込みが終了すると、HiKey はfastboot モードに切り替わります。

ptable-linux-8g.img の書き込み

Linux用のパーティションテーブルを書き込みます。

jun@werewolf:~/hikey$ sudo fastboot flash ptable ptable-linux-8g.img
target reported max download size of 268435456 bytes
sending 'ptable' (17 KB)...
OKAY [  0.001s]
writing 'ptable'...
OKAY [  0.003s]
finished. total time: 0.004s
fip.bin の書き込み

ファームウェアパッケージを書き込みます。


jun@werewolf:~/hikey$ sudo fastboot flash fastboot fip.bin
target reported max download size of 268435456 bytes
sending 'fastboot' (1389 KB)...
OKAY [  0.051s]
writing 'fastboot'...
OKAY [  0.063s]
finished. total time: 0.114s
nvme.img の書き込み

jun@werewolf:~/hikey$ sudo fastboot flash nvme nvme.img
target reported max download size of 268435456 bytes
sending 'nvme' (128 KB)...
OKAY [  0.004s]
writing 'nvme'...
OKAY [  0.005s]
finished. total time: 0.009s
boot-fat.uefi.img の書き込み

ブートパーティションとカーネルイメージを書き込みます。

jun@werewolf:~/hikey$ sudo fastboot flash boot boot-fat.uefi.img
target reported max download size of 268435456 bytes
sending 'boot' (65536 KB)...
OKAY [  2.051s]
writing 'boot'...
OKAY [  2.981s]
finished. total time: 5.033s

リブート

HiKey をリブートします。

jun@werewolf:~/hikey$ sudo fastboot reboot
rebooting...

finished. total time: 0.000s

ここまでがリカバリーモードでの作業となります。内蔵フラッシュを完全に書き換えることができます。HiKey の電源を切断します。

Debian イメージの書き込み

HiKey を fastboot モードで起動して、Debian Linux のファイルシステムを書き込みます。

ジャンパー設定を変更して fastboot モードに設定してから、電源を入れます。

名前 ピン 設定 動作
Auto Power up 1-2 ショートオープンの場合は電源ボタンを押すとブート
Boot Select 3-4 オープンショートでブートローダをUSBから書き込み
GPIO3_1 5-6 ショートショートで fastboot

通信状態の確認

Linux PC と HiKey がUSBケーブルを介して通信できていることを次のコマンドで確認します。「0123456789abcdef fastboot」が表示されれば OK です。

jun@werewolf:~/hikey$ sudo fastboot devices
0123456789abcdef  fastboot

OS イメージの確認

ダウンロードした OS のイメージのハッシュ値をイメージファイルと 同じ場所に置いてあるMD5SUMS.txt に書いてある値と比較します。

jun@werewolf:~/hikey$ md5sum hikey-jessie_alip_20151130-387-8g.emmc.img.gz
461f00da49cd0e3f8ad432b1d9e08d02  hikey-jessie_alip_20151130-387-8g.emmc.img.gz

で、一致していることを確認しました。

OS イメージの解凍

jun@werewolf:~/hikey$ gunzip  hikey-jessie_alip_20151130-387-8g.emmc.img.gz

jun@werewolf:~/hikey$ ls -lt *.img'
-rw-rw-r-- 1 jun jun 1804899940  1月 18 21:35 hikey-jessie_alip_20151130-387-8g.emmc.img

OS イメージの書き込み

HiKey の system 領域に LinuxPC から Debianのファイルシステムを書き込みます。

OSイメージは500MB程度に分割して書き込まれます。7分程度かかりました。

$ sudo fastboot flash system hikey-jessie_alip_20151130-387-8g.emmc.img
[sudo] password for jun:
target reported max download size of 524288000 bytes
sending sparse 'system' (511933 KB)...
OKAY [ 31.675s]
writing 'system'...
OKAY [ 44.213s]
sending sparse 'system' (511307 KB)...
OKAY [ 32.335s]
writing 'system'...
OKAY [ 46.318s]
sending sparse 'system' (511996 KB)...
OKAY [ 35.038s]
writing 'system'...
OKAY [ 98.208s]
sending sparse 'system' (227359 KB)...
OKAY [ 39.576s]
writing 'system'...
OKAY [ 86.922s]
finished. total time: 414.284s

Hikey で Debian を起動

OSの書き込みが終了したら、HiKey の電源を落として、 Linuxマシンと接続しているマイクロUSBケーブルを外します。 ジャンパーピンを下のように設定(3番目をオープン)して、 マウスとキーボードを接続して電源を入れます。

名前 ピン 設定 動作
Auto Power up 1-2 ショートオープンの場合は電源ボタンを押すとブート
Boot Select 3-4 オープンショートでブートローダをUSBから書き込み
GPIO3_1 5-6 オープンショートで fastboot


Dragonboard 410C のインストール

Arm64仮想マシンの作成

Orange Pi PC2 の性能と Ubuntu のインストール



このページの目次