Jump to content
    

MicroBlaze MCS не компилирует

Первый раз трогаю MicroBlaze, до этого дела с ним не имел.

Проект под ISE 14.7, Spartan 6.

Нашёл видос, делаю как там.

https://youtu.be/oKAG_IcD0ag

Дошёл до 6:50. Там, после синтеза, запускают некий скрипт, собственно об этом даже написано в самом генераторе корки:

Безымянный2.png

Вот только по исполнению этого скрипта выдаётся вот такое сообщение:

Quote

Command>source ipcore_dir/MicroBlaze/MicroBlaze/microblaze_mcs_setup.tcl
microblaze_mcs_setup: Found 1 MicroBlaze MCS core.
microblaze_mcs_setup: Existing ngdbuild "-bm" option unchanged.
microblaze_mcs_setup: Done.

в отличии от.

И что самое интересное, после его запуска не проходит имплементация:

Quote

ERROR:NgdBuild:989 - Failed to process BMM information
   ipcore_dir/MicroBlaze/MicroBlaze.bmm
INTERNAL_ERROR::45 - Memory allocation leak of 112 bytes at 0x06DC0C38 for a 'AddressMappingType' record.
INTERNAL_ERROR::45 - Memory allocation leak of 65 bytes at 0x07142600 for a StrNew.
INTERNAL_ERROR::45 - Memory allocation leak of 88 bytes at 0x07162178 for a 'AddressMapType' record.
INTERNAL_ERROR::45 - Memory allocation leak of 40 bytes at 0x070B28F8 for a 'symbol_context' record.
INTERNAL_ERROR::45 - Memory allocation leak of 34 bytes at 0x070A2BA0 for a StrDup.
INTERNAL_ERROR::45 - Memory allocation leak of 16 bytes at 0x070A1E40 for a 'DataFileNameListType' record.
INTERNAL_ERROR::45 - Memory allocation leak of 24 bytes at 0x070A2A98 for a 'AddressSpaceLinkType' record.
INTERNAL_ERROR::45 - Memory allocation leak of 96 bytes at 0x07162240 for 'void *' data.

Что это такое и как с этим бороться?

Проект прикладываю.

MicroBlaze.rar

Share this post


Link to post
Share on other sites

Пока других ответов в теме нет, напишу что когда работал с Microblaze на Spartan 6, никаких таких скриптов запускать не приходилось. Но я создавал проект в XSDK и уже там подцеплял этот BMM файл при создании проекта. Может туториал показывает как вкомпилить программу сразу в bit? Есть ли возможность попробовать пока не доходить до такого, а попробовать собрать без этого? И прошить программу через JTAG из XSDK. Может для начала так заработает? Попробуйте туториал, где упоминается XSDK, возможно с ним на первое время будет проще. И уже потом можно будет назначить файл ELF (пишу по памяти), и он попадет в bit файл. Без ручных манипуляций и скриптов. Давно не работал с Microblaze в ISE, но скриптов не помню. Надеюсь я немного помог

Share this post


Link to post
Share on other sites

2 часа назад, 1891ВМ12Я сказал:

Пока других ответов в теме нет, напишу что когда работал с Microblaze на Spartan 6, никаких таких скриптов запускать не приходилось. Но я создавал проект в XSDK и уже там подцеплял этот BMM файл при создании проекта. Может туториал показывает как вкомпилить программу сразу в bit? Есть ли возможность попробовать пока не доходить до такого, а попробовать собрать без этого? И прошить программу через JTAG из XSDK. Может для начала так заработает? Попробуйте туториал, где упоминается XSDK, возможно с ним на первое время будет проще. И уже потом можно будет назначить файл ELF (пишу по памяти), и он попадет в bit файл. Без ручных манипуляций и скриптов. Давно не работал с Microblaze в ISE, но скриптов не помню. Надеюсь я немного помог

До этого ни разу не работал с софт-процессорами, во всей этой технологии и терминологии разобраться с наскока непросто.

В общем если тот скрипт не запускать, то проект компилируется, а вот программа для процессора из эклипса уже не запускается. Не исключено, что я её как-то не так запускаю.

Share this post


Link to post
Share on other sites

20 hours ago, Jackov said:

Не исключено, что я её как-то не так запускаю.

