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

 
 
> Некорректное симулирование Nios II системы на Cyclone III. Нужна момощь
Shevnnov
сообщение Apr 8 2010, 08:48
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Необходимо просимулировать Sopc систему в ModelSim. Документацию по этому на сайте Альтеры прочитал, AN351 выполнил - всё вроде хорошо было. Сейчас надо необходимо сделать тоже самое на cycloneIII embedded evaluation kit, который шел вместе с с платой.
НА основе sopcinfo файла создаю BSP библиотеку (с пометкой "только дял симуляции", stdin stdout - через jtag_uart) и стандартое hello world приложение. ЗАпускаю проект на"ios II Modelsim", открывается окно - стандартно компилируется дизайн, запускаю. Процессор, память симмулируются, другие модули вроде тоже. ТОлько jtag_uart модуль БЕЗДЕЙСТВУЕТ, хотя должен по идеи выводить "Hello world".
Использую в работе Quartus 9.1 и Nios II SBT, ModelSim 6.5b.
Такое проведение связки printf и jtag_uart замечено только на kit'овой библиотеке от платы CycloneIII. Тоже самое делал на стандартнйо kit'овой библиотеке niosII_cycloneII_2c35, которую можно найти в папке nios2eds\examples - проблем никаких не наблюдал. jtag_uart выводил информацию
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Shevnnov
сообщение Nov 16 2010, 12:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Народ, никто не сталкивался что ли с такой проблемой? Просто сейчас встала острая необходимость отсимулировать кокретный дизайн, т.к. при запуске на тестовой плате повоедение нестабильное. И хочется посмотреть вообще как и в какой последовательности там сигналы ходят.
Отладка надизайне от на Cyclone II из примеров к nios II ide не помогает, так как по другому собрана система и другие исп. компоненты (в частности DDR контроллер)
Go to the top of the page
 
+Quote Post
alexPec
сообщение Nov 19 2010, 20:02
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(Shevnnov @ Nov 16 2010, 15:10) *
Народ, никто не сталкивался что ли с такой проблемой? Просто сейчас встала острая необходимость отсимулировать кокретный дизайн, т.к. при запуске на тестовой плате повоедение нестабильное. И хочется посмотреть вообще как и в какой последовательности там сигналы ходят.
Отладка надизайне от на Cyclone II из примеров к nios II ide не помогает, так как по другому собрана система и другие исп. компоненты (в частности DDR контроллер)

Пробовал собирать ниос, но "только для симуляции" не ставил, как обычно собрал, инициализировав внутреннюю память своей программой (мне хватило внутренней памяти), сначала был jtag uart, я не знал как его симулировать, на выходе были иксы, естессно. Убрал jtagdebug вообще, поставил нормальный UART - все симулировалось отлично, что ожидал, то и получил на выходе уарта, в т.ч. на gate-level.
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 09:47
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Хм. Интересное решение. Надо попробовать. Отпишусь о результатах. Только не понятно почему кроме jtag_uart остальное не активное у меня в проекте. Пробовал просто собирать систему на nios II под Cyclone III, используя только CPU, ddr контроллер, jtag_uart, pll и мой компонент
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 11:00
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Попробовал заменить jtag_uart на uart просто - толку нет. Есть подозрение, что почему то в память не инициализируется программа. Хотя команда mem_init_install выполняется в Nio II SBT. Как можно наверняка проинициализировать память?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 22 2010, 11:53
Сообщение #6


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 22 2010, 14:00) *
Попробовал заменить jtag_uart на uart просто - толку нет. Есть подозрение, что почему то в память не инициализируется программа. Хотя команда mem_init_install выполняется в Nio II SBT. Как можно наверняка проинициализировать память?

