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

Microblaze Vivado

Приветствую.

Имеется Kintex-7 FPGA Embedded kit. Помогите разобраться с прошивкой microblaze в постоянную память (BPI).

Делал по инструкции от сюда http://www.wiki.xilinx.com/K7+Embedded+TRD+2013.2 . Все получилось, все хорошо. Но встал вопрос о том, как это все залить в постоянную память. Поискав информацию, натыкались только на ISE. Хотелось бы узнать, что необходимо для Vivado кроме SDK и какая последовательность действий.

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


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

За вчера выяснили некоторые детали. В SDK, когда выбираем "Program FPGA", создается download.bit (как и писали в одной из тем на форуме), на основе system.bit, system_bd.bmm, которые как я понял экспортируются из Vivado, и mb_bootloop_le.elf, который берется из установочной папки Vivado. Данный elf файл, как я понял, является загрузчиком для других elf-файлов, а именно тех, которые сформированы на основе С-программ (из примера это hellow_world_0.elf), и загружаются в ОЗУ, когда мы нажимаем "Run As" в SDK. Таким образом нам нужно как то либо объединить mb_bootloop_le.elf и hellow_world_0.elf, при этом bootloop должен быть изменен так, что бы загрузка происходила уже не из ОЗУ, а из ПЗУ, либо создать такой hellow_world_0.elf, который будет загружаться сам.

Из того, что успели попробовать: на основе download.bit был создан файл для прошивки в ПЗУ, прошили его и попробовали без всяких прошивок в SDK запустить "Run As" для примеров из ссылки выше (hellow_world, board_test_app_Console, board_test_app_Webserver) - все запустилось. Попробовал, при создании download.bit указать hellow_world_0.elf вместо mb_bootloop_le.elf - вылетает с ошибкой. Если выбрать "Program Flash" в SDK, то при прошивке hellow_world_0.elf что то записываается в память, но что то неработоспособное (все светодиоды, 8 штук, которые на плате - горят, хотя при рабочем варианте они все потушены). Если в окошке настроек "Program Flash" поставить галку "Convert ELF to bootloadable SREC format and program" - тоже самое. Возможно нужно колдавать с "Program at offset" - но от куда берется это значение, на каких данных основывается? Прикрепляю скриншот окошка "program Flash" и "Generate linker script" - может что подскажет

post-83819-1416987897_thumb.jpg

post-83819-1416987907_thumb.jpg

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


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

(тихо сам собой веду беседу)

Возник вопрос - а туда ли я копаю? Поясню задачу: нужно самое простое - собрать microblaze с какой либо прошивкой, и что бы это все работало после выключения. Может мне и не нужна прошивка во flash?

Появилась такая мысль:

1) собираем проект microblaze в vivado.

2) экспортируем в SDK.

3) пишем прошивку, тестируем её в SDK.

4) добавляем получившийся hellow_world.elf в проект в vivado (тут два варианта: 1) "Add source" в "Design Source"; 2) "Associate ELF Files").

5) пересобираем проект.

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


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

в SDK есть XilinxTools -> Programm FPGA, который позволяет залить в ПЛИС полную прошивку проект и процессор

Нет к сожалению вивады чтобы узнать как оно там...

 

 

 

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


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

"Program FPGA" заливает только во ОЗУ. При чем, когда я там пробовал подсунуть вместо mb_bootloop_le.elf hellow_world_0.elf из примера, он у меня ругался на кривой elf файл.

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


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

побочным продуктом Program FPGA было бит файл который можно было залить при помощи IMPACT

 

а ругаться он может в том случае если у вас в линкер файле есть секции которые расположены не во флеше и не во внутреннем RAM, то есть если у вас есть DDR или что-то типа. Тогда да он ругается что такое сделать не могет.

Для этого случая надо делать отдельный загрузчик, который переложит секции после старта.

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


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

Да, есть такой бит файл - download.bit. Но как я писал, он у меня получался только с mb_bootloop_le.elf. И да - в примере, который использовали, есть DDR. Не подскажите, где можно посмотреть про создание отдельного загрузчика?

В Vivado 2014 выпилили совсем impact, осталось только само Vivado и SDK. В этом и загвоздка - все туториалы, что я находил, ссылаются на ISE или Vivado 2013, где есть impact или полноценное EDK.

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


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

А ну тогда все понятно.

download.bit - это то что вам нужно, должны быть какие-то средства записи его во флешку ПЛИС. Самый простой способ проверить это взять вашу боевую программу, а дальше поправить линкер скрипт, чтобы никакие секции не попадали во внешний DDR. После этого можно будет сделать download и для основной прошивки. Если с этим все будет ок, то надо двигаться дальше.

 

Задача загрузчика не тривиальна, есть такие документы и ссылки

http://www.xilinx.com/support/answers/43615.html

