Там должен быть 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
обрабатывают его как обычные данные, поэтому я должен предоставить его.