Так эта... А файл с содержимым памяти, сгенерированный в SBT, у Вас в папку симулятора (<имя_проекта>_sim) переносится???
И еще - 14ms - это, ИМХО, слишком маленький интервал для симуляции. Сколько времени занимает выполнение стартап-кода?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 11:59
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Ну ddr_sdram.dat файл обновляется при запуске проекта. Как ойенить стартап вермея?
НЕ знаю много или мало это. Но к примеру симуляция на 42ms заняла у меня 12 часов
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 22 2010, 12:10
Сообщение #8


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 22 2010, 14:59) *
Ну ddr_sdram.dat файл обновляется при запуске проекта. Как ойенить стартап вермея?
НЕ знаю много или мало это. Но к примеру симуляция на 42ms заняла у меня 12 часов

Пока, для простоты, откажитесь от SDRAM, и сделайте проект только с On-Chip RAM.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
alexPec
сообщение Nov 22 2010, 13:10
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(Stewart Little @ Nov 22 2010, 15:10) *
Пока, для простоты, откажитесь от SDRAM, и сделайте проект только с On-Chip RAM.


Да можно и с ддр, наверно, но чтоб программа в ончип памяти располагалась, ну по крайней мере тест какой-нибудь, который в короткое время сделает то что вы хотите посмотреть. Посмотрел в квартусе проект свой, в сопц билдере когда тыкаешь на on chip memory в вылетающем окошке написано Memory will be initialized from onchip_memory2_0.hex. Когда соберете сопц, там этот файл будет(он его сам создает), только пустой. А после делаем elf файл, конвертируем утилитой elf2hex (так вроде называется), этим хексом инициализируем память. Устанавливаем вектор сброса на ончип рам, собираем проект в квартусе (без jtag_debug и jtag_uart!), и после этого симулирем в моделсиме. Вроде так делал.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 22 2010, 14:04
Сообщение #10


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(alexPec @ Nov 22 2010, 16:10) *
Да можно и с ддр, наверно, но чтоб программа в ончип памяти располагалась, ну по крайней мере тест какой-нибудь, который в короткое время сделает то что вы хотите посмотреть. Посмотрел в квартусе проект свой, в сопц билдере когда тыкаешь на on chip memory в вылетающем окошке написано Memory will be initialized from onchip_memory2_0.hex. Когда соберете сопц, там этот файл будет(он его сам создает), только пустой. А после делаем elf файл, конвертируем утилитой elf2hex (так вроде называется), этим хексом инициализируем память. Устанавливаем вектор сброса на ончип рам, собираем проект в квартусе (без jtag_debug и jtag_uart!), и после этого симулирем в моделсиме. Вроде так делал.

Это все делается автоматически, если в SOPC'е указана необходимость симуляции, и в NiosII SBT получен таргет для mem_init_install.
Только что вот проверил (проект: niosII economy + onchip_ram + jtag_uart) - все симулируется как положено, в лог "Hello from Nios II!" выводится...


Еще вопросы - в SOPC Builder'е, в свойствах JTAG-UART какие сделаны установки симуляции? Макрос jtag_uart_log в какой момент запускается (до открытия окна wave или после)?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 14:05
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Зачем квартус? Я сейчас пытаюсь запустить на ModelSim через NiosII SBT. Пока квартус проект не трогаю, используя только SOPC Builder, Nios II SBT и ModelSim
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 22 2010, 14:57
Сообщение #12


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 22 2010, 17:05) *
Зачем квартус? Я сейчас пытаюсь запустить на ModelSim через NiosII SBT. Пока квартус проект не трогаю, используя только SOPC Builder, Nios II SBT и ModelSim

