Raspberry Pi CM4のeMMC書き込み速度
Raspberry Pi CM4のeMMCはI/Oボードを使ってUSBで書き換えるのが普通です。
Ubuntuで書き換える手順と、書き込み速度を早くする方法をいろいろ試したのでその忘備録です。
環境はUbuntu 20.04です。
eMMCの書き換え
-
ツールのインストール
まず、rpibootをインストールします。
以下からソースコードを取得し、ドキュメントに従ってビルドします。
https://github.com/raspberrypi/usbboot -
I/Oボードの設定
I/OボードにCM4を接続し、J2の”Fit Jumper to disable eMMC boot”と書かれたピンをジャンパでショートさせます。
ショートさせたら電源を接続します。 -
USBで接続
PCとI/Oボードをケーブルで接続します。I/Oボード側はmicroBの端子に接続します。 -
rpibootの実行
接続したら以下のコマンドを実行します。
sudo rpiboot
これでBoot CodeがUSB経由でBCM2710に送り込まれ、USB Mass Storageデバイスとして認識されます。
この状態で書き込んでみると速度が2-5MByte/secくらいしか速度が出ません。
理由を調べてみると、デフォルトで使われるBoot Codeが500MHz駆動のVPU上で動作していることが原因のようです。
速度を改善する
以下の方法で書き込み速度が改善しました。
- githubからクローンしたディレクトリ直下にあるmass-storage-gadgetに移動する。
- 以下のコマンドを実行する。
sudo ../rpiboot -d .
この方法で実行すると書き込み速度が12MByte/secまで改善します。
こちらのディレクトリにあるBoot CodeはLinux Kernelとinitramfsで動作し、CPUのコア上で処理を行うので書き込み速度が速くなるとのこと。
この対応でかなり改善しました。もう少し早くなってほしいですが、、、
こちらのフォーラムの書き込みでは、Ethenet経由であればもっと早くなるとのことですが、ちょっとイメージを作っている余裕がないのでまた今度確認したいと思います。