Проблема ініціалізації SDRAM (Freescale iMX31)


10

Я намагаюся змінити існуючу послідовність init (низький рівень init SDRAM), щоб змінити конфігурацію обладнання: наявна SDRAM на моєму iMX31 була замінена на інший розмір, інакше того ж типу / виробника / компонування / штифтів / таймінгів. відповідно до специфікацій.

Короткий сценарій настройки та поведінка з помилками: мені вдалося отримати завантаження плати (послідовність такої: виконати завантажувач з NAND, скопіювати 'step2 завантажувач' в оперативну пам'ять, виконати 'step2 завантажувач' з оперативної пам'яті). Але, здається, у мене деякі параметри неправильно, оскільки виконання з оперативної пам'яті (після переходу до кроку2) не працює послідовно.

Я зробив велику кількість поглибленого тесту, щоб визначити неправильні параметри, мої результати такі: - однобайтовий / слово читання / запис роботи при виконанні з NAND або JTAG - блок-мудрі / лопні записи, здається, працюють при виконанні з NAND ( JTAG також) Цікава річ: - після блочного запису мені потрібно кілька разів прочитати будь-яку адресу SDRAM, щоб прочитати правильний байт / слово (!) - якщо я змінив налаштування стовпця ТІЛЬКИ, використовую більшу (+1) суму стовпці для "режиму завантаження", але не для підзарядки / оновлення, тоді він працює, але непослідовно (на мою теорію він надійно працює для нижнього діапазону адрес, де пропущений стовпець не має значення).

Щоб отримати уявлення про мою конфігурацію: параметри оперативної пам'яті майже ідентичні встановленим у цьому питанні. Це не дивно, оскільки вони постачаються Freescale, поруч із синхронізацією оперативної пам’яті: На Freescale iMX31, як я можу перевести адресу SDRAM на адресу процесора? Моя оригінальна настройка ідентична (також 64MB SDRAM як у посиланні), моя нова оперативна пам'ять - 128 Мб. Всі контрольні плати поставляються або з 64 МБ, або з 128 МБ, тому обидва значення підтримуються iMX31 та похідними.

Зміни, які я маю внести (Увага: припущення!), Є лише в конфігурації COLUMN (це ще один стовпець) ОЗУ. Оперативна пам’ять має подвійний об'єм, але в іншому випадку специфікація вимагає абсолютно однакових хронометрів тощо. Оскільки вона має лише один стовпець (див. Посилання вище, мої регістри режиму підзарядки, оновлення та завантаження змінюються від 0x92100000 до 0x92200000 для нової ОЗУ - наприклад ) більше нічого не змінюється.

Питання 1: Чи має сенс моє припущення, що якщо всі таймінги та характеристики фізичних чіпів (які впливають на силу приводу, час та енергоспоживання) схожі, то зміна кількості стовпців може бути "локальною" (не впливаючи на інші настройки)? Цікаво, що я порівнював свої налаштування з багатьма іншими, доступними в Інтернеті (U-Boot, Red-Boot із 128 МБ) та поряд із специфічними параметрами, такими як потужність приводу, я не бачу відмінностей.

Питання 2: Моя поведінка з помилками вище (пише роботу, читає лише частково), ймовірно, характерна для певної недійсної настройки ОЗУ. Хтось може мені порадити, яку настройку детальніше ознайомити? Крім того, можливо встановити "безпечні" параметри так, що навіть при зниженні продуктивності система дозволить мені звузити винуватця.


Ви обгрунтовано впевнені, що проблема не пов’язана з апаратним дизайном (погані ІМС, помилки компонування, погана цілісність сигналу, недостатня потужність ...)?
jbarlow

Відповіді:


1

Для 2 почніть з налаштувань демо-дошки iMX31. Потім змініть їх у міру необхідності для своєї частини (головним чином швидкість і розмір). Зокрема, у вас, мабуть, неправильна кількість станів очікування при прочитанні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.