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 に変換するケーブルをオマケとして付けてくれました。 結果的に スイッチサイエンス のほうがちょっと安く入手出来たようですね。
LeMaker の HiKey は、 Qualcomm のDragonBoard 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 Pi2 | Dragonboard 410C | HiKey |
---|---|---|---|---|
チップ名称 | BCM2835 | BCM2836 | SnapDragon410 | HiSilicon Kirin 620 |
プロセッサアーキテクチャ | ARMv6 | ARMv7 | ARMv8 | ARMv8 |
命令セット | AArch32 | AArch32 | AArch32+ AArch64 | AArch32+ AArch64 |
コア名称 | ARM1176JZF-S | Cortex-A7 | Cortex-A53 | Cortex-A53 |
コア数 | 1 | 4 | 4 | 8 |
浮動小数点演算 | VFPv2 | VFPv4 + NEON | VFPv4 + NEON | VFPv4 + NEON |
クロック | 700MHz | 900MHz | 1200MHz | 1200MHz |
メモリ | 512MB | 1GB | 1GB | 2GB |
GPU | VideoCore IV | VideoCore IV | Adreno 306 400MHz | Mali450-MP4 500MHz |
eMMC | - | - | SanDisk 8GB | hynyx 8GB |
microSD slot | 1 | 1 | 1 | 1 |
USB 2 | 4 | 4 | 2 | 2 |
Ethernet | 100M | 100M | - | - |
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 の電源を入れます。
名前 | ピン | 設定 | 動作 |
---|---|---|---|
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 |