Dopo un anno di sviluppo, è stata formata una nuova e significativa release della piattaforma open source per l'elaborazione dei segnali digitali GNU Radio 3.10. La piattaforma include un insieme di programmi e librerie che permettono di creare sistemi radio arbitrarî, schemi di modulazione e forme di segnali inviati e ricevuti impostati tramite software, e per la cattura e generazione dei segnali si utilizzano i più semplici dispositivi hardware. Il progetto è distribuito con licenza GPLv3. La maggior parte dei componenti di GNU Radio è scritta in Python, mentre le parti critiche rispetto alle prestazioni e ai tempi di latenza sono scritte in C++, consentendo l'utilizzo del pacchetto per la risoluzione di compiti in tempo reale.
In combinazione con trasmettitori e ricevitori programmabili universalmente, non legati a bande di frequenza o tipo di modulazione del segnale, la piattaforma può essere utilizzata per creare dispositivi come stazioni base per reti GSM, dispositivi per la lettura remota di etichette RFID (documenti elettronici e pass, smart card), ricevitori GPS, WiFi, ricevitori e trasmettitori di radio FM, decoder TV, radar passivi, analizzatori spettrali, ecc. Oltre a USRP, il pacchetto può utilizzare anche altri componenti hardware per l'input e l'output dei segnali, come sono disponibili driver per schede audio, tuner TV, dispositivi BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP e S-Mini.
Include anche una raccolta di filtri, codec di canale, moduli di sincronizzazione, demodulatori, equalizzatori, codec vocali, decoder e altri elementi necessari per costruire sistemi radio. Gli elementi specificati possono essere utilizzati come mattoni per assemblare un sistema completo, il che, combinato con le capacità di definire i flussi di dati tra i blocchi, consente di progettare sistemi radio anche senza competenze di programmazione.
Variazioni principali:
- È stato aggiunto un nuovo modulo gr-pdu, in cui sono stati trasferiti gli strumenti per la manipolazione di oggetti di tipo PDU (Protocol Data Unit), utilizzati per i dati trasferiti tra i blocchi di GNU Radio. Tutti i blocchi PDU dal modulo gr-blocks sono stati trasferiti ai moduli gr-network e gr-pdu, mentre per gr-blocks è rimasta una strato per garantire la retrocompatibilità. I tipi di PDU vettoriali sono ora disponibili nello spazio dei nomi gr::types, e le funzioni per la manipolazione di PDU si trovano nello spazio dei nomi gr::pdu.
- È stato aggiunto un nuovo modulo gr-iio, che fornisce un framework di input/output per organizzare lo scambio di dati tra GNU Radio e dispositivi industriali basati sul sottosistema IIO (Industrial I/O), come PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO e AD-FMCOMMS5-EBZ.
- È stata proposta un'assistenza sperimentale per la classe Custom Buffer, che semplifica il trasferimento dei dati tra i blocchi GNU Radio e gli acceleratori hardware basati su GPU, FPGA e DSP. L'uso di custom_buffer consente di evitare la scrittura di blocchi speciali per sfruttare l'accelerazione lato GPU e permette di spostare direttamente i dati dal buffer circolare di GNU Radio alla memoria GPU, lanciare i core CUDA e restituire i dati con il risultato nei buffer di GNU Radio.
- L'infrastruttura per la gestione dei log è stata aggiornata per utilizzare la libreria spdlog, il che ha migliorato la facilità d'uso con i log, eliminato le dipendenze da iostream e cstdio, supportato le espressioni di libfmt per il formato delle stringhe e modernizzato l'interfaccia del programma. La libreria Log4CPP precedentemente usata è stata rimossa dalle dipendenze.
- È stato effettuato il passaggio all'utilizzo dello standard C++17 nello sviluppo. La libreria boost::filesystem è stata sostituita con std::filesystem.
- Sono stati aumentati i requisiti per i compilatori (GCC 9.3, Clang 11, MSVC 1916) e per le dipendenze (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).
- Sono stati aggiunti i binding Python per i blocchi RFNoC.
- Nei blocchi per la costruzione dell'interfaccia grafica gr-qtgui è stato aggiunto il supporto per Qt 6.2. Nell'interfaccia grafica GRC (GNU Radio Companion) è stata aggiunta l'opzione "—output" per i blocchi gerarchici.
Fonte: opennet.ru
