habenskiy 0 25 ноября, 2014 Опубликовано 25 ноября, 2014 · Жалоба Приветствую. Имеется Kintex-7 FPGA Embedded kit. Помогите разобраться с прошивкой microblaze в постоянную память (BPI). Делал по инструкции от сюда http://www.wiki.xilinx.com/K7+Embedded+TRD+2013.2 . Все получилось, все хорошо. Но встал вопрос о том, как это все залить в постоянную память. Поискав информацию, натыкались только на ISE. Хотелось бы узнать, что необходимо для Vivado кроме SDK и какая последовательность действий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 26 ноября, 2014 Опубликовано 26 ноября, 2014 · Жалоба За вчера выяснили некоторые детали. В 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" - может что подскажет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 26 ноября, 2014 Опубликовано 26 ноября, 2014 · Жалоба (тихо сам собой веду беседу) Возник вопрос - а туда ли я копаю? Поясню задачу: нужно самое простое - собрать microblaze с какой либо прошивкой, и что бы это все работало после выключения. Может мне и не нужна прошивка во flash? Появилась такая мысль: 1) собираем проект microblaze в vivado. 2) экспортируем в SDK. 3) пишем прошивку, тестируем её в SDK. 4) добавляем получившийся hellow_world.elf в проект в vivado (тут два варианта: 1) "Add source" в "Design Source"; 2) "Associate ELF Files"). 5) пересобираем проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 26 ноября, 2014 Опубликовано 26 ноября, 2014 · Жалоба в SDK есть XilinxTools -> Programm FPGA, который позволяет залить в ПЛИС полную прошивку проект и процессор Нет к сожалению вивады чтобы узнать как оно там... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 26 ноября, 2014 Опубликовано 26 ноября, 2014 · Жалоба "Program FPGA" заливает только во ОЗУ. При чем, когда я там пробовал подсунуть вместо mb_bootloop_le.elf hellow_world_0.elf из примера, он у меня ругался на кривой elf файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 26 ноября, 2014 Опубликовано 26 ноября, 2014 · Жалоба побочным продуктом Program FPGA было бит файл который можно было залить при помощи IMPACT а ругаться он может в том случае если у вас в линкер файле есть секции которые расположены не во флеше и не во внутреннем RAM, то есть если у вас есть DDR или что-то типа. Тогда да он ругается что такое сделать не могет. Для этого случая надо делать отдельный загрузчик, который переложит секции после старта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба Да, есть такой бит файл - download.bit. Но как я писал, он у меня получался только с mb_bootloop_le.elf. И да - в примере, который использовали, есть DDR. Не подскажите, где можно посмотреть про создание отдельного загрузчика? В Vivado 2014 выпилили совсем impact, осталось только само Vivado и SDK. В этом и загвоздка - все туториалы, что я находил, ссылаются на ISE или Vivado 2013, где есть impact или полноценное EDK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба А ну тогда все понятно. download.bit - это то что вам нужно, должны быть какие-то средства записи его во флешку ПЛИС. Самый простой способ проверить это взять вашу боевую программу, а дальше поправить линкер скрипт, чтобы никакие секции не попадали во внешний DDR. После этого можно будет сделать download и для основной прошивки. Если с этим все будет ок, то надо двигаться дальше. Задача загрузчика не тривиальна, есть такие документы и ссылки http://www.xilinx.com/support/answers/43615.html а также XAPP1140 и XAPP1146, Возможно их надо адаптировать к вивадо, но принцип общий... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба Большое спасибо! Получилось наконец создать работающий download.bit из hellow_world_0.elf. В примере был сгенерирован линкер скрипт таким образом, что только первой секции, та что "Code Section Assignments", была назначена BRAM, остальные в DDR. Заменил на BRAM и все запустилось. А можно поподробнее про линкер скрипт и секции? А точнее наверно только про секции, так скрипт сам собой генерируется, - что храниться в каждой из них (тут вроде более или менее понятно: первая секция - первая команда программы; вторая - переменные, константы и т.д.; третья - стек) и какая память, в каких случаях для них нужна? Информации много и поэтому сложно в ней сориентироваться, тыкните носом если можно. А то боюсь опять уйти в какие-нибудь дебри. Что бы сузить критерии, могу сказать, что цель проекта - запустить на плате линукс, который будет взаимодействовать остальной логикой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба секции как везде, 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 и передает управление туда... Но в любом случае линукс - это прям челенж! Да еще проц выбран не тривиальный для таких приколов... Найдите готовую сборку под ваш кристалл если есть и разбирайтесь, так самому с нуля собрать даже не знаю, надо собрать миллиард линуксов до этого, а судя по вопросам про названия секций вы это скорее всего не делали:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба Спасибо за ответ =) Абсолютно правы - я в этом ноль. Но надо же с чего то начинать =) Сейчас как раз вот и занимаемся поиском каких то готовых сборок и пошаговых инструкций. Про то что нужен или нет - нам сказали, мы арбайтен =) Про операционку от ксайлинкса - вы про петалинукс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 ноября, 2014 Опубликовано 27 ноября, 2014 · Жалоба ищите видео на ютубе, есть неплохие туторилы когда сказали, надо не арбайтен, надо понять чего хотят. Ведь есть куча ОС которые лучше для железа. Вы надеюсь не медиацентр решили делать на микроблайзе? А для встроенных систем операционки реального времени предпочтительнее... Что дает линукс? Полный езернет стэк с маршрутиризацией, полный USB стэк, файловую систему. И куча гемора с моснтруозными исходниками, геморный доступ к периферии через драйверы и прочее... Да даже сам проц разрастается ведь нужен модуль MMU и т.д. и т.п. Проведи анализ функциональности и предложите какой нибудь FreeRTOS. От ксалинкса идет операционка Xilkernel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
habenskiy 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба Спасибо за совет - будем обсуждать. Наверно действительно мы поторопились, выбрав линукс, при этом плохо изучив что есть помимо. Выбор на него пал, так как это первое что пришло в голову с наличием как раз таки полного езернета. По-сути мы сейчас не столько нацелены на результат, сколько на то, что бы пощупать и оценить сложность. Но в любом случае без микроблейза никуда =) И вроде уже есть подвижки в этом деле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба микроблайз зачастую оправдан, правда цинк лучше, там большущая ПЛИС и нормальный проц. И порты линукс на него вроде как есть, если уж очень хочется. Для более дешевого пути мы взяли ПЛИС и внешний АРМ, так удобнее и надежнее, все же оттестированное и запеченное ядро лучше чем собираемое каждый раз. Когда ковырялся с микроблайзом для езернета использовал LwIP, он идет в виде библиотеки (можно и из исходников собрать если нужны правки, но по дефолту уже все собрано, удобно пользоваться). В целом нормально работал, выдавал неплохую скорость. Стэк популярный и достаточно оттестированный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться