76 lines
3.5 KiB
Makefile
76 lines
3.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 -lfec -lfftw3f -lm -lpthread
|
||
DEPS_LIBS := $(XARM)/lib/libliquid.a $(XARM)/lib/libfec.a $(XARM)/lib/libad9361.a $(XARM)/lib/libiio.a $(XARM)/lib/libfftw3f.a
|
||
|
||
# --- платы --- A == transmitter, B == receiver
|
||
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)/group_fec.c $(SRC)/common.h $(SRC)/group_fec.h $(DEPS_LIBS) | $(BIN)
|
||
$(CC) $(CFLAGS) $(SRC)/transmitter.c $(SRC)/common.c $(SRC)/group_fec.c -o $@ $(LDFLAGS) -Wl,--start-group -lad9361 -liio $(LDLIBS) -Wl,--end-group
|
||
|
||
$(BIN)/receiver: $(SRC)/receiver.c $(SRC)/common.c $(SRC)/group_fec.c $(SRC)/common.h $(SRC)/group_fec.h $(DEPS_LIBS) | $(BIN)
|
||
$(CC) $(CFLAGS) $(SRC)/receiver.c $(SRC)/common.c $(SRC)/group_fec.c -o $@ $(LDFLAGS) -Wl,--start-group -lad9361 -liio $(LDLIBS) -Wl,--end-group
|
||
|
||
$(BIN)/ofdm_bench: $(SRC)/ofdm_bench.c | $(BIN)
|
||
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) $(LDLIBS)
|
||
|
||
# Оффлайн-самопроверка GF(256) — нативная сборка (gcc хоста, напр. RPi/aarch64)
|
||
$(BIN)/gftest: $(SRC)/group_fec.c $(SRC)/group_fec.h | $(BIN)
|
||
cc -O2 -Wall -DGF_SELFTEST $(SRC)/group_fec.c -o $@
|
||
|
||
tx: $(BIN)/transmitter
|
||
rx: $(BIN)/receiver
|
||
bench: $(BIN)/ofdm_bench
|
||
gftest: $(BIN)/gftest
|
||
$(BIN)/gftest
|
||
|
||
# --- деплой (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; }
|
||
@test -f $(XARM)/lib/libfec.a || { echo "нет libfec.a: запусти scripts/build_deps.sh"; exit 1; }
|
||
@test -f $(XARM)/lib/libad9361.a || { echo "нет libad9361.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 gftest — оффлайн-самопроверка group-FEC (нативный cc)"
|
||
@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 gftest deploy test check-env clean help |