Ubootを使用してEMMCの通常のパーティションまたはブートパーティションからファイルをロードする方法

Ubootを使用してEMMCの通常のパーティションまたはブートパーティションからファイルをロードする方法

UBootは、fatload / ext4loadを介してEMMCの通常のパーティションまたは起動パーティションから起動できますか?ユーザー領域にファイルを表示できますが、ハードウェアパーティションで作成されたパーティションは表示できません。これらのパーティションは、UBootの「mmc hwpartition」コマンドを使用して作成できます。奇妙なことは、UBootはこれらのパーティションを作成できますが、使用できないことです。最新バージョン(2016.4)を使用しています。ザイリンクス UBoot、これは以下に基づいています。システム起動

UBootの「mmc info」コマンドを使用すると、UBootはブートパーティションと一般パーティション(GP 1/2/3/4)を確実に表示できます。

zynq-uboot> mmc info
Device: sdhci@e0100000
Manufacturer ID: fe
OEM: 14e
Name: MMC04
Tran Speed: 52000000
Rd Block Len: 512
MMC version 4.4.1
High Capacity: Yes
Capacity: 2.7 GiB
Bus Width: 4-bit
Erase Group Size: 4 MiB
HC WP Group Size: 4 MiB
User Capacity: 2.7 GiB
Boot Capacity: 16 MiB ENH
RPMB Capacity: 128 KiB ENH
GP1 Capacity: 128 MiB
GP2 Capacity: 64 MiB
GP3 Capacity: 128 MiB
GP4 Capacity: 512 MiB

通常、UBootコマンドfatload / fatlsまたはext4load / ext4lsを使用して、ファイルシステムの種類に応じて特定のパーティションの内容を表示できます。

fatlsコマンドの操作例 - これは、ユーザー領域(上記のサイズ2.7 GB)の内容を表示します。

zynq-uboot> fatls mmc 0:1
    17488   devicetree.dtb
   962589   fpga.bit
       54   uenv.txt
  6709360   uimage
  1555344   boot.bin
       33   image.chk
 83493724   image.tgz

7 file(s), 0 dir(s)

Linuxにマウントすると、GPパーティションにルートファイルシステム、カーネルイメージなどが含まれます。 fatload / ext4loadコマンドを使用すると、GPパーティションから起動し、ブートファイルを保存する他の目的でユーザー領域を使用できるようにしたいです。

このトピックに関する他の投稿を見つけましたが、まだ答えがないようです。https://lists.denx.de/pipermail/u-boot/2014-July/184731.html

どんな助けでも大変感謝します!

ベストアンサー1

U-BootからGPパーティションに正常にアクセスしました。 U-boot 2017はMMCバージョン5.1をサポートしていないため、GPパーティションを認識できませんでした。 (最後にサポートされている5.0なので、何らかの理由でバージョン4.0に置き換えられました。)U-Bootコードでバージョン5.1を有効にした後、次のように認識されました。

=> mmc info
Device: OMAP SD/MMC
Manufacturer ID: 11
OEM: 100
Name: 008G3 
Tran Speed: 52000000
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 7.3 GiB
Bus Width: 8-bit
Erase Group Size: 4 MiB
HC WP Group Size: 4 MiB
User Capacity: 7.3 GiB
Boot Capacity: 8 MiB ENH
RPMB Capacity: 4 MiB ENH
GP1 Capacity: 4 MiB ENH WRREL
GP2 Capacity: 4 MiB ENH WRREL

これで、U-Boot(環境またはコンソール)で次のことができます。 (注:eMMCはmmcデバイス0に接続されています。

mmc dev 0 #select device 0
mmc partconf-partenable 0; #store the active bootpartition
mmc partconf 0 1 7 4; #configure device 0 (first parameter) to use User partiton (the 7) to GP1 (first GP) (4)
mmc partconf 0 1 7 5; #configure device 0 (first) to use userpartition second (GP2) (parameter 5)
#Now display partition (which won't work, explained below)
=> mmc part

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

Part    Start Sector    Num Sectors UUID        Type
bad MBR sector signature 0x0000
=>
#now load a file with filename from the ext4 filesystem (see below)
=> ext4load mmc 0:0 0x80000000 FILE_NAME.txt
15 bytes read in 2 ms (6.8 KiB/s)
#restore active partition
=> mmc partconf 0 1 ${boot_part_enabled} 1 #restore the boot_partition (this parameter boot_part_enabled is set from 'mmc partconf-partenable 0' at the beginning)

この目的のために、LinuxでGPパーティションを事前にフォーマットして作成しました。

mkfs.ext4 /dev/mmcblk1gp1
mount /dev/mmcblk1gp1 /media/gp1
echo "SOMELINEOFTEXT" > /media/gp1/FILE_NAME.txt
reboot

これでu-bootで読むことができます

おすすめ記事