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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Тест памяти DDR проходит, но программа из DDR не исполняется, Xilinx ISE/EDK 14.7 Spartan-6
aabmail
сообщение Jul 2 2015, 08:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Коллеги, подскажите, в чем может быть дело.

Имеется плата со Spartan-6 и DDR MT41J128M16HA-125.
На основе Base system builder cоздал проект в EDK, экспортировал в SDK, сгенерировал программу с тестом памяти - работает.
Далее создаю программу Hello World, в linker script все секции прописываю в DDR - не работает.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 2 2015, 08:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А как она из флешки в ДДР попадет?
Загрузчик писать надо.
для тестов надо загрузить бутлуп в ПЛИС в микроблайз, А потом залить программу и стартануть из РАМа. Это если жетагом.

А автономный старт требует дополнительно загрузчика, который будет перепихивать программу из флеш в ддр
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 2 2015, 08:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Согласен, но как я понимаю, для начала надо убедиться в том, что программа запускается через XMD.

Цитата(Golikov A. @ Jul 2 2015, 11:39) *
А как она из флешки в ДДР попадет?
Загрузчик писать надо.
для тестов надо загрузить бутлуп в ПЛИС в микроблайз, А потом залить программу и стартануть из РАМа. Это если жетагом.

А автономный старт требует дополнительно загрузчика, который будет перепихивать программу из флеш в ддр

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 2 2015, 08:44
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



для этого в SDK есть запуск проекта, сначала загружаете в ПЛИС bootloop - это автоматом создаваемый проект, можно в флеш прошить, можно просто грузить каждый раз
А потом вверху SDK есть иконка запустить или отладить. Через них запускаете проект из ДДР на запуск или на отладку
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 2 2015, 08:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Когда я в SDK нажимаю на иконку "запустить", программа не запускается.
Цитата(Golikov A. @ Jul 2 2015, 11:44) *
для этого в SDK есть запуск проекта, сначала загружаете в ПЛИС bootloop - это автоматом создаваемый проект, можно в флеш прошить, можно просто грузить каждый раз
А потом вверху SDK есть иконка запустить или отладить. Через них запускаете проект из ДДР на запуск или на отладку

Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 2 2015, 09:41
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Предположение. Не помню как там у Xilinx, у альтеровского ниоса есть порт мастера данных и порт мастера инструкций. Когда ставишь on-chip ram, то оба этих порта на её слейв порт цепляешь и вектора процессора прописываешь на эту память. С векторами не в курсе, но если вы хотите секцию .text с собственно программой грузить с ddr, то проверьте, что у вас instruction master к ней подключен, может быть в этом дело.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 2 2015, 10:18
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Спасибо. Сейчас, правда выясняется, что наши PCB-дизайнеры сочли возможным заменить low-ESR конденсаторы на обыкновенные. М.б. в этом дело, потому как и тест памяти не всегда проходит...

А где можно про векторы почитать, ссылку не скинете? wink.gif



Цитата(serjj @ Jul 2 2015, 12:41) *
Предположение. Не помню как там у Xilinx, у альтеровского ниоса есть порт мастера данных и порт мастера инструкций. Когда ставишь on-chip ram, то оба этих порта на её слейв порт цепляешь и вектора процессора прописываешь на эту память. С векторами не в курсе, но если вы хотите секцию .text с собственно программой грузить с ddr, то проверьте, что у вас instruction master к ней подключен, может быть в этом дело.

Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 2 2015, 11:20
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
А где можно про векторы почитать, ссылку не скинете?

У меня самого руки не доходили еще основательно изучить эти моменты. Там основная идея, что есть Reset Vector и Exception Vector. Вам наиболее инетересен первый, т.к. это тот адрес, с которого начинается бут сразу после резета. Можете покопать в эту сторону. Соответсвенно по этому адресу некий асембер, например, лежит, который дальше управление будет передавать.

Цитата
и тест памяти не всегда проходит

