Добрый день!
Я занимаюсь разработкой платы с использованием микропроцессора Freescale i.MX53.
У меня возникли проблемы с загрузкой с Nand. Нужен совет в том как можно отладить процесс загрузки, так же буду рад указаниям на мои возможные ошибки. Что использую:
1. Загрузчик: u-boot 2009.08.01
2. Nand подключен через EIM_DA[0..7]
3. Nand: Micron MT29F4G08ABAEA, 512Mb, 8-bit, 3.3V
3.1 Тип....................: SLC
3.2 Размер страницы: 4096 + 224 bytes
3.3 Страниц в блоке.: 64
3.4 ECC....................: 8-bit
3.5 Размер шины......: 8-bit
Что работает:
1. Плата может загружаться с SD (BOOT_MODE[1:0] = 0b00; BT_FUSE_SEL = 0)
2. Плата может загружаться по USB
3. Загрузчик может загрузить свои настройки и ядро Linux с Nand. (rootfs тоже на Nand)
Для загрузки использую образ *.imx, содержащий необходимые структуры: IVT, Boot data, DCD; (см. спецификацию, стр. 518 «Image Vector Table and Boot Data»).
Во время загрузки ядра я вывожу на экран содержимое регистра SRC_SBMR (стр. 4357):
1. 0x10C63D45 (параметры загрузки с SD, заданные через GPIO)
2. 0x1422C1C8 (параметры загрузки с Nand, заданные через Fuse)
Пробовал использовать kobs-ng (11.09.01). Получал требуемую структуру: FCB + DBBT + Uboot image; FCB (стр. 495 «NAND FCB Format») содержит следующие данные:
0x68: 00 02 00 00 (Start page number of primary firmware)
0x6C: 80 03 00 00 (Start page number of secondary firmware)
Образ загрузчика помещается по адресу 0x200000 (2MB). Так же пробовал сместить загрузчик относительно данного адреса на 1Kbyte (0x400 bytes, см. стр. 518 «Image Vector Table and Boot Data»).
Пробовал самостоятельно генерировать структуру FCB, и размещать образ загрузчика в первом блоке Nand со смещением 4Kbyte(FCB size, стр. 495) + 0x400.
В результате всех попыток микропроцессор переходит в режим загрузки через USB.
Вопросы:
1. Адрес чего хранится в структуре FCB (см. смещение 0x68)?
2. Возможно ли проконтролировать процесс загрузки через JTAG?
Вам подобные вопросы лучше на imxcomunity справшивать ...
Вот мой скрипт прожига фусов:
Я бы на вашем месте испробовал все возможные версии kobs-ng, например для imx6 в свое время небыло рабочего kobs-ng в исходниках (нашелся бинарних где то в закаулках чьего то общения).
Еще возможен элемент "шаманства", отчетливо помню момент когда сам бился над загрузкой с NAND - все 300 раз перепроверено и не стартует, с отчаянием в душе пошел спать, а на утро (о чудо ) плата уже стартавала с нанды без вопросов.
Спасибо за ответ.
Я задал свой вопрос так же и на community.freescale.com. Сюда написал потому что у меня лежит ваш SK-iMX53, который чудесно работает и вызывает зависть :). Читал fuse на вашей плате, читал что записано на Nand, думал... Но так и не достиг полной ясности, в том как надо правильно записать загрузчик на Nand.
Собственно больше всего вызывает вопросов структура FCB.
Большое спасибо за ответ и за ссылку.
Я полагал что проблем с совместимостью быть не должно, т.к. работа с nand выполняется через NFC. А он в свою очередь отлично работает с параметрами: 4KB + 218 Bytes; (В документации к iMX53 сказано использовать такие параметры для nand с большим OOB). Собственно при загруженных u-boot и ОС Linux, nand работает отлично.