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

 
 
 
Reply to this topicStart new topic
> проблема с nios2ide, а может, с usb-blaster
vadimuzzz
сообщение Oct 6 2008, 11:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



при отладке проекта в nios2ide возникла проблема: заглючил то ли программатор, то ли сам отладчик.
например, при загрузке программы в ОЗУ, выкидывает соощение "verify failed at address ..." и отладка не стартует.
иногда отладка стартует, но валится в произвольном месте, не доходя до контрольных точек. может свалиться до входа в main(). потом, после долгого битья в различные бубны, вроде начинает работать, вот сегодня пол-дня отладка проработала, и снова сдохла. при этом нормально работает signal-tap, можно заливать sof и прошивать epcs - все пашет.
а отладчик-ни в какую. поиск по гуглю выдал, что подобная проблема была с usb-blaster ревизии A, и альтера в своих ерратах сей факт отразила (там идет речь о целостности сигналов jtag). у меня ревизия C и беглый осмотр осциллографом проблем не выявил, да и проблема с отладчиком проявляется в произвольное время. единственная пока мысль приходит, что это как-то связано с прерываниями (у меня штук 5 компонентов с прерываниями из них один самописный). могут прерывания наглухо блокировать работу процессора? или проблема с jtag?
у кого-нибудь была похожая фигня?
Go to the top of the page
 
+Quote Post
vetal
сообщение Oct 6 2008, 12:15
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
например, при загрузке программы в ОЗУ, выкидывает соощение "verify failed at address ..." и отладка не стартует

Озу внутреннее или внешнее?
Если внешнее - соблюдаются ли временf установки/удержания входных и выходных сигналов триггеров в плис и в микросхеме памяти?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 6 2008, 12:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(vetal @ Oct 6 2008, 19:15) *
Озу внутреннее или внешнее?
Если внешнее - соблюдаются ли временf установки/удержания входных и выходных сигналов триггеров в плис и в микросхеме памяти?

ОЗУ внутреннее, с таймингами вроде все нормально.да и клок 40 МГц всего.
Go to the top of the page
 
+Quote Post
vetal
сообщение Oct 6 2008, 12:32
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
могут прерывания наглухо блокировать работу процессора?

Могут(точно не знаю ставится ли запрет на прерывание при загрузке)! Также работа отладчика может быть заблокирована если ваше устройство имеет доступ к памяти и не выключено на момент загрузки программы.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 6 2008, 12:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(vetal @ Oct 6 2008, 19:32) *
Могут(точно не знаю ставится ли запрет на прерывание при загрузке)! Также работа отладчика может быть заблокирована если ваше устройство имеет доступ к памяти и не выключено на момент загрузки программы.

похоже на второй вариант... я обычно делаю так: собираю проект, заливаю его в epcs, потом рестарт и пытаюсь отладить программу... а программа то уже пашет! и есть устройство с прямым доступом к памяти, оно видно и блокирует... интересно, а как в Avalon'е реализована защита от коллизий, когда 2 мастера к одному слейву подключены? надо почитать... спасибо за наводку!
Go to the top of the page
 
+Quote Post
vetal
сообщение Oct 6 2008, 13:00
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
интересно, а как в Avalon'е реализована защита от коллизий, когда 2 мастера к одному слейву подключены?

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

Решение вашей проблемы состоит в отказе от заливки программы при отладке (ищите в настройках отладчика).

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

epcs - лишнее звено в данной цепочке ( sof заливается из квартуса, а программа из ниоса).
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 6 2008, 13:20
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



"Защита в голове разработчика" - это вы хорошо сказали. к сожалению ошибки гнездятся там же smile.gif
я с массивом и сделал, теперь мне кажется, что надо было отдельные блоки on-chip memory под буферы выделить.
про настройку отладчика я вспомнил, есть такая - не заливать программу, а передать ей управление. от epcs совсем уйти не получится - там настройки лежат. а вот sof + загрузка программы в ОЗУ-похоже то, что нужно. проясните мысль про скрипты для линкера, не понял.
Go to the top of the page
 
+Quote Post
vetal
сообщение Oct 6 2008, 14:04
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
проясните мысль про скрипты для линкера, не понял.

ide ниоса формирует файл настроек линкера на основе информации из sopc builder и указанных вами параметров.
Данные параметры можно настроить более гибко, если прописывать все ручками. Например если у вас есть озу 16кб, то система по умолчанию используем все 16кб, а при ручной настройке можно выделить для программы память, расположенную с 1 килобайта по 11 килобайтsmile.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 6 2008, 14:53
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



хм, интересно. это __attribute__ ((section (".onchip.rwdata"))) что ли? надо копнуть..
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 6 2008, 16:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 vadimuzzz
Код
__attribute__ ((section (".onchip.rwdata")))

только говорит, что располагать нужно в onchip.rwdata.
На сколько я понял, речь идёт о *.x файлах.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 7 2008, 00:40
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



ага, нашел. "многабукаф" в этом файле, потом разберусь. похоже нашел источник своей проблемы: у моего устройства с прямым доступом к памяти, доступ оказался кривым smile.gif - барахлила проверка выхода за пределы массива, видимо устройство писало прямо в память программы - ну и результат налицо...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:29
Рейтинг@Mail.ru


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