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

Частый гость
 
Группа: Участник
Сообщений: 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 выводил информацию
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Nov 19 2010, 20:02
|
Профессионал
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 22 2010, 13:10
|
Профессионал
    
Группа: Свой
Сообщений: 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!), и после этого симулирем в моделсиме. Вроде так делал.
|
|
|
|
|
Nov 22 2010, 14:04
|

Лентяй
     
Группа: Свой
Сообщений: 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 или после)?
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Nov 22 2010, 15:41
|

Частый гость
 
Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 22 2010, 15:56
|

Лентяй
     
Группа: Свой
Сообщений: 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, выбрать там нужную память, и проверить, в те ли адреса и те ли данные Ваша система в эту память пишет.
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Nov 22 2010, 17:42
|

Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|