はじめに
久しぶりに ZCU104 用に Petalinux をビルドした所、mmc がマウントできず難儀しました。
その時の解決方法のメモです。
問題
Vivado で作成した XSA ファイルを元に作成したプロジェクトで Petalinux をビルドすると、mmc がマウントされません。Petalinux 起動時に下記メッセージを出力します。
mmc0: error -110 whilst initialising SD card
環境
- Board
- Xilinx ZCU104
- Tools
- Vivado ML Edition 2024.1 (Windows11)
- Petalinux 2024.1 (Ubuntu 22.04.4)
解決方法
Petalinux のプロジェクト配下にある project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
へ下記1行を追加してビルドします。
+ #include "zcu104-reva.dtsi"
/include/ "system-conf.dtsi"
/ {
};
zcu104-revc.dtsi
というファイルもありますので、利用しているボードの Revision に合わせて選択します。サポートによると Revision はボード上の FMC コネクタ横にシルクプリントされている様です。私のボードではプリントされていなかったので zcu104-reva.dtsi
を選択しています。
ここで追加されるファイルの元ネタは GitHub の Xilinx リポジトリ でした。ここには他のリファレンスボード用の定義もあります。
MMC の動作確認
Petalinux をデフォルト設定のままビルドすると initrd を rootfs として起動します。この時 mmc が認識できていると /run/media
配下に自動でマウントされます。
zcu104-ps-only:~$ ls /run/media/
mmcblk0p1 mmcblk0p2
上記フォルダをアクセスする事で mmc の認識を確認できます。