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

Bootloader

Здравствуйте.

Я работаю со Spartan6 и в моём проекте используется Microblaze. Необходимо, чтобы программа Microblaze исполнялась из DDR3 памяти. Я знаю, что для этого необходим Bootloader. Я использовал xapp482.exe для этого, при этом после загрузки ПЛИС из флешки программа не запускается вообще. Может кто подскажет инструкцию для создания прошивки с Bootloader без xapp482.exe. И вообще, не могли бы мне разъяснить что представляет из себя этот Bootloader, я где то читал, что его можно скачать в виде проекта для Microblaze, это так?

Понимаю, что тема вроде уже разжёвана ранее в постах, но всё что написано там, никакого результат не принесло.

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


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

И вообще, не могли бы мне разъяснить что представляет из себя этот 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) и короткий тест памяти, сопровождающиеся соответствующей индикацией или печатью.

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


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

Пользователь Flood все отлично описал.

От себя могу добавить что в качестве загрузчика первого уровня можно юзать SrecBootloader. Среди его плюсов - это очень маленький размер и 8 килобайт BRAM'ки для него хватает с головой. Также его можно автоматически сгенерить в SDK и достаточно поменять адреса источника во флэшке и приемника в ОЗУ. Но есть и один минус - файлы должны быть в формате srec, что само по себе говорит о том что файл будет достаточно большого размера.

Я использовал следующую схему: Стартовал SrecBootloader с BRAM -> загружал U-Boot с NorFlash -> U-Boot с той же самой флэшки тащил ядро и рутфс. Работало отлично и без сбоев :)

 

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


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

В дополнение - о разборке ELF при загрузке, может пригодиться, мы исользуем.

http://electronix.ru/forum/index.php?showt...%E7%F3%ED%E8%ED

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


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

Всем спасибо за ответы.

xor.kruger, у меня вопрос. Сейчас мы используем сторонний загрузчик, при этом мы файл прошивки записываем в формате s19 а загрузчик храниться во флешке в формате bit.

Правильно ли я понял что при использовании SrecBootloader файлы прошивки необходимо хранить во флешь в формате srec, и если да, то как перевести формат s19 в srec?

Изменено пользователем cerg19

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


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

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 :)

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


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

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

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

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

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

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

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

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

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

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