UbootはSDカードから起動しますが、mmcから情報を読み取ることはできません。

UbootはSDカードから起動しますが、mmcから情報を読み取ることはできません。

Rockchip SOQuartz CM4用の起動可能なSDカードを設定しています。

このターゲットのubootをビルドし、それをrootfsイメージとカーネルと共にSDカードに書き込んでubootをロードしてからuboot端末に入ることができました。次の手順で、SDカードでカーネル/ rootfsイメージを見つけて起動しようとしています。

ホストコンピュータのSDカードを見ると、カーネルイメージファイル、ボード用のデバイスツリーDTBファイル、複数のデバイスツリーオーバーレイDTBOファイルを含むオーバーレイファイルを含むBOOTパーティションを表示できます。 SDカードには、squashfs形式のルートファイルシステムパーティションもあります。 uboot バイナリはセクタ 64 にインストールされます。Rockchipマイクロ文書によると

このSDカードから起動すると、最初のステップブートローダ、U-Boot SPL、およびU-Boot正しい端末のすべての負荷を観察できます。しかし、SDカードの電圧選択に関していくつかのエラーが発生します。これにより、mmc partやmmc infoなどのコマンドを使用してSDカードのパーティションを表示できなくなります。

U-Boot 2024.01-rc2-g169c3cc4 (Nov 17 2023 - 15:01:56 -0500)

Model: Pine64 RK3566 SoQuartz with CM4-IO Carrier Board
DRAM:  2 GiB
PMIC:  RK8090 (on=0x40, off=0x00)
Core:  312 devices, 27 uclasses, devicetree: separate
MMC:   mmc@fe2b0000: 1, mmc@fe2c0000: 2, mmc@fe310000: 0
Loading Environment from nowhere... OK
In:    serial@fe660000
Out:   serial@fe660000
Err:   serial@fe660000
Model: Pine64 RK3566 SoQuartz with CM4-IO Carrier Board
Net:   eth0: ethernet@fe010000
Hit any key to stop autoboot:  0
Error: unknown compression type.
Card did not respond to voltage select! : -110
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
scanning bus for devices...
Bus usb@fcc00000: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@fcc00000 for devices... 2 USB Device(s) found
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
ethernet@fe010000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
phy_startup() failed: -110FAILED: -110pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
ethernet@fe010000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
phy_startup() failed: -110FAILED: -110=>
=> mmc info
Card did not respond to voltage select! : -110
=> mmc part
Card did not respond to voltage select! : -110
=>

このエラーの理由は何ですか?私のSDカードに問題がありますか?私のSDカードはU-Bootをロードしてこのポイントまで移動できるので大丈夫だと思います。重要なのは、Sandisk UHS-I 16GB SDカードです。

U-Bootが自分のSDカードパーティションとここにインストールされているファイルを見つけることができるようにするには、どのような手順を実行する必要がありますか?

答え1

更新:「mmc dev」コマンドを使用してmmcインターフェイスの速度モードを変更して、「カードが電圧選択に応答しません!:-110」エラーを解決できました。

=> mmc list
mmc@fe2b0000: 1 (SD)
mmc@fe2c0000: 2
mmc@fe310000: 0
=> mmc dev
Card did not respond to voltage select! : -110
=> mmc part
Card did not respond to voltage select! : -110
=> mmc info
Card did not respond to voltage select! : -110
=> mmc list
mmc@fe2b0000: 1 (SD)
mmc@fe2c0000: 2
mmc@fe310000: 0
=> mmc dev 1 0 6
switch to partitions #0, OK
mmc1 is current device
=> mmc info
Device: mmc@fe2b0000
Manufacturer ID: 3
OEM: 5344
Name: SL16G
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
=> mmc part

Partition Map for MMC device 1  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     31314           289044          00000000-01     0c Boot
  2     609402          289044          00000000-02     83
  3     1187490         289044          00000000-03     83
  4     1476534         29639754        00000000-04     83

このログでは、「mmc info」と「mmc part」の最初の呼び出しは両方とも電圧選択エラーを返すことに注意してください。 「mmc dev 1 0 6」を使用してmmc速度を設定した後、SDカードから情報を取得できました。

「mmc dev 1 0 6」分析:mmc devコマンド、デバイス1(SDとして表示)、パーティション0、速度モード6。速度モード6 = UHS SDR25(50MHz)。他の速度モードも動作できます。初めて試してみてください。

uboot mmcコマンドの完全なドキュメントはここにあります: https://docs.u-boot.org/en/latest/usage/cmd/mmc.html

実際にパーティション内の私のファイルを見つけるにはまだやるべきことがたくさんありますが、今は実際にSDカードをブラウズする段階に近づいています。この段階が将来の誰かに役立つことを願っています。

関連情報