а сигналы init_done, cal_success, cal_fail проверяете чип-скопом? Может у вас её что-то сбрасывает? Если для некоторых условий тетс памяти проходит, то сама память то целая.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 2 2015, 11:26
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(serjj @ Jul 2 2015, 14:20) *
У меня самого руки не доходили еще основательно изучить эти моменты. Там основная идея, что есть Reset Vector и Exception Vector. Вам наиболее инетересен первый, т.к. это тот адрес, с которого начинается бут сразу после резета. Можете покопать в эту сторону. Соответсвенно по этому адресу некий асембер, например, лежит, который дальше управление будет передавать.


а сигналы init_done, cal_success, cal_fail проверяете чип-скопом? Может у вас её что-то сбрасывает? Если для некоторых условий тетс памяти проходит, то сама память то целая.


Все это сейчас в EDK, и memory controller там как черный ящик. С левой стороны сигналы на микросхему, с правой - AXIS. Подозреваю, что init_done, cal_success, cal_fail - это некие внутренние сигналы. Если моя версия с ESR-конденсаторами не подтвердится, создам проект в ISE и буду тогда смотреть эти сигналы. Спасибо.
Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 2 2015, 11:51
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
С левой стороны сигналы на микросхему, с правой - AXIS. Подозреваю, что init_done, cal_success, cal_fail - это некие внутренние сигналы.

Вы используете контроллер памяти от Xilinx или сторонний? Контроллер должен выдавать на внутреннюю логику помимо AXIS дополнительный набор сигналов, как то: клоки со встроенного PLL, статусную шину и т.д. Перечисленные сигналы должны входить в статусную шину, просто у них возможно будет другое имя. В EDK можно разместить модуль чип скопа, если мне не изменяет память, и подключить его к этим сигналам. Просто эти сигналы первое, что следует проверять в случае проблем с DDR.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jul 2 2015, 12:21
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(serjj @ Jul 2 2015, 14:51) *
Вы используете контроллер памяти от Xilinx или сторонний? Контроллер должен выдавать на внутреннюю логику помимо AXIS дополнительный набор сигналов, как то: клоки со встроенного PLL, статусную шину и т.д. Перечисленные сигналы должны входить в статусную шину, просто у них возможно будет другое имя. В EDK можно разместить модуль чип скопа, если мне не изменяет память, и подключить его к этим сигналам. Просто эти сигналы первое, что следует проверять в случае проблем с DDR.


Я использую контроллер памяти от Xilinx.
Клоки от встроенного PLL действительного выдаются. Вы правы. Но статусной шины нет. Есть только uo_done_clk. Все остальное м.б. есть внутри, буду смотреть нетлист.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
serjj
сообщение Jul 2 2015, 12:43
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



можно мониторить uo_done_cal и pll_locked, по ним уже можно что-то судить.
Go to the top of the page
 
+Quote Post
Corvus
сообщение Jul 2 2015, 12:58
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Сделайте в XPS очистку проекта и повторный экспорт в SDK. Возможно адресация в проекте изменилась и не передалась в SDK.
Когда память тестировали, адреса точно правильные были указаны? Именно DDR, а не внутренней памяти?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 2 2015, 13:43
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



покажите картинку с шинами
как у вас шина инструкций и шина данных программ идут?

по поводу ДДР - ОЧЕНЬ!!! важно чтобы их контроллер питался от PLL в их регионе, просто через клок визард назначить клоки нельзя. Я налетел на это и время от времени процессор вис. Про это есть приписка в реф дизайне для ДДР, надо добавлять специальный констраин чтобы использвался верный PLL блок. Посмотрите пример любой с ддр вы увидите это констраин.

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

И еще если у вас в проце есть кеши, их надо инвалидейтнуть перед включением, лучше на первом этапе без них вообще. Это в свойствах проца настраивается.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Jul 2 2015, 15:05
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



В S6 ddr3 ввобще без проблем работает, когда создаёте проект визардом прямо в нём указываете ddr3, все настройки правильно визард делает. Потом можно поменять mcb блок на другой. Лучше всего проверить проект на ref плате типа SP605, если всё окей, то на своей. Разводка и пайка своей платы должна быть хорошей, тесты памяти только для младших адресов, они могут проходить, а программа не работать.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 16:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016