Как загрузить файлы из раздела общего назначения или загрузочного раздела EMMC с помощью Uboot

Может ли UBoot загружаться через fatload / ext4load с общего или загрузочного раздела EMMC? Я могу отображать файлы из области «Пользователь», а не разделы, созданные как аппаратные разделы. Эти разделы могут быть созданы с помощью команды UBoot «mmc hwpartition». Кажется странным, что UBoot может создавать эти разделы, но не может их использовать. Я использую последнюю версию (2016.4) Xilinx's UBoot , основанную на UBoot

. Используя команду «mmc info» UBoot, 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 ГБ сверху).

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)

Разделы GP, смонтированные в Linux, содержат мою корневую файловую систему, образ ядра и т. Д. Я хотел бы иметь возможность загружаться с раздела GP с помощью команд fatload / ext4load и использовать область пользователя для других целей, которые хранят мои загрузочные файлы.

Я нашел другие сообщения по этой теме, но, похоже, на них еще нет ответа: https://lists.denx.de/pipermail/u-boot/2014-July/184731.html

Любая помощь приветствуется!

0
31.03.2017, 21:25
2 ответа

Да,вы можете получить доступ к разделам GP из uboot.

Как описано здесь http://u-boot.10912.n7.nabble.com/How-to-access-GP-partitions-from-uboot-2015-04-td212394.html, вы можете использовать последний аргумент команды «mmc partconf», чтобы указать eMMC вывести разные части (, например. GP вместо области пользователя ). После того, как вы запустите эту команду и выполните команду «mmc read», вы заметите, что читаете из другой области.

Будьте осторожны. По крайней мере, в моей версии u -boot (2017 )u -boot не знает, что он должен повторно -прочитать таблицу разделов, и в целях оптимизации он этого не сделает. Мне пришлось сделать небольшой патч в part.c в blk _get _device _by _str, чтобы часть _init выполнялась каждый раз. Затем, когда вы выполняете «часть mmc», вы также должны видеть таблицу разделов GP и можете выполнять любые операции с файлами, как обычно. Не забывайте, что выполнение «повторного сканирования mmc» или любого сброса eMMC приведет к потере состояния GP, и вам придется снова переключиться на GP, чтобы прочитать его.

0
28.01.2020, 04:47

Нам удалось получить доступ к разделам GP из -загрузки U. U -boot 2017 не распознал наши разделы GP из-за того, что не поддерживает MMC версии 5.1 (5.0 поддерживалась последней, поэтому по какой-то причине был выполнен переход на версию 4.0 )После включения версии 5.1 в нашем загрузочном коде U -распознается:

=> 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 -Загрузить (среду или консоль )можно выполнить следующее:(Примечание; наш 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)

Для этого мы предварительно -отформатировали и создали разделы GP из Linux один раз:

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

теперь вы можете прочитать его из -загрузки

2
28.01.2020, 04:47

Теги

Похожие вопросы