Доработка. Поменял частоты и добавленение FIR-фильтр, его штатно генерирует и грузит ad9361_set_bb_rate()

This commit is contained in:
Maxim
2026-07-10 15:26:14 +03:00
parent d5edaf140e
commit 9eab1f32c4
6 changed files with 112 additions and 58 deletions

View File

@@ -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"