Подробнее, она прежде всего прошивается или нет? То есть работает download & verify? Далее, "популярная" ошибка - резет. Он должен быть правильной полярности. Обычно, если софт-проц висит в резете то и не прошить его никак

Share this post


Link to post
Share on other sites

В 19.07.2023 в 23:38, 1891ВМ12Я сказал:

Подробнее, она прежде всего прошивается или нет? То есть работает download & verify? Далее, "популярная" ошибка - резет. Он должен быть правильной полярности. Обычно, если софт-проц висит в резете то и не прошить его никак

Ух! Запустил каким-то чудом несколько раз. В режиме отладки побегал бегунком по элементарному циклу, но уже результат!

Правда при выходе из режима отладки что-то случается и уже повторно в него не входит, приходится полностью перезагружать систему - и SDK и битстрим заливать заново. А потом так вообще всё работать перестало, но там уже конец дня был, ничего толком понять не успел.

Смущает медленная скорость работы отладчика, от момента нажатия на кнопку шаг вперёд до перемещения бегунка проходит секунды две.

Говорят можно как-то через уарт отлаживаться. Это, я так понимаю, на ногу плисины выводим уарт и далее через переходник уарт_3,3в -> усб выводим сообщения в консоль функциями printf(), расставленными в программе в нужных местах, так что ли?

И я всё ещё не понимаю как прошивку для процессора засунуть внутрь битстрима?

И надо будет ещё проверить одновременную работу режима отладки и чипскопа.

Share this post


Link to post
Share on other sites

7 minutes ago, Jackov said:

Говорят можно как-то через уарт отлаживаться. Это, я так понимаю, на ногу плисины выводим уарт и далее через переходник уарт_3,3в -> усб выводим сообщения в консоль функциями printf(), расставленными в программе в нужных местах, так что ли?

Нет, XSDK поддерживает проброс printf прямо через JTAG, с ходу не подскажу как, давно делал, но это настраивается в опциях проекта как то, то ли в настройках BSP. Типа куда вываливать stdout

Медленно шагает - я бы не ожидал быстрой работы такого способа отладки. Брейкоинты помогут немного

Назначить elf файл это в списке файлов проекта, там где IP ядро микроблейза, если там зайти в опции, может там? Давно делал не помню, но именно в списке файлов проекта где ядро, в его настройках можно поискать

А я когда возился с Nios 2 и Microblaze стремился сделать скрипты в Linux-е, чтобы их вызывать для автоматической сборки и заливки прошивки, а также чтобы консоль прям в командной строке выползала

Share this post


Link to post
Share on other sites

В 21.07.2023 в 00:49, 1891ВМ12Я сказал:

Назначить elf файл это в списке файлов проекта, там где IP ядро микроблейза, если там зайти в опции, может там? Давно делал не помню, но именно в списке файлов проекта где ядро, в его настройках можно поискать

Имеется в виду конфигуратор корки, что на картинке в первом посте? Ничего такого там не нашёл.

Share this post


Link to post
Share on other sites

On 7/23/2023 at 8:31 PM, Jackov said:

Имеется в виду конфигуратор корки, что на картинке в первом посте? Ничего такого там не нашёл.

К сожалению, не могу подсказать. Это утерянные знания. Но помню что в любом туториале было про это, а я легко находил это место

Share this post


Link to post
Share on other sites

On 7/21/2023 at 12:42 AM, Jackov said:

Смущает медленная скорость работы отладчика, от момента нажатия на кнопку шаг вперёд до перемещения бегунка проходит секунды две.

Говорят можно как-то через уарт отлаживаться. Это, я так понимаю, на ногу плисины выводим уарт и далее через переходник уарт_3,3в -> усб выводим сообщения в консоль функциями printf(), расставленными в программе в нужных местах, так что ли?

И я всё ещё не понимаю как прошивку для процессора засунуть внутрь битстрима?

И надо будет ещё проверить одновременную работу режима отладки и чипскопа.

Скорось можно увеличить более быстрым кабелем. У меня SMT2-HS работает довольно шустро.

На uart обычно перенаправляют stdout, через который работает printf и т.п. Настраиваться должно в пакете поддержки. (ISE последний раз использовал лет 15 назад).

