U-Boot for Coral Dev Board のビルド手順
はじめに
Coral Dev Board向けのU-Bootを自前でビルドして、動かす方法についてまとめた記事です。ただし、現時点ではビルドまでは成功していますが、Coral Dev Boardで実際に動かせていません。そのため、本記事は個人的な作業メモになっています。
Coral Dev Board
$129で購入できる、NXP社製のi.MX8M Quad SoCを搭載し、さらにGoogleのAIエンジンのTPUを搭載した開発ボードです。割と新しいSoCとTPUを搭載しつつ、$129で売られているのはかなりお買い得だと思います。日本でもAmazon等で販売されていますが、以前は定価で購入できていましたが、現在は購入サイトによっては価格が定価以上になっているところもありそうで、注意が必要です。
開発環境のセットアップ
macOS環境ではビルドが失敗したため、Ubuntu 18.04環境で試しています。macOSの場合は、以下の記事を参考にUSBシリアルのドライバインストール等を行えば良いですが、本記事では扱いません。
fastboot インストール
Host PC (Ubuntu 18.04) からfastbootコマンドで直接eMMCの書き換えを行うためにインストールします。
$ sudo apt-get install android-tools-fastboot
クロスビルド環境のインストール
$ sudo apt install g++-aarch64-linux-gnu
デバイスツリーコンパイラのインストール
U-Bootのビルドにはデバイスツリーのビルドも必要になります。
$ sudo apt install device-tree-compiler
U-Boot ビルド
Coral向けのUbootのソースコードはhttps://coral.googlesource.com/uboot-imx/にありますので、これを利用します。ブランチがいくつかありますが、とりあえずmasterで作業を進めてみます。
ソースコード取得
$ git clone https://coral.googlesource.com/uboot-imx
ビルド
configファイルはmx8mq_phanbell_defconfigではないかと思っていますが、現状動かせていないため、間違っているかもしれません。
$ make ARCH=arm64 mx8mq_phanbell_defconfig
$ make CROSS_COMPILE=aarch64-linux-gnu- u-boot.imx
Coral Dev BoardへのU-Boot書き込み
全体的に公式サイトの情報がまとまっているため、ここには目を通しておいた方が良いです。
Coral Dev Boardをfastbootモードに切り替える
Coral Dev BoardをUSBでシリアル接続し、Linuxカーネル起動前にターミナルから何かボタンを押してU-Bootモードで止めます。このプロンプトが出ている状態で、
fastboot 0
を入力し、U-Bootをfastbootモードに入れます。
Host PCからU-Bootを書き込む
fastbootモードに入れ、Coral Dev BoardのOTG USB端子をHost PCに接続します。この段階でHost PCからfastbootデバイスとして認識されるようになります。
以下のコマンドで認識状態は確認可能です。認識していれば、デバイスIDが表示されるはずです。
$ fastboot devices
あとは以下のコマンドでU-Bootが書き換え可能ですが、書き換えると正常起動しなくなります。。現在解析中。
$ fastboot flash bootloader0 ${作業パス}/u-boot.imx
その他
Coral Dev BoardのeMMCストレージのリカバリ
SDカードブートを利用して、eMMCをリカバリ可能です。U-Boot書き換え失敗等の時に必須の作業です。以下の情報を参考に、U-Bootだけ書き換えればOKです。rootfs等の全リカバリは必要に応じて行えば良いです。
Coral Dev Board official U-Bootログ
U-Boot SPL 2017.03.3 (Nov 08 2019 - 22:29:30)
power_bd71837_init
pmic debug: name=BD71837
Board id: 2
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
Training PASS
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
Normal Boot
Trying to boot from MMC1
hdr read sector 300, count=1
U-Boot 2017.03.3 (Nov 08 2019 - 22:29:30 +0000)
CPU: Freescale i.MX8MQ rev2.0 1500 MHz (running at 1000 MHz)
CPU: Commercial temperature grade (0C to 95C) at 26C
Reset cause: POR
Model: Freescale i.MX8MQ Phanbell
DRAM: 1 GiB
Board id: 2
Baseboard id: 1
MMC: FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
BuildInfo:
- ATF
- U-Boot 2017.03.3
flash target is MMC:0
Net:
Warning: ethernet@30be0000 using MAC address from ROM
eth0: ethernet@30be0000
Fastboot: Normal
Hit any key to stop autoboot: 0
Discussion