Доработка. Поменял частоты и добавленение FIR-фильтр, его штатно генерирует и грузит ad9361_set_bb_rate()
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# build_deps.sh — кросс-сборка статических armhf-зависимостей в $XARM
|
||||
# Собирает: FFTW 3.3.10 (single+NEON), liquid-dsp 1.8.0, libiio (local backend)
|
||||
# Собирает: FFTW 3.3.10 (single+NEON), liquid-dsp 1.8.0, libiio (local backend),
|
||||
# libad9361-iio (FIR-фильтр для sample rate < 2.083 MSPS)
|
||||
# Запуск: scripts/build_deps.sh (один раз, ~15-20 мин на RPi4)
|
||||
set -euo pipefail
|
||||
source "$(dirname "$0")/../toolchain.env"
|
||||
@@ -50,11 +51,15 @@ else
|
||||
echo "уже собран, пропускаю"
|
||||
fi
|
||||
|
||||
echo "=== [3/4] libiio v0.25 (static, только local backend) ==="
|
||||
echo "=== [3/5] libiio v0.25 (static, только local backend) ==="
|
||||
if [ ! -f "$XARM/lib/libiio.a" ]; then
|
||||
[ -d libiio ] || git clone --depth 1 --branch v0.25 \
|
||||
https://github.com/analogdevicesinc/libiio.git
|
||||
cd libiio
|
||||
|
||||
# ХАК: Полностью перезаписываем статус Threads, чтобы CMake даже не заходил в модуль проверки
|
||||
sed -i '/find_package(Threads/c\set(Threads_FOUND ON)\nset(CMAKE_THREAD_LIBS_INIT "-lpthread")\nset(CMAKE_HAVE_PTHREADS_CREATE ON)\nadd_library(Threads::Threads INTERFACE IMPORTED)\nset_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "-lpthread")' CMakeLists.txt
|
||||
|
||||
cat > toolchain-armhf.cmake <<EOF
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
@@ -69,7 +74,9 @@ EOF
|
||||
-DWITH_USB_BACKEND=OFF -DWITH_SERIAL_BACKEND=OFF \
|
||||
-DWITH_XML_BACKEND=OFF -DHAVE_DNS_SD=OFF \
|
||||
-DWITH_TESTS=OFF -DWITH_EXAMPLES=OFF -DWITH_DOC=OFF \
|
||||
-DCSHARP_BINDINGS=OFF -DPYTHON_BINDINGS=OFF
|
||||
-DCSHARP_BINDINGS=OFF -DPYTHON_BINDINGS=OFF \
|
||||
-DWITH_IIOD=OFF -DWITH_LOCAL_CONFIG=OFF -DWITH_ZSTD=OFF \
|
||||
-DTHREADS_PREFER_PTHREAD_FLAG=ON
|
||||
cmake --build build-armhf -j"$(nproc)"
|
||||
cmake --install build-armhf
|
||||
cd "$WORK"
|
||||
@@ -80,6 +87,37 @@ else
|
||||
echo "уже собран, пропускаю"
|
||||
fi
|
||||
|
||||
echo "=== [4/4] Итог ==="
|
||||
ls -la "$XARM/lib/" | grep -E "libfftw3f|libliquid|libiio" || true
|
||||
echo "=== [4/5] libad9361-iio (static, FIR для sample rate < 2.083 MSPS) ==="
|
||||
# AD9361 без FIR не принимает rate ниже ~2.083 MSPS (EINVAL). Наш rate 1.92 MSPS
|
||||
# требует загрузки FIR, что делает ad9361_set_bb_rate() из этой библиотеки.
|
||||
if [ ! -f "$XARM/lib/libad9361.a" ]; then
|
||||
[ -d libad9361-iio ] || git clone --depth 1 \
|
||||
https://github.com/analogdevicesinc/libad9361-iio.git
|
||||
cd libad9361-iio
|
||||
|
||||
# Тот же обход кросс-проблемы FindThreads, что и для libiio выше
|
||||
sed -i '/find_package(Threads/c\set(Threads_FOUND ON)\nset(CMAKE_THREAD_LIBS_INIT "-lpthread")\nset(CMAKE_HAVE_PTHREADS_CREATE ON)\nadd_library(Threads::Threads INTERFACE IMPORTED)\nset_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "-lpthread")' CMakeLists.txt || true
|
||||
|
||||
cat > toolchain-armhf.cmake <<EOF
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||
set(CMAKE_C_FLAGS_INIT "$XCFLAGS")
|
||||
set(CMAKE_FIND_ROOT_PATH $XARM)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
EOF
|
||||
cmake -B build-armhf -DCMAKE_TOOLCHAIN_FILE=toolchain-armhf.cmake \
|
||||
-DCMAKE_INSTALL_PREFIX="$XARM" -DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH="$XARM"
|
||||
cmake --build build-armhf -j"$(nproc)"
|
||||
cmake --install build-armhf
|
||||
cd "$WORK"
|
||||
else
|
||||
echo "уже собран, пропускаю"
|
||||
fi
|
||||
|
||||
echo "=== [5/5] Итог ==="
|
||||
ls -la "$XARM/lib/" | grep -E "libfftw3f|libliquid|libiio|libad9361" || true
|
||||
echo "Готово. Дальше: make check-env && make"
|
||||
Reference in New Issue
Block a user