Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
i.MX53 загрузка с Nand
Gau
Добавлено 01.10.2013 13:57
0
Сообщение: 1
Gau
0

Пункты: 78
Регистрация: 01.10.2013
Добрый день!
Я занимаюсь разработкой платы с использованием микропроцессора 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)

Настройки для загрузки с Nand:
1. BOOT_MODE[1:0] = 0b10 (Boot From Fuses)
2. BT_FUSE_SEL = 1
3. Конфигурация Fuses:
* FUSE [0x080C] BOOT_CFG1_OFFS: 00c8
* * Device.......: NAND
* * Muxed on...: WEIM
* * Interleave..: No
* * Addr cycle..: 5
* * Boot freq....: 800
* * MMU enable: 0
* FUSE [0x0810] BOOT_CFG2_OFFS: 00c1
* * Page size..: 4KB + 218 Bytes
* * NAND iface: 8 bit
* * DDR freq...: PLL2 - 400MHz
* * OSC freq...: 19.2, 24, 26, 27 MHz - auto detect
* * NFC freq....: AXI DDR divide by 12
* * Security.....: Off
* FUSE [0x0814] BOOT_CFG3_OFFS: 0022
* * Stride.......: 1 Block
* * LBA..........: Non LBA (11ms delay)
* * Use R/B....: Yes
* * ECC/Spare: 8-bit
* * Pages.......: 64
* * Boot.........: direct boot from external memory is allowed
* FUSE [0x0804] BOOT_LOCK_OFFS: 0010
* * JTAG mode: JTAG enable mode
* * Boot mode.: Boot mode configuration is taken from fuses

Пробовал использовать 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?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 01.10.2013 17:30 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
Вам подобные вопросы лучше на imxcomunity справшивать ...
Вот мой скрипт прожига фусов:
Код
#echo "Burn: BOOTCFG1[7]-NAND, BOOTCFG1[6]-WEIM, BOOTCFG1[3:2]=10 - Address cycles=5"
#echo "0x80c 0xc8" > /dev/mxc_iim

#echo "Burn: BOOTCFG2[7:6]=01 - Page size=2K"
#echo "0x810 0x40" > /dev/mxc_iim

#echo "Burn: BOOTCFG3[2:1]=01 - Pages in block=64"
#echo "0x814 0x02" > /dev/mxc_iim

#echo "Burn: BT_FUSE_SEL"
#echo "0x804 0x10" > /dev/mxc_iim

Я бы на вашем месте испробовал все возможные версии kobs-ng, например для imx6 в свое время небыло рабочего kobs-ng в исходниках (нашелся бинарних где то в закаулках чьего то общения).
Еще возможен элемент "шаманства", отчетливо помню момент когда сам бился над загрузкой с NAND - все 300 раз перепроверено и не стартует, с отчаянием в душе пошел спать, а на утро (о чудо ) плата уже стартавала с нанды без вопросов.
Спуститься к концу Подняться к началу
Персональная информация
Gau
Добавлено 02.10.2013 16:00 Сообщение: 3
Gau
0

Пункты: 78
Регистрация: 01.10.2013
Спасибо за ответ.
Я задал свой вопрос так же и на community.freescale.com. Сюда написал потому что у меня лежит ваш SK-iMX53, который чудесно работает и вызывает зависть :). Читал fuse на вашей плате, читал что записано на Nand, думал... Но так и не достиг полной ясности, в том как надо правильно записать загрузчик на Nand.
Собственно больше всего вызывает вопросов структура FCB.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 03.10.2013 13:54 Редактировалось 03.10.2013 14:11 Сообщение: 4
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
3.2 Размер страницы: 4096 + 224 bytes

насколько я вижу - такие nand не поддерживаются в бутроме

Page Size:
00 - 512 + 16 Bytes (4-bit ECC)
01 - 2KB + 64 Bytes
10 - 4KB + 128 Bytes
11 - 4KB + 218 Bytes

https://community.freescale.com/thread/298706
Спуститься к концу Подняться к началу
Персональная информация
Gau
Добавлено 14.10.2013 08:46 Сообщение: 5
Gau
0

Пункты: 78
Регистрация: 01.10.2013
Большое спасибо за ответ и за ссылку.
Я полагал что проблем с совместимостью быть не должно, т.к. работа с nand выполняется через NFC. А он в свою очередь отлично работает с параметрами: 4KB + 218 Bytes; (В документации к iMX53 сказано использовать такие параметры для nand с большим OOB). Собственно при загруженных u-boot и ОС Linux, nand работает отлично.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux