Design Flow для создания загрузочной SPI Flash (файл PROM) для Xilinx Spartan-6, содержащей конфигурационное программное обеспечение bitream AND Microblaze - PullRequest
1 голос
/ 13 апреля 2011

Я хотел бы знать правильную процедуру создания файла PROM (.MCS) для последовательной флэш-памяти SPI, которая включает ОБА битового потока конфигурации FPGA и программное обеспечение, которое будет использоваться процессором Microblaze. Это при условии, что все мои аппаратные и программные разработки выполнены.

Я использую оценочную плату Xilinx Spartan-6, SP605, которая имеет несколько энергонезависимых запоминающих устройств, и я хочу использовать последовательный SPI Flash для хранения ОБОИ битового потока ПЛИС И программного обеспечения Microblaze, которое необходимо загрузить в объем памяти. Я могу достичь этого только в том случае, если код Microblaze должен находиться во внутренних BRAM. Если я создаю свой скрипт ссылки таким образом, чтобы он помещал код или разделы данных во внешнюю память DDR3, он завершился неудачей.

- РЕДАКТИРОВАТЬ -

ОК, поэтому я попробовал несколько разных вещей, и у меня есть лучшее понимание того, что мне нужно делать, но все равно безуспешно (что, кстати, спасибо за ваш ответ, Энди). Итак, я попробовал 2 разные вещи. Для них обоих я сначала объединяю системный поток битов с программой загрузчика, чтобы сгенерировать новый файл .bit (download.bit), который прекрасно работает (когда вы нажимаете программу в SDK и выбираете загрузчик для загрузки BRAM, он вызывает data2mem для создать новый файл download.bit).

ПЕРВЫЙ ПОДХОД - ФАЙЛ БИН

Как только моя основная программа завершена (со сценарием компоновщика, нацеленного на оперативную память DDR и все остальное), я вызываю mb-objcopy для создания файла bin из .elf one:

mb-objcopy -O binary program -R .vectors_reset -R .vectors.sw_exception -R vectors.interrupt -R .vectors.hw_exception dummy.elf dummy.b

Затем я использую iMPACT для создания и файла MCS, используя download.bit и dummy.b. Я помещаю download.bit по начальному адресу SPI Flash и dummy.b дальше вниз (загрузчик уже указывает на этот адрес). Затем я записываю MCS на последовательную флэш-память SPI, перезагружаюсь, запускается загрузчик и якобы копирует все в оперативную память DDR, но основная программа не работает. Я что-то здесь упускаю? Если я пытаюсь использовать iMPACT без изменения основной программы с .elf на BIN, компьютер зависает (иногда мне даже приходится полностью перезагружать компьютер), и у меня получается очень быстрый и оснащенный памятью компьютер.

Я использовал тот же загрузчик, на который ссылается документ Xilinx XAPP1146.

ВТОРОЙ ПОДХОД - ФАЙЛ SREC

Шаги в значительной степени совпадают, за исключением того, что я использую ту же команду mb-objcopy для генерации SREC вместо файла BIN (на этот раз я не удаляю ни один из секторов, что мне нужно было сделать для BIN-файл, иначе он сгенерирует огромный файл).

Я использовал тот загрузчик, который есть в программном обеспечении SDK.

Пожалуйста, дайте мне знать, если вы успешно создали загрузчик для Microblaze.

Заранее спасибо, Erick

Ответы [ 3 ]

0 голосов
/ 10 октября 2013

Ваааааааааа, чем все это.

  1. Из SDK создайте загрузчик (srec_bootloader)
  2. Программирование ПЛИС с системным битовым файлом и загрузчиком srec.
  3. Возьмите файл download.bit с аппаратной платформы
  4. Выполнить следующие команды

impact -batch make_bpi_up.impact

xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin

(Последняя команда выше создает загрузочный образ с вашим битовым файлом FPGA и загрузчиком)

Затем запрограммируйте ваше приложение @ смещение, указанное вашим загрузчиком, используя XSDK Затем запрограммируйте загрузчик @ 0x0, используя XSDK - обратите внимание, что при выборе «Program Flash» из XSDK вам нужно перейти к файлу bootloader.bin и выбрать *, а не .bin; .elf; *. srec в файле. введите фильтр в окне браузера, чтобы вы могли выбрать bootloader.bin

Дайте мне знать, если вам понадобится, чтобы я уточнил любой из шагов. В процессе добавления этого в мой блог со скриншотами на следующей неделе.

Файл make_bpi_up.impact состоит из следующих

setMode -pff                                  
setSubmode -pffparallel                        
setPreference -pref StartupClock:Auto_Correction
addPromDevice -p 1 -size 32768
addDesign -version 0 -startaddress 000000
addDeviceChain -index 0
addDevice -p 1 -file download.bit 
generate -format hex -fillvalue FF -output outfile
quit

MacGyverQue

0 голосов
/ 30 января 2017

щелкните правой кнопкой мыши по microblaze, щелкните по ассоциированному файлу ELF, добавьте свой файл .elf и настройте режим .generate bitstream. и конвертировать .bit в .mcs и скачать файл .. оба файла .elf и .mcs сохраняются во флэш-памяти

0 голосов
/ 09 февраля 2012

Я создал загрузчик, но с двумя отличиями от вашего:

  • Они не берут программу с того же флэш-устройства, с которого поступает битовый поток.
  • Я использую пользовательский код для программирования вспышки, а не с помощью воздействия.

Если это даст вам какие-либо идеи, вот что я делаю:

У меня есть отдельное флэш-устройство SPI, с которого я читаю ELF-файл, который я затем анализирую на лету и переношу соответствующие разделы кода / инициализации в DRAM. Нет никаких причин, по которым ваш загрузчик не мог загружаться с того же флэш-устройства, что и конфигурация.

Это не полностью гибкий анализатор ELF, так как предполагается, что разделы располагаются в том же порядке, в каком их сообщает таблица заголовков разделов, но именно так инструменты Microblaze создают файлы, поэтому все работает нормально.

(И не забудьте убрать отладочную информацию из файла перед тем, как запрограммировать его для прошивки!)

...