Еще вопрос - на временной диаграмме (в окне wave), на линии av_write_n (jtag_uart'а) какая-нибудь активность наблюдается?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 15:41
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Никакой - тишина и спокойствие, чтоб его!
Кстати, еще один вопрос. Столкунлся с еще одной проблемой. Как говориться если что-то не получается, а что-то работает, пока будем использовать работающее.
Для Cyclone II создал систему структуры, схожей с той, что не запускалсь для Cyclone III. Jtag работает, программа тоже выполняется. Но есть косяк с адресацией. Расшифрую: драйвер моего компонента в этой системе работает следующим образом - тестова программа командой malloc выделяет область памяти, помещает туда данные и передает компоненту этот адрес. Компонент же с помощью интерфейса Avalon MM Master считывает по полученному адресу данные. Но при обращении компоненту по данному адресу readdata оказываетя равным 32'bx.
Схема моей системы - в приложении.

Цитата(Stewart Little @ Nov 22 2010, 17:04) *
Это все делается автоматически, если в SOPC'е указана необходимость симуляции, и в NiosII SBT получен таргет для mem_init_install.
Только что вот проверил (проект: niosII economy + onchip_ram + jtag_uart) - все симулируется как положено, в лог "Hello from Nios II!" выводится...

Еще вопросы - в SOPC Builder'е, в свойствах JTAG-UART какие сделаны установки симуляции? Макрос jtag_uart_log в какой момент запускается (до открытия окна wave или после)?


Система создавалась для CycloneIII device family, jtag_uart запускаю после открытия окна wave (а есть разница до или после?)



Сообщение отредактировал Shevnnov - Nov 22 2010, 15:37
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 22 2010, 15:56
Сообщение #14


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 22 2010, 18:41) *
Никакой - тишина и спокойствие, чтоб его!

Ну так это означает, что память не проинициализирована dat-файлом.
Проверяйте настройки SOPC Builder'а и настройки BSP в NiosII SBT.
После компиляции и получения dat- и sym-файлов убедитесь, что они переносятся в моделсимовскую папку (сравните их по размеру и времени создания, например).
Далее - как именно Вы запускаете ModelSim? В какой папке работаете? Исполняете ли сетаповский скрипт?

Цитата(Shevnnov @ Nov 22 2010, 18:41) *
...Но есть косяк с адресацией.

Первым делом проверьте Ваш ниосовский алгоритм и архитектуру Вашего периферийного устройства - нет ли косяков там.
Также можете открыть в ModelSim'е Memory List, выбрать там нужную память, и проверить, в те ли адреса и те ли данные Ваша система в эту память пишет.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 22 2010, 17:42
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Цитата
Ну так это означает, что память не проинициализирована dat-файлом.
Проверяйте настройки SOPC Builder'а и настройки BSP в NiosII SBT.
После компиляции и получения dat- и sym-файлов убедитесь, что они переносятся в моделсимовскую папку (сравните их по размеру и времени создания, например).
Далее - как именно Вы запускаете ModelSim? В какой папке работаете? Исполняете ли сетаповский скрипт?


Какие настройки нужно проверить? В BSP ставлю галку напротив enable_sim_optimize, stdin,stdout и stderr направлены на jtag_uart. ModelSim запускаю из Nios II SBT нажимая на Run "ModelSim Configuration" (файл указан RUN_ON_HDL_SIMULATOR_ONLY_hello_test.elf). Соответственно рабочая папка у ModelSim'a <project_folder>/niosII_cycloneII_mac_sopc_sim . Симуляцию выполняю через скрипт соответсвующими ключами "s", "w", "jtag_uart_log" и run 1ms

Цитата(Stewart Little @ Nov 22 2010, 18:56) *
Первым делом проверьте Ваш ниосовский алгоритм и архитектуру Вашего периферийного устройства - нет ли косяков там.
Также можете открыть в ModelSim'е Memory List, выбрать там нужную память, и проверить, в те ли адреса и те ли данные Ваша система в эту память пишет.


С компонентом и архитектуры перефирийного устройства косяков не должно бы быть, так как работая в аналогичной системе, но без использвоания Clock-Crossing Bridge (такая система приведена в папке примеров для NiosII_cycloneII_2c35) работало всё корректно.
В Memory List смотрел - адреса вроде те (ну во всяком случае из пула отведенного под ddr)

Сообщение отредактировал Shevnnov - Nov 22 2010, 17:58
Go to the top of the page
 
+Quote Post

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

 


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


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