Biblioteka liquid-dsp - kompilacja ze źródeł

Bioblioteka liquid-dspBiblioteka liquid-dsp to bezpłatny i otwarty zbiór procedur cyfrowego przetwarzania sygnałów (Digital Signal Processing - DSP) zaprojektowanego przez Josepha D. Gaeddert (autor i właściciel praw autorskich kilku pokrewnych projektów) specjalnie dla radia programowalnego (SDR).

Chciał On stworzyć lekką bibliotekę DSP, która nie odwołuje się do licznych zewnętrznych struktur. Częstokroć nie tylko złożonych, ale również obwarowanych zastrzeżeniami autorskimi.

Projekt liquidsdr (którego częścią jest biblioteka liquid-dsp) objęty jest zasadami licencji X11 / MIT. W zasadzie zezwala na dowolne wykorzystanie kodu, z wyjątkiem usunięcia swego imienia z "napisów".

W moim przypadku biblioteka ta zostanie wykorzystana do kompilacji ze źródeł programu CubicSDR, który wykorzystuję do obsługi radia SDR.

W liquid-dsp wszystkie elementy przetwarzania sygnału są: elastyczne, skalowalne i dynamiczne. Biblioteka standardowo odwołuje się do bibliotek: libc i libm. Jednak skorzysta ona również z innych pakietów (takich np. jak FFTW). Oczywiście - o ile będą one dostępne.

Potrzebne narzędziaJeśli będziesz budował bibliotekę w oparciu o repozytorium Git koniecznym będzie zainstalowanie dodatkowych narzędzi do generowania skryptu configure.sh. Sposób instalacji wymaganych komponentów opisałem w artykule: Automake, build-essential, Cmake... na dobry start.

Choć praktycznie sprowadza się ona do wykonania (pod Debianem i pokrewnych, jak: Ubuntu, Mint, itp.) w oknie terminala polecenia:

~/SDR $ sudo apt-get install automake autoconf

wydaje mi się jednak , że lektura artykułu może wyjaśnić niektóre wątpliwości.

W mojej strukturze katalogów znajduje się katalog SDR, w którym przechowuję wszystkie zbiory związane z obsługą urządzeń SDR. Przed rozpoczęciem dalszych czynności sugeruję (a w zasadzie jest to niezbędne!) by wykonywać je z poziomu tego katalogu. Czyli winniśmy do niego wejść wydając polecenie:

~ $ cd ~/SDR

Pobranie repozytoriówPobranie źródeł liquid-dsp może odbyć się na dwa sposoby:

sklonowanie zasobów repozytorium za pomocą polecenia git(tekst wytłuszczony). Jakkolwiek efekt wykonania obu procedur da nam podobny efekt, to ja jednak wybrałem pierwszą. Nie twierdzę, że jest najlepsza, ale niejako "w locie" tworzona jest odpowiednia struktura katalogów i plików.

Najwyższy czas zacząć:

~/SDR $ git clone https://github.com/jgaeddert/liquid-dsp

Jak już wspomniałem "automatycznie" zostanie stworzony podkatalog liquid-dsp.

Drugą metodą jest wykorzystanie polecenia wget do pobrania tzw. tarball'a. Jak widać jest to proces bardziej złożony, choć nie bardziej skomplikowany. Widać również, że aktualną obecnie (lipiec 2018) wersją jest ta o numerze 1.3.1:

~/SDR $ wget http://liquidsdr.org/downloads/liquid-dsp-1.3.1.tar.gz
~/SDR $ wget http://liquidsdr.org/downloads/liquid-dsp.md5
~/SDR $ md5sum --check --ignore-missing liquid-dsp.md5
~/SDR $ tar -xf liquid-dsp-1.3.1.tar.gz

Pierwsze wget pobierze tarball'a, drugie - sumę kontrolną pozwalającą na sprawdzenie zawartości pobranego pliku (md5sum).

Natomiast użycie komendy tar (z parametrami) spowoduje rozpakowanie pobranego pliku (w tym utworzenie katalogu macierzystego wraz z pełną strukturą podkatalogów i plików).

Teraz należy wejść do katalogu liquid-dsp (inaczej na dalszym etapie pojawi się błąd!):

~/SDR $ cd liquid-dsp

Aktualizujemy pliki konfiguracyjne...

Jeśli sklonowałeś repozytorium liquid-dsp poleceniem git teraz winieneś w oknie terminala wydać polecenie (tekst wytłuszczony). W wyniku tego procesu zostaną utworzone pliki konfiguracyjne niezbędne w procesie kompilacji.

Zauważ, że użycie kropki na początku komendy oznacza, że wykonywalny plik znajduje się w katalogu w którym następuje wywołanie. Dlatego też zanim wywołasz ten plik sprawdź czy jesteś w katalogu: ~/SDR/liquid-dsp/:

~/SDR/liquid-dsp/ $ ./bootstrap.sh

Kompilujemy...Jeśli pobrałeś tarball'a komendą wget, możesz ten krok pominąć. Następnie wydaj polecenia (tekst wytłuszczony), które:

  • stworzy (i/lub zaktualizuje) niezbędne pliki konfiguracyjne,
  • skompiluje pliki źródłowe,
  • zainstaluje utworzoną bibliotekę w wymaganej lokalizacji (jeśli będzie to potrzebne, odpowiednie katalogi zostaną utworzone),Instalacja, czyli koniec wieńczy dzieło...
  • ostatnia komenda spowoduje, że utworzona biblioteka zostanie "udostępniona" w systemie (gdyż ldconfig tworzy niezbędne łącza i odświeża pamięć podręczną dla najnowszych bibliotek współdzielonych znajdujących się w określonych katalogach). Wywołanie jej w tym miejscu spowoduje aktualizację łączy i zawartości pamięci podręcznej (cache).
~/SDR/liquid-dsp/ $ CFLAGS="-march=native -O3" ./configure --enable-fftoverride
~/SDR/liquid-dsp/ $ make -j4
~/SDR/liquid-dsp/ $ sudo make install
~/SDR/liquid-dsp/ $ sudo ldconfig

Proces kompilacji i instalacji biblioteki liquid-dsp ze źródeł zakończył się sukcesem. I jest już dostępna do dalszych zastosowań. Podczas opracowania tego dokumentu wykorzystano sugestie Autorów zawarte w dokumentacji projektu oraz własne doświadczenia.