Как настроить форму волны Redhawk для работы с USRP RFNoC

Я относительно новичок в играх SDR/FPGA, поэтому извиняюсь, если ошибаюсь в терминологии. Я знаю, что здесь будет довольно много довольно конкретных деталей, но я надеюсь, что кто-то мог сделать что-то подобное. Я пытаюсь запустить простой сигнал Redhawk 2.2.1 на Ettus USRP E312 с UHD v3.14 с RFNoC. Домен Redhawk работает на USRP, и я подключаю Redhawk IDE из виртуального окна Centos7. Код, который я использую, построен с использованием https://github.com/Geontech/redhawk-rfnoc-build. Битовый файл для FPGA был создан с использованием Vivado, как указано в базе знаний Ettus. Сама форма волны состоит из одного компонента psd с реализацией cpp-rfnoc, которая зависит от разделяемой библиотеки RFNoC_RH. Существует RFNOC_Programmable Device и два RFNoC Personas, управляемых диспетчером устройств.

У меня проблема в том, что Redhawk не может создать приложение для сигнала. Я пробовал изменить конфигурацию, добавить больше журналов и немного поработать с кодом Redhawk, но весь процесс обычно терпит неудачу из-за неспособности разрешить зависимости компонентов или программных пакетов. Я пробовал запустить GPP на USRP, но, похоже, это не рассматривается, поскольку кажется, что он фильтруется после того, как компонент psd выделен персоне. Затем он попытается назначить зависимость программного пакета уже выбранным устройствам, но совпадения нет.

У меня два вопроса

  • каков минимальный набор модулей Redhawk для этой настройки для работы (пока у меня есть форма волны с одним компонентом psd, диспетчер устройств, на котором запущено одно программируемое устройство и два персонажа)
  • какая должна быть взаимосвязь между модулями?

В частности, я хотел бы знать / понимать, где должен быть размещен / запущен компонент psd? Нужно ли мне для этого устройство GPP? Компонент Psd получает / отправляет данные из блоков в fpga через интерфейс RFNoC и в то же время взаимодействует с другими компонентами через bulkio redhawk, что заставляет меня думать, что для работы ему действительно нужно устройство GPP. Или мне что-то еще не хватает?

1 ответ

Должен признаться, я немного устарел в этом проекте, и его нужно обновить. Сборка Ettus для RFNoC и E3xx больше не использует версию стека слоев, на которую указывает эта сборка прямо сейчас. Я начал вторгаться в это на нашем meta-redhawk-sdr thud-nextветке в начале года, но столкнулся с некоторыми ошибками в обновлении 2.2.6 REDHAWK, которых я не ожидал увидеть. Это в конечном итоге задержало обновление обеих сборок до последнего дерева исходных текстов Ettus (т.е. ванильного образа (образов) E3xx и варианта RFNoC).

Тем не менее, при рассмотрении XML rh.psd реализация RFNoC компонента (cpp_rfnoc) показывает, что свойство процессора целевого исполняемого устройства должно быть RF-NoC-Default. Это требование выполняется устройством RFNoC_DefaultPersona (правильно, на основе вашего журнала).

Эта реализация rh.psd также зависит от разделяемой библиотеки RFNoC (зависимость SoftPkg, RFNoC_RH), реализация которой требует наличия armv7lпроцессор согласно своему SPD. Это сравнение с доступными исполняемыми устройствами не удается.

Я не вижу ничего в конфигурации сборки по умолчанию, предоставляющей устройство в диспетчере устройств с этим именем процессора (например, GPP). Это может быть недосмотр. Не могли бы вы попробовать добавить и запустить GPP в вашей системе?

Обновление: после воспроизведения настройки и некоторого расследования выясняется, что появилось несколько горячих исправлений, а повышение до версии 2.2 в 2019 году нарушило дизайн благодаря введению нескольких вещей.

Во-первых, SPD с разделяемой библиотекой, вероятно, потребуется второй processor декларация для RF-NoC-Default так что Executable Persona может удовлетворить зависимость (горячие исправления...).

Во-вторых, фабрика приложений создает ComponentHost для обработки любых запускаемых реализаций компонентов SharedLibrary (2.2), что вызывает проблему, поскольку Persona ожидает dlopen все, что передается через Load API, поэтому просто добавив ComponentHost (с processor собственный патч) не решает проблему.

Первое исправление - это патч SPD XML. Исправление второго - это патч основной инфраструктуры REDHAWK, который, вероятно, должен быть обновлен, поскольку, скорее всего, любое устройство Executable Persona захочет развернуть компоненты в настройке пространства процесса родительским программируемым устройством (по всем причинам производительности, по которым теперь существует ComponentHost).

Другие вопросы по тегам