Nach einem Jahr Entwicklung wurde eine neue bedeutende Version der freien Plattform fĂŒr digitale Signalverarbeitung GNU Radio 3.10 erstellt. Die Plattform umfasst ein Set von Programmen und Bibliotheken, mit denen beliebige Radiosysteme, Modulationsschemata und Formen der empfangenen und gesendeten Signale programmiert erstellt werden können. Zum Erfassen und Generieren von Signalen werden einfachste HardwaregerĂ€te verwendet. Das Projekt wird unter der GPLv3-Lizenz verbreitet. Der Code der meisten Teile von GNU Radio ist in Python geschrieben, wĂ€hrend performancekritische Teile in C++ verfasst sind, was die Verwendung des Pakets fĂŒr Echtzeitanwendungen ermöglicht.
In Kombination mit universellen programmierbaren Transceivern, die nicht an FrequenzbĂ€nder und Modulationsarten gebunden sind, kann die Plattform zur Erstellung von GerĂ€ten wie Basisstationen fĂŒr GSM-Netze, GerĂ€te zur Fernabfrage von RFID-Tags (elektronische Ausweise und Berechtigungen, Smartcards), GPS-EmpfĂ€ngern, WiFi, FM-RadioempfĂ€ngern und -sendern, TV-Decodern, passiven Radaren, Spektrumanalysatoren usw. genutzt werden. Neben USRP kann das Paket auch andere Hardware-Komponenten zur Signal Ein- und Ausgabe verwenden, beispielsweise sind Treiber fĂŒr Soundkarten, TV-Tuner, BladeRF-GerĂ€te, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP und S-Mini verfĂŒgbar.
Das Paket enthÀlt auch eine Sammlung von Filtern, Kanalkodierern, Synchronisationsmodulen, Demodulatoren, Equalizern, Sprachcodierern, Decodern und anderen Elementen, die zur Erstellung von Radiosystemen erforderlich sind. Diese Elemente können als Bausteine zur Konstruktion eines fertigen Systems verwendet werden, was in Kombination mit der Möglichkeit, Datenströme zwischen den Blöcken zu definieren, die Planung von Radiosystemen auch ohne Programmierkenntnisse ermöglicht.
HauptÀnderungen:
- Ein neues Modul gr-pdu wurde hinzugefĂŒgt, in das die Werkzeuge zur Manipulation von Objekten des Typs PDU (Protocol Data Unit) ĂŒbertragen wurden, die fĂŒr Daten verwendet werden, die zwischen den GNU Radio-Blöcken ĂŒbertragen werden. Aus dem Modul gr-blocks wurden alle PDU-Blöcke in die Module gr-network und gr-pdu ĂŒbertragen, wĂ€hrend im Hinblick auf gr-blocks eine Schicht zur Sicherstellung der AbwĂ€rtskompatibilitĂ€t verbleibt. Vektorielle PDU-Typen sind jetzt im Namensraum gr::types verfĂŒgbar, wĂ€hrend Funktionen zur Manipulation von PDU im Namensraum gr::pdu bereitgestellt werden.
- Ein neues Modul gr-iio wurde hinzugefĂŒgt, das ein Ein- und Ausgabeframework bereitstellt, um den Datenaustausch zwischen GNU Radio und IndustriegerĂ€ten, die auf dem IIO (Industrial I/O) Subsystem basieren, wie PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO und AD-FMCOMMS5-EBZ, zu organisieren.
- Eine experimentelle UnterstĂŒtzung fĂŒr die Klasse Custom Buffer wurde vorgeschlagen, die den Datenaustausch zwischen GNU Radio Blöcken und hardwarebeschleunigten GerĂ€ten wie GPU, FPGA und DSP vereinfacht. Die Verwendung von custom_buffer ermöglicht es, spezielle Blöcke zur Nutzung der GPU-Beschleunigung zu vermeiden und ermöglicht es, Daten direkt vom Ringpuffer von GNU Radio in den GPU-Speicher zu verschieben, CUDA-Kerne auszufĂŒhren und die Ergebnisse in die GNU Radio Puffer zurĂŒckzugeben.
- Die Infrastruktur fĂŒr die Protokollierung wurde auf die Verwendung der Bibliothek spdlog umgestellt, was die Arbeit mit Protokollen erleichtert, den Zugriff auf iostream und cstdio eliminiert, die UnterstĂŒtzung fĂŒr libfmt-AusdrĂŒcke zur Formatierung von Zeichenfolgen bereitstellt und die Programmierschnittstelle modernisiert. Die zuvor verwendete Log4CPP-Bibliothek wurde aus den AbhĂ€ngigkeiten entfernt.
- Der Ăbergang zur Verwendung des Standards C++17 wurde durchgefĂŒhrt. Die Bibliothek boost::filesystem wurde durch std::filesystem ersetzt.
- Die Anforderungen an Compiler (GCC 9.3, Clang 11, MSVC 1916) und AbhÀngigkeiten (Python 3.6.5, numpy 1.17.4, VOLK 2.4.1, CMake 3.16.3, Boost 1.69, Mako 1.1.0, PyBind11 2.4.3, pygccxml 2.0.0) wurden erhöht.
- Python-Bindings fĂŒr RFNoC-Blöcke wurden hinzugefĂŒgt.
- In den grafischen BenutzeroberflĂ€chenblöcken gr-qtgui wurde die UnterstĂŒtzung fĂŒr Qt 6.2 hinzugefĂŒgt. Im grafischen Benutzerinterface GRC (GNU Radio Companion) wurde die Option ââoutputâ fĂŒr hierarchische Blöcke hinzugefĂŒgt.
Quelle: opennet.ru
