Отладка проблем с шиной DDR

У нас есть доска SBC в стиле Leopardboard или Beagleboard, которая плохо себя ведет. Он основан на дизайне Leopardboard (процессор TI-DM368, оперативная память DDR2, флэш-память NAND).

С разработкой софта на леопарде все работает хорошо. Однако обнаружилась первая прототипная плата, которая отказывалась загружаться. Расследование привело нас к моменту, когда замедление тактовой частоты (ARM и DDR) означает, что плата загрузится .

Аппаратное обеспечение (разводка платы, разъемы, микросхема DDR и т. д.) является подозреваемым №1, поскольку мы можем запускать идентичное программное обеспечение на Leopard, и оно работает нормально. К сожалению, характер ошибки означает, что мы не можем загрузиться в Linux, чтобы выполнить напряженные тесты оперативной памяти, которые могут обеспечить более качественную диагностику.

С аппаратной стороны тактовая частота DDR составляет 345 МГц, 486 МГц, 680 МГц в зависимости от настроек тактовой частоты, что выходит за рамки возможностей любого из наших осциллографов или логических анализаторов.

Итак, на самом деле это два вопроса в одном:

С аппаратной точки зрения, кроме «арендовать более быстрый прицел», есть ли подход к диагностике этого с помощью того, что под рукой? У нас есть DSO 200 МГц, логический сниффер <100 МГц и анализатор спектра 1,5 ГГц.

С точки зрения программного обеспечения (я знаю, неправильный форум), если у кого-то есть советы или фрагменты кода по работе с DDR RAM, они будут очень признательны.

Отредактировано, чтобы добавить ответ:

Что ж, мы позаимствовали Tektronix 7104, и он работал так хорошо, что нам даже не пришлось прикасаться к плате ;)

Проблема оказалась в провисшей линии питания 1v3, зажатой ферритами SMT типоразмера 0402.

Симптомы заключались в том, что вблизи предельной рабочей частоты плата загружалась, но блокировалась, когда пытался запустить процесс потоковой передачи видео с высокой пропускной способностью и памятью. Это, в сочетании с тем фактом, что более медленная работа заставляла его работать нормально, заставило нас поверить, что проблема связана с частотой, хотя на самом деле более низкая тактовая частота также оказывала меньшую нагрузку на компоненты блока питания.

Ферритовые шарики 0402, используемые для фильтрации, имели удивительно высокий импеданс по мере увеличения тока, опуская критическую линию питания ниже допустимой рабочей точки.

К сожалению, это означает, что я не могу дать «выигрышный ответ» Дэйву Твиду, но это означает, что наша доска теперь работает. Даже лучше, это вина босса, а не моя!

Да, и Tek 7104 — чертовски удивительные подвиги электронной инженерии. Если вы никогда не видели, как они работают, то это чистый аналог кунг-фу.

Это может быть абсурдно, потому что я мало знаю о памяти DDR или рассматриваемой платформе, но есть ли возможность, скажем, предоставить внешний нечетный тактовый сигнал 20-50 МГц и / или обойти PLL, чтобы вы могли провести сравнительные измерения роста раз и т. д. между досками, используя ваше текущее оборудование?
TBH Я тоже недостаточно знаю о DDR! Я не думаю, что смогу синхронизировать DDR независимо от часов, предоставляемых ЦП, поскольку это выбрасывает тайминги из окна, но я рассмотрю это как возможность. Мы можем замедлить DDR до 345 МГц, что означает номинальную частоту 172,5 МГц (поскольку DDR ​​использует маркетинговые спецификации для спецификаций), чтобы приблизить ее к счастливому месту осциллографа, но лишь незначительно.
Просто чтобы внести ясность, я думал о снижении тактовой частоты всего ЦП, чтобы тактовая частота DDR была уменьшена, а также для диагностики. Я не уверен, что это повлияет на частоту обновления DDR, плюс PLL может не блокироваться в зависимости от конструкции, но это может не быть проблемой с внешними часами (если это позволяет).

Ответы (2)

Это скорее «расширенный комментарий», чем ответ, но позвольте мне начать с того, что я не думаю , что вы сможете отладить эту проблему с таким ограниченным набором тестового оборудования. Человек, имеющий большой опыт создания этих проектов , мог бы получить некоторые подсказки о том, что идет не так, используя их, но у меня складывается впечатление, что вы не такой человек.

Например, проблемы с временем нарастания и звонком не зависят от тактовой частоты. Если вы не видите их на высокой тактовой частоте, вы не увидите их и на низкой тактовой частоте.

Степень успеха в таких вещах зависит от того, насколько точно вы продублировали эталонный проект — не только схему, но и физический дизайн, такой как относительное размещение деталей, стек печатной платы, разводка и согласование длины дорожек и т. д. , Если вы точно не знаете, что делаете, вы должны соответствовать каждой детали эталонного проекта.

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

Кроме того, глупо брать совершенно новый дизайн платы и ожидать, что на ней сразу же загрузится полноценная ОС и приложение. Вы всегда должны планировать разработку (или найти) некоторые базовые функциональные тесты для отдельных функциональных блоков, таких как память и коммуникационные интерфейсы.

Спасибо, Дэйв. Вы правы в том, что я не эксперт по компоновке платы, но парень, который разложил плату, действительно является экспертом и следовал очень строгим правилам проектирования, изложенным TI. Итак, теперь у нас есть доска, которая, по правилам, должна работать, и мы действительно хотим определить, почему она не работает, прежде чем мы вложим кучу времени и денег в другое вращение.

Добавил полную информацию в сообщение, но это были вольты, а не герцы, черт возьми!