Прошивку процессора не надо засовывать внутрь битстрима, хотя и можно - я делал в ПЛИС ядро ROM 256х32, в которое засовывал начальный загрузчик для процессора, правда внешнего ADSP-TS201, который начинает выполняться процессором (надо чтобы ПЛИС загрузилась раньше старта процессора).

Прошивка складывается в загрузочную память (флешку и т.п.) и загружается в память процессора после загрузки битстрима в ПЛИС. В случае отладки, отладчик сам загружает битстрим, а потом программу в процессор и останавливает программу в начальной точке.

Share this post


Link to post
Share on other sites

В 04.08.2023 в 19:19, Dimonira сказал:

Скорось можно увеличить более быстрым кабелем.

Взять кабель покороче?

 

В 04.08.2023 в 19:19, Dimonira сказал:

Прошивку процессора не надо засовывать внутрь битстрима, хотя и можно - я делал в ПЛИС ядро ROM 256х32, в которое засовывал начальный загрузчик для процессора, правда внешнего ADSP-TS201, который начинает выполняться процессором (надо чтобы ПЛИС загрузилась раньше старта процессора).

Прошивка складывается в загрузочную память (флешку и т.п.) и загружается в память процессора после загрузки битстрима в ПЛИС. В случае отладки, отладчик сам загружает битстрим, а потом программу в процессор и останавливает программу в начальной точке.

Зачем такие сложности, не проще ли внутрь битстрима засунуть?

Share this post


Link to post
Share on other sites

On 8/6/2023 at 6:41 PM, Jackov said:

Взять кабель покороче?

 

Зачем такие сложности, не проще ли внутрь битстрима засунуть?

1. Взять другой кабель, который быстрее.

2. Процессор внешний, ему то откуда грузиться? Он про битстрим ничего не знает. Для него нет своей памяти программ. Есть только EEPROM для ПЛИС, которая подключена к ПЛИС, а не к процессору. А сложности для простоты использования (в одну EEPROM шьётся всё) и уменьшения количества корпусов микросхем на плате.

Share this post


Link to post
Share on other sites

1 час назад, Dimonira сказал:

1. Взять другой кабель, который быстрее.

2. Процессор внешний, ему то откуда грузиться? Он про битстрим ничего не знает. Для него нет своей памяти программ. Есть только EEPROM для ПЛИС, которая подключена к ПЛИС, а не к процессору. А сложности для простоты использования (в одну EEPROM шьётся всё) и уменьшения количества корпусов микросхем на плате.

1. Чем отличается кабель который побыстрее от которого не побыстрее?

2. Если внешний - то да. В моём-то случае Микроблейз это внутренний. Память программ и память данных это всего лишь блоки ОЗУ внутри ПЛИС. И вот как их вычислить и как залить туда данные пока непонятно.

Share this post


Link to post
Share on other sites

14 часов назад, andrew_su сказал:

Должно помочь. 38-я страница.

Спасибо, буду пробовать.

Share this post


Link to post
Share on other sites

В 18.07.2023 в 03:28, Jackov сказал:

Вот только по исполнению этого скрипта выдаётся вот такое сообщение:

В 21.07.2023 в 00:42, Jackov сказал:

И я всё ещё не понимаю как прошивку для процессора засунуть внутрь битстрима?

Разобрался, и года не прошло.

Есть два bmm-файла, один в проекте плисины в каталоге где файлы корки памяти лежат, другой в проекте SDK. Называются по разному, но оба .bmm. Надо следить чтобы в обоих этих файлах пути до блоков памяти были актуальны, а это почему-то не всегда так.

  

В 21.07.2023 в 00:42, Jackov сказал:

И надо будет ещё проверить одновременную работу режима отладки и чипскопа.

А вот отладчик и чипскоп очень плохо работают одновременно. Если поставить чипскоп на ожидание и ходить в отладчике по шагам, то либо чипскоп фигню будет показывать, либо отладчик повиснет. Иногда бывает и нормально, но это скорее исключение, всё равно работать так невозможно.

Подозреваю, что всё же я что-то делаю не так, ибо ситуация то типичная, не могли же они такую халтуру наделать и оставить не исправляя на протяжении многих версий?

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.

×
×
  • Create New...