cerg19 0 3 октября, 2012 Опубликовано 3 октября, 2012 · Жалоба Здравствуйте. Я работаю со Spartan6 и в моём проекте используется Microblaze. Необходимо, чтобы программа Microblaze исполнялась из DDR3 памяти. Я знаю, что для этого необходим Bootloader. Я использовал xapp482.exe для этого, при этом после загрузки ПЛИС из флешки программа не запускается вообще. Может кто подскажет инструкцию для создания прошивки с Bootloader без xapp482.exe. И вообще, не могли бы мне разъяснить что представляет из себя этот Bootloader, я где то читал, что его можно скачать в виде проекта для Microblaze, это так? Понимаю, что тема вроде уже разжёвана ранее в постах, но всё что написано там, никакого результат не принесло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 3 октября, 2012 Опубликовано 3 октября, 2012 · Жалоба И вообще, не могли бы мне разъяснить что представляет из себя этот Bootloader, я где то читал, что его можно скачать в виде проекта для Microblaze, это так? Сразу после снятия Reset процессор должен начать выполнять какую-либо программу, а значит, эта программа уже должна находиться в адресуемой памяти. Из-за сложности современных процессоров в них часто используется начальный загрузчик, т.н. Bootloader. Часто в системе может быть более одного загрузчика - загрузчик первой фазы (First Boot, First Stage Loader, совсем маленький), затем загрузчик второй фазы (Second Stage Loader, большой и сложный, почти ОС), который уже загружает основную ОС. Например, в Microblaze с DDR-ом задача First Boot - убедиться в работоспособности DDR и загрузить туда код Second Loader'а или сразу ОС из какого-нибудь внешнего устройства. В xapp482 это конфигурационное ПЗУ. Подходов к размещению загрузчика может быть много. По-умолчанию и в простейшем для Microblaze случае для загрузчика выделяется внутрикристальная память небольшого объема на BRAM, с адреса 0. Размер памяти зависит от сложности загрузчика и наличия свободных ресурсов. Из-за того, что при загрузке ПЛИС происходит инициализация BRAM, на момент окончания конфигурации программа в BRAM оказывается загружена "сама собой". Это близко к наличию масочной ПЗУ в обычном процессоре, с тем значительным отличием, что в BRAM память можно писать, а значит в ней может не только храниться сама программа, но и находиться стек, секции с изменяемыми переменными и т.п. Добавление загрузчика в битстрим ПЛИС делается программой data2mem, с использованием .bit-файла(битстрима) и .bmm-файла (описания реального маппинга BRAM-ов). Эти два файла меняются каждый раз после синтеза битстрима. xps (или ise) автоматически передает в SDK информацию об аппаратной начинке системы, поэтому в SDK достаточно написать нужную программу, скомпилировать ее в .elf, после чего сгенерировать битстрим с внедренным туда .elf-ом. Все это делается автоматически. Загвоздка при создании загрузчика в том, что в проекте, имеющем внешнюю память, настройки компоновщика (ldscript) будут таковы, что заставят расположить большинство секций elf-а во внешней памяти. Настройки нужно или поменять вручную, или дать сделать это автомату, убрав на время всю внешнюю память в проекте xps. В экспортированном в SDK проекте без внешней памяти нужно сохранить ldscript или запомнить его содержимое, и использовать его далее в основном проекте (с памятью). Убедиться в том, что запуск программы после начальной загрузки происходит нормально, можно загнав туда Hello World или memtest из готовых заготовок в SDK. Сразу же после окончания загрузки ПЛИС битстримом download.bit (по-умолчанию) или же напрямую из SDK, программа должна запуститься и сообщить об этом в UART. В качестве реального First Stage Loader можно использовать готовый от petalinux (если есть, где его найти), или вручную обрезать u-boot до безобразия. Хотя лучше всего (с точки зрения экономии BRAM) написать свой. По-минимуму в FSL должны быть функции загрузки следующей программы из некоего внешнего устройства (ПЗУ), а также из UART-а (для первоначального программирования ПЗУ!) в DDR. Также очень желательно иметь в FSL базовые средства проверки работоспособности внешней памяти (анализ phy_init_done) и короткий тест памяти, сопровождающиеся соответствующей индикацией или печатью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xor.kruger 0 12 ноября, 2012 Опубликовано 12 ноября, 2012 · Жалоба Пользователь Flood все отлично описал. От себя могу добавить что в качестве загрузчика первого уровня можно юзать SrecBootloader. Среди его плюсов - это очень маленький размер и 8 килобайт BRAM'ки для него хватает с головой. Также его можно автоматически сгенерить в SDK и достаточно поменять адреса источника во флэшке и приемника в ОЗУ. Но есть и один минус - файлы должны быть в формате srec, что само по себе говорит о том что файл будет достаточно большого размера. Я использовал следующую схему: Стартовал SrecBootloader с BRAM -> загружал U-Boot с NorFlash -> U-Boot с той же самой флэшки тащил ядро и рутфс. Работало отлично и без сбоев :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DM1206 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба В дополнение - о разборке ELF при загрузке, может пригодиться, мы исользуем. http://electronix.ru/forum/index.php?showt...%E7%F3%ED%E8%ED Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cerg19 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба Всем спасибо за ответы. xor.kruger, у меня вопрос. Сейчас мы используем сторонний загрузчик, при этом мы файл прошивки записываем в формате s19 а загрузчик храниться во флешке в формате bit. Правильно ли я понял что при использовании SrecBootloader файлы прошивки необходимо хранить во флешь в формате srec, и если да, то как перевести формат s19 в srec? Изменено 17 ноября, 2012 пользователем cerg19 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xor.kruger 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба 2 cerg19 Стока из вики link The Motorola S-record format is an ASCII hexadecimal ("hex") text encoding for binary data. It is also known as the SREC[1] or S19[2] format. То есть S19 и есть тот самый SREC :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться