Добрый день
Есть Vivado и SDK, версия 2014.4 и отладочные платы (ZC706, ZedBoard и другие).
Есть несколько сложностей с корректным взаимодействием между Вивадой и SDK, и вообще
иделогией Xilinx в этом плане. Разъясните, пожалуйста, кто "в теме".
1. Vivado: Export hardware - здесь момент следущий:
опция "Include bitstream" - насколько я понимаю, если нам нужен только процессор (PS) без программируемой логики (PL),
то создаём Block design, добавляем Zynq Processing system, настраиваем, экспортируем без Include bitstream (его и не будет),
работаем в SDK как с обычным ARM-процессором. Так?
Если мы что-то насоздавали в ПЛИС, то генерируем bitstream и экспортируем с ним. Но тогда возникает проблема
синхронизации файлов - копия битстрима уходит в SDK и, если мы потом что-то изменим в FPGA-коде, SDK всё равно будет
использовать старый вариант. Можно, конечно, попробовать обновить данные путём Change Hardware Platform Specification в SDK
или вручную скопировать новый битстрим, но это какие-то костыли. Непонятно.
2. SDK. Создание конфигурации отладки/выполнения (Debug/Run configurations) приложения.
Вообще, по логике должно быть два варианта:
1) полный сброс системы, заливка указанного пользователем bitstream, загрузка в память приложения и его отладка.
Настройку процессора можно было бы сделать в виде Си кода в начале приложения ну или tcl-скриптами, как сейчас, но
как-то более прозрачно.
2) сброс только процессора (если в ПЛИС ничего менять не надо, для экономии времени), инциализация процессора,
загрузка и запуск приложения.
У Xilinx всё как-то хитрее - в окнах Run Configurations, Debug Configurations и Program FPGA
кнопки Search (которая позволяет, видимо, выбрать файл (bitstream или скрипт) из текущей Hardware Platform Specification) и
Browse (позволяющая выбрать произвольный файл) становятся активными и неактивными по каждый раз
по-новому по какому-то неведомому алгоритму.
Опция Run ps7_post_config (которая отвечает, судя по Гуглу, как раз за включение мота PS-PL и выдачу тактовых
сигналов и сброса в PL от PS) никак не даёт себя включить (хотя в других проектах бывает доступна).
В общем, чуть-чуть сильно запутался (с)