livaの雑記帳

HiKey960にUEFIを焼く

開発環境:

ubuntu16.04

 

ボード:

HiKey 960

www.96boards.org

最新の4GB版だよ!(11月までは3GBだった)

Cortex-A73(2.36GHz) 4-coreとCortex-A53(1.84GHz) 4-coreの octa-core。

あのあの、2.36GHzとか、僕のMacBookPro(13-inch late 2016)のCore i7(2.4GHz)とほぼ同じなんですが。。。。しかもこのCore i7、2-coreだし。もちろんただの周波数比較に意味はない事は分かってるんですがね。

ちなみに、SoCはHUAWEI P10と同一。

 

他に買った物:

  • ACアダプタ。コネクタがHiKey960と異なるが、変換器がHiKey960についてる。

akizukidenshi.com

 

  • シリアル通信を行うためのアダプタ。ついてるスイッチはリセットスイッチ。

www.switch-science.com

 

  • USBケーブル2本(micro-B to type-A, type-C to type-A)、ちゃんと通信ができる奴(充電用じゃなくて)を買おう!

 

電源繋いだけど最初からインストールされているAOSPが起動しない!ボード上の緑色のLEDが光ってるから、起動はしてるっぽいんだけどなぁ・・・と暫く悩む。

(実は以前触るだけ触った時も同じ問題で悩んだんだけど、その時は良く分からないうちに起動した)

 

まず、凄く初歩的だけど、キーボードを繋がないとOSが起動しない。

 

参考:

www.96boards.org

  • HiKey960 is not connected to power
  • Ensure HiKey960 is in Normal Mode
  • Connect HDMI cable to compatible monitor
  • Connect Keyboard and Mouse
  • Power on with 96Boards compliant power supply

Board should boot up into AOSP.

 

キーボードを繋がないと、シリアルにこんな感じのメッセージが出たままうんともすんとも言わない。

追記:もしかしたらリセットボタン押したりすると動くかもしれない。

 

bfm: : [disable_boot_fail_system] boot_fail_system state is 0

rescue: ^^^^^^^^^[rescue_init] ok !

usbloader: bootmode is 4

 

これも初歩的な話だが、シリアルコンソールは開発環境で以下のコマンドを打つ。

 

# picocom /dev/ttyUSB0 -b 115200 -f x

もちろん、uartアダプタを用いて開発環境との間をmicro-B to AなUSBケーブルで繋ぐ事。あと、minicomを使っても良いが、後述の理由より、picocomを使う。

 

そうそう、なんで起動しないんじゃ案件がもう一つあった。最初に試した液晶では何も画面出力されず、液晶を変えたら動いた。(1680x1050 60Hzが動けば良いっぽい?)

 

ダメな液晶を繋いでる時は、こんな感じのメッセージが一定時間置きに出続ける。

[   35.772632] audit: audit_lost=248 audit_rate_limit=20 audit_backlog_limit=64

[   35.772635] audit: rate limit exceeded

[   37.013731] init: computing context for service 'wificond'

[   37.019440] init: starting service 'wificond'...

[   37.024898] init: property_set("ro.boottime.wificond", "36972993744") failed: property already set

 

きちんと動く液晶の場合は、14秒辺りでandroidの文字が出て、20秒辺りでandroidのデスクトップが表示される。上のメッセージも出ない。(wifiと液晶は関係ないと思うんだけどなぁ)

 

さて、AOSPでは何もできないので、まともなlinux環境が欲しい。

まともなlinux環境として、Debianがあるのだが、そのDebianを起動するためにUEFIが必要となるため、これを焼く。

 

 

これとかを参考にしながら環境構築。

tools-images-hikey960/install-prebuilt-uefi at master · 96boards-hikey/tools-images-hikey960 · GitHub

 

で、先程チラッと書いたが、minicomだとUEFIの画面が死ぬからpicocomってのを入れないといけないらしい。

 

 

github.com

 

