Я хотел бы знать правильную процедуру создания файла 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