Доработка документации

This commit is contained in:
Maxim
2026-07-10 16:39:04 +03:00
parent 11bdfa3aa2
commit 005c59fc3a

View File

@@ -82,18 +82,31 @@ sudo apt install -y build-essential autoconf automake libtool git wget \
gcc-arm-linux-gnueabihf
```
### 4.2 Зависимости (один раз, ~15 мин)
### 4.2 Зависимости (один раз, ~20 мин)
`scripts/build_deps.sh` собирает в `$HOME/xarm` статические armhf-библиотеки:
`scripts/build_deps.sh` собирает в `$HOME/xarm` статические armhf-библиотеки.
**Порядок важен**: liquid зависит от FFTW и libfec, поэтому они собираются до него.
1. **FFTW 3.3.10**: `--enable-single --enable-neon --enable-static`
2. **liquid-dsp 1.8.0**: с `CPPFLAGS=-I$HOME/xarm/include
2. **libfec** (jgaeddert): Reed-Solomon для liquid. liquid **не реализует RS
сам** — оборачивает libfec. Без неё `fec_create(LIQUID_FEC_RS_M8)` вернёт
NULL и `-c rs8` молча пойдёт БЕЗ FEC. Собирать строго ДО liquid.
3. **liquid-dsp 1.8.0**: с `CPPFLAGS=-I$HOME/xarm/include
LDFLAGS=-L$HOME/xarm/lib` и обходом autoconf-кросс-проблемы:
`ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes`
4. **libiio v0.25**: только local backend (network/usb/xml/iiod отключены).
5. **libad9361-iio**: FIR-фильтр для sample rate < 2.083 MSPS
(`ad9361_set_bb_rate`). Без него AD9361 отвергает 1.92 MSPS (EINVAL).
После сборки liquid **обязательно** проверить, что FFTW подхвачен:
`grep HAVE_LIBFFTW3F config.log` → должно быть `1`. Без FFTW liquid молча
падает на встроенный FFT и цифры бюджета CPU невалидны.
После сборки liquid **обязательно** проверить, что подхвачены и FFTW, и libfec:
`grep -E "HAVE_LIBFFTW3F 1|HAVE_LIBFEC 1" config.log` → обе строки. Без FFTW
liquid молча падает на встроенный FFT (бюджет CPU невалиден); без libfec нет RS.
⚠️ При обновлении зависимостей liquid надо пересобирать через `make clean`:
его makefile не отслеживает зависимость от `config.h`, и `configure`+`make`
без очистки лишь переустановят старую `libliquid.a` (без FEC). Проверка перед
деплоем: `arm-linux-gnueabihf-nm $XARM/lib/libliquid.a | grep -c init_rs_char`
→ ненулевое = RS-символы libfec действительно связаны.
### 4.3 Ключевые решения по сборке
@@ -107,9 +120,13 @@ sudo apt install -y build-essential autoconf automake libtool git wget \
```bash
arm-linux-gnueabihf-gcc -O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard \
-ffast-math -static src/receiver.c src/common.c -o receiver \
-I$HOME/xarm/include -L$HOME/xarm/lib -lliquid -lfftw3f -lm
-I$HOME/xarm/include -L$HOME/xarm/lib \
-lad9361 -liio -lliquid -lfec -lfftw3f -lm
```
Порядок библиотек критичен при статической линковке: зависимый идёт раньше
(`-lad9361` перед `-liio`, `-lliquid` перед `-lfec`).
### 4.4 Деплой
```bash