а также XAPP1140 и XAPP1146,

 

Возможно их надо адаптировать к вивадо, но принцип общий...

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


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

Большое спасибо! Получилось наконец создать работающий download.bit из hellow_world_0.elf. В примере был сгенерирован линкер скрипт таким образом, что только первой секции, та что "Code Section Assignments", была назначена BRAM, остальные в DDR. Заменил на BRAM и все запустилось.

А можно поподробнее про линкер скрипт и секции? А точнее наверно только про секции, так скрипт сам собой генерируется, - что храниться в каждой из них (тут вроде более или менее понятно: первая секция - первая команда программы; вторая - переменные, константы и т.д.; третья - стек) и какая память, в каких случаях для них нужна? Информации много и поэтому сложно в ней сориентироваться, тыкните носом если можно. А то боюсь опять уйти в какие-нибудь дебри.

 

Что бы сузить критерии, могу сказать, что цель проекта - запустить на плате линукс, который будет взаимодействовать остальной логикой.

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


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

секции как везде,

http://www.cs.indiana.edu/hmg/le/project-h...e/doc/swref.pdf

.text - Text Section код програмки

.rodata - Read-Only Data Section - константы

.sdata2 - Small Read-Only Data Section константы простых типов

.data - Read-Write Data Section - переменные

.sdata - Small Read-Write Data Section - переменные простых типов (типа не массивы)

.sbss - Small Un-initialized Data Section - не инициализированные переменные (инициализируются нулем)

.bss - Un-initialized Data Section - не инициализированные переменные (инициализируются нулем)

 

если пишите

int a; - это попадет в sbss

а если

int a=10; - это попадет в sdata

 

const int a=10; в sdata2

 

деление между большими и маленькими данными условно. Типа массивы и структуры попадают в секцию больших данных, а простые переменные типа int в секцию маленьких.

 

можно добавлять свои секции, если надо их как-то в памяти раскладывать в линкер скрипте указываете где какая секция лежит, а при объявлении переменной можно сказать в какую секцию эту переменную запихать.

 

как то так...

 

А вот с запуском линукса - это круто:).... Вы уверены что он вам нужен? У ксалинкса есть своя операционка,

 

В любом случае микроблайз без танцев с бубном больше 64к на программу не даст, а в таком раскладе ни линукс ни даже просто LwIP запустить не удастся, так что надо подключать DDR, и писать загрузчик, и все секции туда перепихивать. Суть загрузчика - это собственно прожка которая запускается в BRAM, а потом копирует данные из феши в DDR и передает управление туда...

 

Но в любом случае линукс - это прям челенж! Да еще проц выбран не тривиальный для таких приколов... Найдите готовую сборку под ваш кристалл если есть и разбирайтесь, так самому с нуля собрать даже не знаю, надо собрать миллиард линуксов до этого, а судя по вопросам про названия секций вы это скорее всего не делали:)

 

 

 

 

 

 

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


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

Спасибо за ответ =)

Абсолютно правы - я в этом ноль. Но надо же с чего то начинать =) Сейчас как раз вот и занимаемся поиском каких то готовых сборок и пошаговых инструкций.

Про то что нужен или нет - нам сказали, мы арбайтен =)

Про операционку от ксайлинкса - вы про петалинукс?

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


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

ищите видео на ютубе, есть неплохие туторилы

 

когда сказали, надо не арбайтен, надо понять чего хотят. Ведь есть куча ОС которые лучше для железа. Вы надеюсь не медиацентр решили делать на микроблайзе? А для встроенных систем операционки реального времени предпочтительнее...

 

Что дает линукс? Полный езернет стэк с маршрутиризацией, полный USB стэк, файловую систему. И куча гемора с моснтруозными исходниками, геморный доступ к периферии через драйверы и прочее... Да даже сам проц разрастается ведь нужен модуль MMU и т.д. и т.п. Проведи анализ функциональности и предложите какой нибудь FreeRTOS.

 

 

От ксалинкса идет операционка Xilkernel

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


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

Спасибо за совет - будем обсуждать. Наверно действительно мы поторопились, выбрав линукс, при этом плохо изучив что есть помимо. Выбор на него пал, так как это первое что пришло в голову с наличием как раз таки полного езернета. По-сути мы сейчас не столько нацелены на результат, сколько на то, что бы пощупать и оценить сложность.

Но в любом случае без микроблейза никуда =) И вроде уже есть подвижки в этом деле.

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


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

микроблайз зачастую оправдан, правда цинк лучше, там большущая ПЛИС и нормальный проц. И порты линукс на него вроде как есть, если уж очень хочется. Для более дешевого пути мы взяли ПЛИС и внешний АРМ, так удобнее и надежнее, все же оттестированное и запеченное ядро лучше чем собираемое каждый раз.

 

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

 

 

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


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

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

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

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

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

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

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

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

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

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