Доработка документации
This commit is contained in:
31
README.md
31
README.md
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user