Après une année de développement, une nouvelle version majeure de la plateforme libre de traitement numérique des signaux GNU Radio 3.10 a été formée. La plateforme inclut un ensemble de programmes et de bibliothèques permettant de créer des systèmes radio arbitraires, des schémas de modulation et des formes de signaux entrants et sortants définis par logiciel, tandis que des dispositifs matériels simples sont utilisés pour la capture et la génération de signaux. Le projet est distribué sous la licence GPLv3. La majeure partie des composants de GNU Radio est écrite en Python, tandis que les parties critiques en termes de performance et de latence sont écrites en C++, ce qui permet d'utiliser le paquet pour des tâches en temps réel.
En combinaison avec des émetteurs-récepteurs programmables universels, indépendants de la bande de fréquences et du type de modulation du signal, la plateforme peut être utilisée pour créer des dispositifs tels que des stations de base pour les réseaux GSM, des dispositifs de lecture à distance de balises RFID (cartes d'identité électroniques et accès, cartes intelligentes), des récepteurs GPS, WiFi, des récepteurs et émetteurs de radio FM, des décodeurs TV, des radars passifs, des analyseurs spectraux, etc. En plus de l’USRP, le paquet peut utiliser d'autres composants matériels pour l'entrée et la sortie des signaux, par exemple, des pilotes pour cartes son, des tuners TV, des appareils BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP et S-Mini.
Il comprend également une collection de filtres, de codecs de canal, de modules de synchronisation, de démultiplexeurs, d'égaliseurs, de codecs vocaux, de décodeurs et d'autres éléments nécessaires à la création de systèmes radio. Les éléments mentionnés peuvent être utilisés comme des briques pour assembler un système prêt à l'emploi, ce qui, combiné aux capacités de définition de flux de données entre les blocs, permet de concevoir des systèmes radio même sans compétences en programmation.
Principales modifications :
- Un nouveau module gr-pdu a été ajouté, qui contient des outils pour manipuler des objets de type PDU (Protocol Data Unit), utilisés pour les données transportées entre les blocks de GNU Radio. Tous les blocs PDU du module gr-blocks ont été transférés aux modules gr-network et gr-pdu, et une couche a été laissée pour assurer la rétrocompatibilité. Les types PDU vectoriels sont désormais disponibles dans l'espace de noms gr::types, et les fonctions pour manipuler les PDU se trouvent dans l'espace de noms gr::pdu.
- Un nouveau module gr-iio a été ajouté, fournissant un cadre d'entrée/sortie pour l'échange de données entre GNU Radio et des dispositifs industriels basés sur le sous-système IIO (Industrial I/O), tels que PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO et AD-FMCOMMS5-EBZ.
- Un support expérimental pour la classe Custom Buffer a été proposé, simplifiant le transfert de données entre les blocs GNU Radio et les accélérateurs matériels basés sur GPU, FPGA et DSP. L'utilisation de custom_buffer permet d'éviter l'écriture de blocs spécifiques pour le gain de performance sur le côté GPU et permet de déplacer directement les données du tampon circulaire de GNU Radio vers la mémoire GPU, lancer des noyaux CUDA et retourner les résultats dans les tampons de GNU Radio.
- L'infrastructure de journalisation a été mise à jour pour utiliser la bibliothèque spdlog, ce qui a facilité la gestion des journaux, éliminé la nécessité d'appels à iostream et cstdio, fourni un support pour les expressions libfmt pour le formatage des chaînes et modernisé l'interface logicielle. L'ancienne bibliothèque Log4CPP a été supprimée des dépendances.
- La migration vers l'utilisation de la norme C++17 a été effectuée. La bibliothèque boost::filesystem a été remplacée par std::filesystem.
- Les exigences pour les compilateurs (GCC 9.3, Clang 11, MSVC 1916) et les dépendances (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) ont été augmentées.
- Des liaisons Python pour les blocs RFNoC ont été ajoutées.
- Les blocs pour la création d'interfaces graphiques gr-qtgui ont ajouté le support de Qt 6.2. Une option « —output » pour les blocs hiérarchiques a été ajoutée à l'interface graphique GRC (GNU Radio Companion).
Source : opennet.ru
