2015年6月9日火曜日

96board HiKey のブートローダ(fastboot)の更新とかDebianのインストールの仕方 (組込みの当たり前の所あれこれ)


下記のドキュメントを読むだけです。
https://github.com/96boards/documentation/wiki/HiKeyGettingStarted
後はここにあるHiKeyマニュアル当たりを片手に。
https://www.96boards.org/products/ce/hikey/

ハマった点は、USB OTG Connectorに充電専用のmicroUSBをつないでしまっていて、ちっともttyが見えなかったことです。
充電専用のUSBケーブル作ったのマジ許さん(ぷんすか



まず、GettingStartedガイドのBoardRecoveryを抑えましょう。
このボードではブートローダーもカスタムし放題です。パソコンは何でもできるように見えますが、ブートローダーのカスタムなんてできないですよね?
ブートローダーっていうのはパソコンで言うところのBIOS当たりをさしてますよ。

ブートローダーをいじってぶっ壊したら文鎮化してしまいますが、こいつは復活できます。それが開発ボードというものです。
イマドキのチップではmicro-loaderとかpre-loaderと呼ばれるブートローダーが存在します。自分はプリローダーとよんでいます。
プリローダーはチップの中にマスクROMのようなところにあり、書き換えはできません。
この周りの話を書こうと思ったら、とても良くまとまった記事を見つけてしまったので省略します。
KMC Staff Blog:U-bootのデバッグ
http://blog.kmckk.com/archives/4414137.html

ともあれ、ジャンパーによりブート先を切り替えることが可能です。また、リカバリーモードのような状態にセットすることも出来ます。
GettingStartedガイドに出てくる"Set Board Link options"はこのジャンパーのことを指しています。
HiKeyユーザーガイドでは”ページ7の1. SETTINGS JUMPER and UART JUMPER”です。
どうして言葉が統一されていないのかは不明ですが、空気を読んでいきましょう。

一般的にはUART経由でXMODEM系で書いたりすることが多いです。
ですが、ここでは"hisi-idt.py is the Python download tool for the HiKey."なるツールを使うようです。

eMMCフラッシュモード。"Boot Select Link 3-4 closed"にして書き込んだときの様子は下記の通り。
UARTはつけてないと不安な人なので、ttyUSB0はUART0につながっています。
"Switch to UART download..."で止まるので、この状態だとUSB OTG Connector(マイクロUSBの端子)がシリアルホストに変身しています。
ここからえいやえいやと送りつけたげるのです。ツール経由なので余裕ですね。

% ls /dev/ttyUSB*
/dev/ttyUSB0
% cu -l ttyUSB0 -s 115200
Connected.
start enum.
Can not get device description command.
Switch to UART download...

% ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1
% python hisi-idt.py -d /dev/ttyUSB1 --img1 fastboot1.img --img2 fastboot2.img
+----------------------+
Serial: /dev/ttyUSB1
Image1: fastboot1.img
Image2: fastboot2.img
+----------------------+

Sending fastboot1.img ...
Done

Sending fastboot2.img ...
Done


fastbootの導入が出来れば、後はfastbootプロトコル経由で各種イメージを焼きこむだけです。
いわゆるfastbootモードに入るにはジャンパを切り換えます。GPIO3-1 Link 5-6 Closedにします。
先程はUARTに見えましたが、fastbootプロトコルが通るトンネルになっています。fastbootコマンドでデバイスを発見できるようになってますね。
後は"fastboot flash パーティションの名前 書き込むファイル"でサクサク焼きこめちゃいます。
U-bootだとTFTPロードして書き込んだりすることが多いですよね。fastbootはこの当たり安全に操作できる感じです。
% cu -l ttyUSB0 -s 115200
(略
[1970:1:1 0:0:3][43949]enter usb_config
[1970:1:1 0:0:3][44025]USB: DMA mode.

% fastboot devices
0123456789ABCDEF fastboot
% fastboot flash ptable ptable-linux.img
% fastboot flash (以下略

後はジャンパーを取り外せば通常起動して完了です。
今現在はUSBのホットプラグがうまくいかなくて、起動前にキーボード、マウス、HDMIをつなぎました。
普通に画面は出力されるし、マウスは動くしです。(冒頭の画像)

Debian GNU/Linux 8 linaro-alip ttyAMA0

linaro-alip login: root (automatic login)

Last login: Thu Jul 3 18:46:23 UTC 2014 on ttyAMA0
Linux linaro-alip 3.18.0-linaro-hikey #1 SMP PREEMPT Tue May 19 18:40:10 UTC 2015 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@linaro-alip:~#

ところでこのボード。ブートローダにUEFIを載せることも可能です。

U-bootしか触ったことがなかったので、色々ググりました。WindowsのBIOS的な意味でのUEFIの高速起動のfastbootと、ブートローダのfastbootがコンフリクトしててちょっとつらかったです。(NOT検索しましょう

0 件のコメント:

コメントを投稿