Перейти к содержанию
    

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 hours ago, Jackov said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Jackov said:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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, который начинает выполняться процессором (надо чтобы ПЛИС загрузилась раньше старта процессора).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...