🐶

U-Boot for Coral Dev Board のビルド手順

2022/07/04に公開

はじめに

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シリアルのドライバインストール等を行えば良いですが、本記事では扱いません。

https://note.com/kazu8kazu/n/n14b9f8a522c0

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書き込み

全体的に公式サイトの情報がまとまっているため、ここには目を通しておいた方が良いです。

https://coral.ai/docs/dev-board/reflash/#update-your-dev-board-with-apt-get

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等の全リカバリは必要に応じて行えば良いです。

https://qiita.com/mml/items/33b36404c44a2dec4be0

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