hikey960をリカバリモードで起動する。とりあえず刺さってるケーブルは全て抜いた上でDIPスイッチを弄る。スイッチ1がON、スイッチ2,3がOFFなはずなので、スイッチ2のみONにする。

f:id:liva_h:20171219144349j:plain

 

 

実はここまではMac上のVMUbuntuをインストールして開発環境としていたのだが、上手く行かなくて(USB OTGケーブル繋いでも認識しなかったり)辛かったので、素のUbuntu環境を用意した。

 

 

Android SDKをインストールする。

本当は SDK Platform Tools Release Notes | Android Studio からダウンロードするのが良いが、僕はものぐさなので以下で手抜きをした。

 

# apt install android-sdk-platform-tools

 

で、先程のドキュメント曰く、

...Set switch 1 and 2 to on and 3 to off

...Connect the uart to the host system and make sure it shows up as ttyUSB0 using dmesg command

...Power on the HiKey960

...Connect the usb-c otg to host system and make sure that shows up as ttyUSB1

 

との事。

一番最初のswitchはもう既にやったので良いとして、残り3つもそれぞれやると /dev/ttyUSB0と/dev/ttyUSB1が見える。この段階でHiKey960に刺さっているケーブルは開発環境と繋ぐためのUSBケーブル2本のみ。キーボードとかHDMIは不要。

 

さっきから参照していたリポジトリを落としてくる。

$ git clone https://github.com/96boards-hikey/tools-images-hikey960.git

$ cd tools-images-hikey960/install-prebuilt-uefi/

 

次に叩くコマンドは公式githubにある通りではなく、以下を使った。

# ./hikey960-efi-prebuilt.sh -r -v 39

最後の39という数字はこのページでも見てよしなに。僕が見た場合はlatestが39だったので。39の代わりにlatestを指定しても良いかもしれない。

 

コマンドを叩いたら、すぐにpicocomの画面に切り替える。

しばらくするとずらずら文字が流れて、いかにもデータ転送されてるっぽい雰囲気が出て来るので、そこで「f」を連打する。

 

Press ESCAPE for boot options .

という文字列が表示されるはずなので、そのタイミングでfが押されていれば、きちんと処理が続行される。(fを押さなくても動くかもしれないが、一応念のため)

 

Press ESCAPE for boot options .Android Fastboot mode - version 0.6.

Press RETURN or SPACE key to quit.

Downloading 24576 bytes

   24576 /    24576 bytes downloaded (100%)

Flashing partition ptable

Done.

Downloading 154752 bytes

  154752 /   154752 bytes downloaded (100%)

Flashing partition xloader

Done.

Downloading 1179648 bytes

1179648 /  1179648 bytes downloaded (100%)

Flashing partition fastboot

Done.

Downloading 1513584 bytes

1513584 /  1513584 bytes downloaded (100%)

Flashing partition fip

Done.

 hikey960-efi-prebuilt.sh内のfastbootがいろいろデータを転送している感じのメッセージが表示される。

 

終わったらhikey960-efi-prebuilt.shを走らせていたシェルに戻る。

 

builds.96boards.org

 

ここからboot-fat.uefi.img.gz(ファイル名は更新されるかも)をダウンロードし、展開する。

 

sudo fastboot flash boot boot-fat.uefi.img

 

さて、スイッチ2をOFFに戻して、type-C to type-Aケーブルを抜いてリセットボタンを押す。HDMIやキーボードはここでも不要。

 

リセットすると、また以下のようなメッセージが出るので、このタイミングでESCAPEが押せると、UEFIのセットアップ画面が(これもシリアル上で)見える。やったね!

Press ESCAPE for boot options .

 

f:id:liva_h:20171220020907p:plain

 

ところで、「Move Highlight」ってのの「^v」ってやつ、「^」はCtrlかAltといった特殊キーかと思ったら普通に「^」キーなのね。

普通にわかりづらいと思うんだけど、カーソルを上に上げるのが「^」キーで、下に下げるのが「v」キーです。

 

ESCAPEキーを押さないと、素のgrubが立ち上がる。

 

続き。

raphine.hatenablog.com