копирование ядра и uboot в sdcard

У меня есть плата Freescale I.MX ARM, для которой я готовлю загрузчик, ядро ​​и корневую файловую систему на SD-карте. Я немного смущен порядком, в котором я разбиваю и копирую файлы на SD-карту. Допустим, у меня пустая sdcard размером 4 ГБ. Я использовал gparted, чтобы сначала разбить его на:

Первый раздел размером 400 МБ в системе FAT32. это мой загрузочный раздел. Второй раздел - это оставшаяся часть карты как ext3. Это раздел моей корневой файловой системы.

Допустим, моя SD-карта находится в / dev / sdb.

Теперь я видел много документов, немного отличающихся способом копирования загрузочных файлов.

Какой правильный путь?

Способ 1:

(без монтирования разделов sdb: sudo dd if = u-boot.bin of = / dev / sdb bs = 512 seek = 2 sudo dd if = uImage of = / dev / sdb bs = 512 seek = 2

Смонтируйте sdb2 для копирования rootfs: mount / dev / sdb2 / mnt / rootfs copy rootfs: tar -xf tarfile / mnt / rootfs

Метод 2: смонтируйте загрузочный раздел sdb1: mount / dev / sdb1 / mnt / boot copy uboot и kernel: cp u-boot.bin / mnt / boot / cp uImage / mnt / boot /

Затем скопируйте rootfs, как указано выше!

Какой правильный. Я пробовал два, но SDD-карта даже не загружается. Когда я попробовал метод 1, карта загружалась до тех пор, пока не сообщалось, что rootfs не найден в разделе. Я вынул карту, вставил и обнаружил, что первый раздел fat 32 каким-то образом «разрушен», поскольку он говорит «нераспределенный» на gparted.

Пожалуйста помоги.


person user907810    schedule 30.01.2014    source источник


Ответы (3)


Вам нужно пометить первый раздел как загрузочный. Проверьте информацию о своем первом разделе в gparted или в дисковой утилите.

С помощью дисковой утилиты вы можете пометить раздел как загрузочный. выбрав конкретный раздел и войдя в опцию «дополнительные действия» -> «изменить тип раздела».

person Pratik Agrawal    schedule 08.04.2014

ниже приведен сценарий для прошивки двоичных файлов на SD-карту для моей платы Arndale OCTA. Вы можете увидеть размещение двоичных файлов загрузчика:

BL1

dd iflag = dsync oflag = dsync if = arndale_octa.bl1.bin of = / dev / sde bs = 512 seek = 1

BL2

dd iflag = dsync oflag = dsync if = .. / arndale_octa.bl2.bin of = / dev / sde bs = 512 seek = 31

uboot

dd iflag = dsync oflag = dsync if = u-boot.bin of = / dev / sde bs = 512 seek = 63

ядро и доверительное программное обеспечение, ....

Обратите внимание: 1) Таблица разделов находится со смещением 0 SDcard (поиск 0), затем вам нужно запустить: fdisk / dev / sde и создать разделы, которые не перекрываются с блоками, поддерживаемыми ядром или программным обеспечением доверия. 2) добавьте параметр «dsync» в команду dd, чтобы гарантировать, что все записанные данные немедленно сбрасываются на SD-карту.

person Houcheng    schedule 18.04.2014

В большинстве случаев процессору imx требуется загрузчик со смещением 0x400. Итак, все, что вы делаете для u-boot, правильно, вам нужно использовать для этого команду dd.

sudo dd if=u-boot.bin of=/dev/sdb bs=512 seek=2

При разбиении SD-карты на разделы убедитесь, что у вас достаточно места для образа u-boot. Итак, начните свой 1-й загрузочный раздел со смещением, скажем, 1 МБ.

Вы можете просто скопировать свои uImage и переменные среды (uEnv.txt или boot.scr) с помощью команды cp.

Для rootfs вы также можете выполнить те же действия, что и ядро.

person GeekyJ    schedule 26.10.2015