Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Xilinx. Microblaze проблемы с отладкой
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Олег Гаврильченко
Используется микросхема XC7K70T-2FBG484. Это Kintex-7. Конфигурация храниться в SPI PROM N25Q064A13ESED.
В VIVADO 2016.2 создал проект на базе Microblaze. В SDK создал простую Hello World программу. Если записать эту прошивку в ПЛИС напрямую(не во flash) по JTAG и затем подключиться отладчиком, то все работает, но иногда при срабатывании breakpoint в консоли XMD выдается вот такая ошибка:

CODE
Error: MicroBlaze Pipeline Stalled on a Blocking Instruction or Invalid Bus Access
Stalled PC: 0x00001180
Try Resetting the Processor to Continue..


Адрес в строке: "Stalled PC: 0x00001180" - это адрес на котором произошел останов.

Далее, если прошить конфигурацию во flash и подключиться к ней отладчиком, появляется большое кол-во непонятных ошибок.
- Программа иногда возвращается к началу main()
- Появляется вот такая ошибка:
CODE
MicroBlaze is in Sleep mode and Wake up is being executed
MicroBlaze is in Sleep mode and Wake up is being executed
ERROR: Unable to Stop Processor

Time out: Unable to Wake up MicroBlazeTime out: Unable to Wake up MicroBlazeUNABLE to STOP MicroBlaze

Она может быть как сразу при попытке подключения, так и потом, во время работы.
Я проверил целостность данных, зашитых во flash.

Какие могут быть причины такого поведения?
alexadmin
Цитата(Олег Гаврильченко @ Jan 26 2017, 13:17) *
Какие могут быть причины такого поведения?


Постою послушаю (ц)
У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по JTAG. В свое время я попал в полный тупик, когда обнаружил, что Chipscope и дебагер микроблейза вместе не хотят работать - пошаговое исполнение программ намертво повисает в случайный (весьма быстрый) момент времени.
Олег Гаврильченко
Цитата(alexadmin @ Jan 26 2017, 15:45) *
Постою послушаю (ц)
У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по JTAG. В свое время я попал в полный тупик, когда обнаружил, что Chipscope и дебагер микроблейза вместе не хотят работать - пошаговое исполнение программ намертво повисает в случайный (весьма быстрый) момент времени.


Попробовал отладку с помощью XSDB. Проблем стало меньше, точнее только 1: при запуске из FLASH программа почему-то зависает. К процессору можно подключиться, но остановить его командой stop нельзя. XSDB пишет:
xsdb% targets
1 xc7k70t
2 Debug Module at USER2
3* MicroBlaze #0 (Running)
xsdb% state
Running
xsdb% stop
Cannot stop MicroBlaze
AVR
Можно ли взглянуть на "строение системы" Microblaze? Там где блоки между собой соединяются? Когда работал с Microblaze подобных проблем не видел, разве что если линия Reset как-то не так сделана. В таком случае и на Nios2 подобные глюки вылезают. И как правило это не потому что "у них глючит", а скорее из-за собственного недопонимания. Верю что в сложных ядрах и системах проявятся проблемы, но на таких простейших - едва ли.
Олег Гаврильченко
Цитата(AVR @ Jan 31 2017, 12:02) *
Можно ли взглянуть на "строение системы" Microblaze? Там где блоки между собой соединяются? Когда работал с Microblaze подобных проблем не видел, разве что если линия Reset как-то не так сделана. В таком случае и на Nios2 подобные глюки вылезают. И как правило это не потому что "у них глючит", а скорее из-за собственного недопонимания. Верю что в сложных ядрах и системах проявятся проблемы, но на таких простейших - едва ли.

Я перешел на отладку с помощью XSDB, исправил несколько ошибок и эта проблема ушла. Но появилась другая - все работает, если загружать прошивку по JTAG, но при старте из Flash программа некоторое время работает и затем повисает в непонятном состоянии.
vitus_strom
У Вас наверняка блейз в ресете сидит по какой то причине. Было такое тоже... Возможно длл/плл не залочилась которая кормит блейз клоками, ну или вы ее не подключили.
Покажите верхний уровень куда блейз включен и блок схему проц системы с блейзом
Олег Гаврильченко
Цитата(vitus_strom @ Jan 31 2017, 14:36) *
У Вас наверняка блейз в ресете сидит по какой то причине. Было такое тоже... Возможно длл/плл не залочилась которая кормит блейз клоками, ну или вы ее не подключили.
Покажите верхний уровень куда блейз включен и блок схему проц системы с блейзом

Верхний уровень Block Design. Сигналы clock_rtl и reset_rtl приходят прямо с пинов ПЛИС. Частота clock_rtl 20 MHz
vitus_strom
Полярность ресетов проверьте, и aux_reset лучше к основному прикрутить.

В остальном вроде все нормально
vitus_strom
ну и качество клока проверьте чтобы длл лок выставил
Олег Гаврильченко
Цитата(vitus_strom @ Feb 1 2017, 00:28) *
ну и качество клока проверьте чтобы длл лок выставил

Соединил aux_reset и ext_reset. Проверил их полярность. Все осталось по прежнему.
vitus_strom
ну тогда могу порекомендовать повесить ILA на все управляющие сигналы на блейзе чтобы посмотреть кто гадит, имею ввиду внутри
Олег Гаврильченко
Цитата(vitus_strom @ Feb 2 2017, 22:35) *
ну тогда могу порекомендовать повесить ILA на все управляющие сигналы на блейзе чтобы посмотреть кто гадит, имею ввиду внутри

Этой проблемы еще ни разу не возникало если я подключаюсь к ПЛИС по JTAG. И это стабильно. К тому же, я даже не знаю, какие сигналы смотреть. Обмен по шине с памятью?
vitus_strom
ресеты на ресет контроллере и ресет на микроблейзе
ну и не забудте обконстрейнить сам микроблейз
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.