Замени загрузчик на sama5d3 из работающей системы linux - PullRequest
0 голосов
/ 21 февраля 2019

Я бы хотел заменить загрузчик первой ступени во флэш-памяти nand в системе на основе sama5d36 с 4.1.0-linux4sam_5.1 и buildroot-2016.02.

Я могу заменить образ ядра на flashcp, отлично,но когда я пробую это с загрузчиком, flashcp работает без ошибок, но система не загружается после этого, остается в приглашении ROMBOOT.

buildroot:~# flashcp -v at91bootstrap.bin /dev/mtd0
Erasing block: 1/1 (100%) 
Writing kb: 14/14 (100%) 
Verifying kb: 14/14 (100%) 
buildroot:~# reboot
[...]
Sent SIGKILL to all processes
Requesting system reboot
�RomBOOTRestarting system

Тогда я могу написать тот же образ загрузчикас sam-ba, и он загрузится, так что образ хороший.Как его можно прошить в Linux, без вмешательства пользователя?

1 Ответ

0 голосов
/ 22 февраля 2019

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

Из таблицы данных SAMA5D3 (которую я должен был прочитать перед публикацией вопроса)

После команды инициализации и сброса программа загрузки считывает первую страницу без проверки ECC, чтобы определить, присутствует ли заголовок параметра NAND.Заголовок состоит из 52 одинаковых 32-битных слов (по соображениям избыточности), которые должны содержать параметры NAND и PMECC, используемые для правильного выполнения чтения остальных данных в NAND.

Конечно, заголовок есть, когда я сбрасываю содержимое загрузочного сектора

buildroot:~# hd < /dev/mtd0 | head -4
00000000  05 24 90 c0 05 24 90 c0  05 24 90 c0 05 24 90 c0  |.$...$...$...$..|
*
000000d0  0e 00 00 ea 05 00 00 ea  05 00 00 ea 05 00 00 ea  |................|
000000e0  05 00 00 ea cc 3b 00 00  06 00 00 ea 06 00 00 ea  |.....;..........|

, первые четыре байта повторяются снова и снова, и таблица переходов ARM начинается со смещения 0xD0 (= 208 = 52 * 4)

sam-ba заботится об этом заголовке , когда записывает загрузочный сектор, но драйвер Linux mtd и flashcp обрабатывают его как обычные данные, поэтому я должен предоставить его.

...