Jump to content

    
Sign in to follow this  
Reffum2

Xilinx. Microblaze проблемы с отладкой

Recommended Posts

Используется микросхема XC7K70T-2FBG484. Это Kintex-7. Конфигурация храниться в SPI PROM N25Q064A13ESED.

В VIVADO 2016.2 создал проект на базе Microblaze. В SDK создал простую Hello World программу. Если записать эту прошивку в ПЛИС напрямую(не во flash) по JTAG и затем подключиться отладчиком, то все работает, но иногда при срабатывании breakpoint в консоли XMD выдается вот такая ошибка:

 

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()

- Появляется вот такая ошибка:

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.

 

Какие могут быть причины такого поведения?

 

Share this post


Link to post
Share on other sites
Какие могут быть причины такого поведения?

 

Постою послушаю (ц)

У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по JTAG. В свое время я попал в полный тупик, когда обнаружил, что Chipscope и дебагер микроблейза вместе не хотят работать - пошаговое исполнение программ намертво повисает в случайный (весьма быстрый) момент времени.

Share this post


Link to post
Share on other sites
Постою послушаю (ц)

У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по 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

Edited by Олег Гаврильченко

Share this post


Link to post
Share on other sites

Можно ли взглянуть на "строение системы" Microblaze? Там где блоки между собой соединяются? Когда работал с Microblaze подобных проблем не видел, разве что если линия Reset как-то не так сделана. В таком случае и на Nios2 подобные глюки вылезают. И как правило это не потому что "у них глючит", а скорее из-за собственного недопонимания. Верю что в сложных ядрах и системах проявятся проблемы, но на таких простейших - едва ли.

Share this post


Link to post
Share on other sites
Можно ли взглянуть на "строение системы" Microblaze? Там где блоки между собой соединяются? Когда работал с Microblaze подобных проблем не видел, разве что если линия Reset как-то не так сделана. В таком случае и на Nios2 подобные глюки вылезают. И как правило это не потому что "у них глючит", а скорее из-за собственного недопонимания. Верю что в сложных ядрах и системах проявятся проблемы, но на таких простейших - едва ли.

Я перешел на отладку с помощью XSDB, исправил несколько ошибок и эта проблема ушла. Но появилась другая - все работает, если загружать прошивку по JTAG, но при старте из Flash программа некоторое время работает и затем повисает в непонятном состоянии.

Share this post


Link to post
Share on other sites

У Вас наверняка блейз в ресете сидит по какой то причине. Было такое тоже... Возможно длл/плл не залочилась которая кормит блейз клоками, ну или вы ее не подключили.

Покажите верхний уровень куда блейз включен и блок схему проц системы с блейзом

 

Share this post


Link to post
Share on other sites
У Вас наверняка блейз в ресете сидит по какой то причине. Было такое тоже... Возможно длл/плл не залочилась которая кормит блейз клоками, ну или вы ее не подключили.

Покажите верхний уровень куда блейз включен и блок схему проц системы с блейзом

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

mb_system_copy.pdf

Edited by Олег Гаврильченко

Share this post


Link to post
Share on other sites
ну тогда могу порекомендовать повесить ILA на все управляющие сигналы на блейзе чтобы посмотреть кто гадит, имею ввиду внутри

Этой проблемы еще ни разу не возникало если я подключаюсь к ПЛИС по JTAG. И это стабильно. К тому же, я даже не знаю, какие сигналы смотреть. Обмен по шине с памятью?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this