- src: transmitter, receiver, ofdm_bench, common (libiio local: + liquid-dsp) - scripts: кросс-сборка зависимостей, деплой scp -O, e2e-тест с md5 - docs: бенчмарк CPU (выбор rate 1.92 MSPS), грабли FDD/регуляторика - все текстовые файлы нормализованы в LF (.gitattributes принудительно): CRLF в toolchain.env/makefile ломал source и make на Linux - .vscode: IntelliSense в режиме linux-gcc-arm, заголовки из .xarm/include Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
66 lines
2.5 KiB
Makefile
66 lines
2.5 KiB
Makefile
# pluto-link — кросс-сборка под ARM Pluto (armhf, static)
|
||
# Цели: all | tx | rx | bench | deploy | test | clean | help
|
||
# Переменные можно переопределить: make PLUTO_A=ip PLUTO_B=ip
|
||
|
||
# --- тулчейн (согласовано с toolchain.env) ---
|
||
CROSS ?= arm-linux-gnueabihf-
|
||
CC := $(CROSS)gcc
|
||
XARM ?= $(HOME)/xarm
|
||
|
||
CFLAGS := -O3 -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -ffast-math \
|
||
-Wall -Wextra -static -I$(XARM)/include -Isrc
|
||
LDFLAGS := -L$(XARM)/lib
|
||
LDLIBS := -lliquid -lfftw3f -lm -lpthread
|
||
|
||
# --- платы ---
|
||
PLUTO_A ?= 192.168.2.1
|
||
PLUTO_B ?= 192.168.3.1
|
||
|
||
BIN := build
|
||
SRC := src
|
||
|
||
all: $(BIN)/transmitter $(BIN)/receiver $(BIN)/ofdm_bench
|
||
|
||
$(BIN):
|
||
mkdir -p $(BIN)
|
||
|
||
$(BIN)/transmitter: $(SRC)/transmitter.c $(SRC)/common.c $(SRC)/common.h | $(BIN)
|
||
$(CC) $(CFLAGS) $(SRC)/transmitter.c $(SRC)/common.c -o $@ $(LDFLAGS) -liio $(LDLIBS)
|
||
|
||
$(BIN)/receiver: $(SRC)/receiver.c $(SRC)/common.c $(SRC)/common.h | $(BIN)
|
||
$(CC) $(CFLAGS) $(SRC)/receiver.c $(SRC)/common.c -o $@ $(LDFLAGS) -liio $(LDLIBS)
|
||
|
||
$(BIN)/ofdm_bench: $(SRC)/ofdm_bench.c | $(BIN)
|
||
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) $(LDLIBS)
|
||
|
||
tx: $(BIN)/transmitter
|
||
rx: $(BIN)/receiver
|
||
bench: $(BIN)/ofdm_bench
|
||
|
||
# --- деплой (scp -O: на прошивке v0.38 нет sftp-server) ---
|
||
deploy: all
|
||
scripts/deploy.sh $(PLUTO_A) $(PLUTO_B)
|
||
|
||
# --- e2e: файл через радио + md5 ---
|
||
test: deploy
|
||
scripts/test_file_link.sh $(PLUTO_A) $(PLUTO_B)
|
||
|
||
check-env:
|
||
@which $(CC) >/dev/null || { echo "нет $(CC): sudo apt install gcc-arm-linux-gnueabihf"; exit 1; }
|
||
@test -f $(XARM)/lib/libliquid.a || { echo "нет libliquid.a: запусти scripts/build_deps.sh"; exit 1; }
|
||
@test -f $(XARM)/lib/libfftw3f.a || { echo "нет libfftw3f.a: запусти scripts/build_deps.sh"; exit 1; }
|
||
@echo "OK: тулчейн и зависимости на месте"
|
||
|
||
clean:
|
||
rm -rf $(BIN)
|
||
|
||
help:
|
||
@echo "make [all] — собрать transmitter, receiver, ofdm_bench (static armhf)"
|
||
@echo "make tx|rx|bench — собрать отдельную цель"
|
||
@echo "make deploy — залить бинарники на обе платы (scp -O в /tmp)"
|
||
@echo "make test — e2e-тест передачи файла с md5-сверкой"
|
||
@echo "make check-env — проверить тулчейн и $(XARM)"
|
||
@echo "make clean — удалить build/"
|
||
@echo "переменные: PLUTO_A=$(PLUTO_A) PLUTO_B=$(PLUTO_B) XARM=$(XARM)"
|
||
|
||
.PHONY: all tx rx bench deploy test check-env clean help |