Чего я не знаю, как это сделать, так это правильно записать новый u-boot на SD-карту.
...
SD-карта содержит Debian u have7.9 2015-11 -12 образ прошивки с последних изображений beagleboard.
Суть вашей проблемы в том, что загрузочный код ПЗУ AM335x Итак, C способен считывать MLO с SD-карта (или eMM C) либо в режиме сырого сектора, либо в режиме файла FAT. Кроме того, в необработанном режиме есть четыре возможных области для определения загрузочного образа, хотя, когда первый сектор носителя содержит MBR, существует только три области.
AM335x So C сначала проверит загрузочный образ, используя режим raw.
Так что, если вы хотите установить MLO в качестве файла в файловой системе FAT, тогда вы необходимо убедиться, что все предыдущие MLO , хранящиеся в сырых секторах, удалены.
IOW, существует несколько способов хранения MLO на карте eMMC / SD и порядок в котором они проверяются, определяет, какой образ используется для загрузки. Файл FAT будет последним образом в порядке загрузки.
На SD-карте с имеющимся у вас образом Debian хранятся MLO и u-boot.img. в качестве необработанных секторов (т. Е. Обратите внимание, что файловая система FAT начинается с сектора 2049 со смещением 0x100000, поэтому перед первым разделом имеются незанятые сектора).
[Обратите внимание, что нумерация секторов начинается с 1, а не с 0.]
Существующая MLO на вашей SD-карте хранится в секторе 257 (смещение 0x20000 или 128K), которое включает сектор для его TO C (оглавление) и восьмибайтовый заголовок GP.
Существующий u-boot.img на вашей SD-карте хранится в секторе 769 (смещение 0x60000) или 384К).
Вы можете заменить оба этих изображения, используя инструкции outslogi c, поскольку смещения seek=
соответствуют тому, что уже существует на вашей SD-карте.
В инструкциях Digikey указаны аналогичные смещения seek=
но используйте разные размеры блоков и количество. Первая команда также удалит MBR (и сделает файловые системы FAT и ext недоступными).
В качестве альтернативы вы можете обнулить TO C, чтобы сбой в режиме raw и затем загрузка ПЗУ вернулась в режим файла FAT.
После этого вы могли бы отказаться от dd
команд и смещений секторов. и используйте обычные команды файловой системы.
Ваша SD-карта имеет только один TO C для устранения, поэтому достаточно одной команды:
dd if=/dev/zero bs=512 count=1 seek=256 of=/dev/sdX
Если вы не знаете, где находится изображение, очистите другой возможные области были бы необходимы:
dd if=/dev/zero bs=512 count=1 seek=512 of=/dev/sdX
dd if=/dev/zero bs=512 count=1 seek=768 of=/dev/sdX
Как я могу узнать, какой U-Boot загружен?
Вы имеете в виду, какой образ U-Boot Выполнено / загружено?
Разве строка версии (с меткой времени сборки), которую U-Boot отображает при запуске, не указывает, какое изображение было загружено?
Однако этот загрузчик не записывается в MM C предоставленным сценарием, поэтому фактически не решает проблему.
Единственная "проблема" , которую я прочитал, изложена в Ваш заголовок.
Уточнение
Хотя вы можете найти / сохранить MLO в сырых секторах или в виде файла FAT на eMM C или SD-карта, на которой вы храните образ u-boot.bin , определяется тем, как был сконфигурирован / собран U-Boot SPL. ( MLO - это просто SPL U-Boot, которому предшествуют 520 байтов для оглавления и заголовка GP.)
Например, конфигурация U-Boot по умолчанию для BBB создаст SPL / MLO, который будет ожидать, что u-boot.bin будет храниться в необработанном секторе 0x300 (или 769, если не считать нуля должным образом).
IE из .config file:
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
Это похоже на ту же конфигурацию, что и образ SD-карты Debian, который вы используете.
Если вы хотите сохранить u-boot. bin image как файл в файловой системе FAT SD-карты, тогда вам придется перенастроить U-Boot SPL (т.е. make menuconfig
) и пересобрать, чтобы получить новый MLO .
Эту информацию я нигде не смог найти.
См. Главу 26.1.8.5 MMC/ SD Cards
Технического описания процессоров AM335x и AMIC110 Sitara. Справочное руководство .