Files
ESP32S3_vt/scripts/build_armor.sh
T
Horldsence a30eb3200a armor: ESP32-C3 装甲板固件(一主三从)+ 烧录脚本,之前一直没提交
这一块代码本来就写好了、根 README 里也按"已实现"描述,但一直没有进仓库,
只存在于工作区里。同一个提交里带上 `.env.example` 的两个新变量(ARMOR_TEAM、
ARMOR_THRESHOLD)——它们的说明文字就是为这套固件写的。

内容:
- armor-protocol:规则层(血量、每板独立 50ms 受击冷却、受击后只有那一路灯带全黑、
  按键 FSM、上报编码)。纯计算,主机上 22 个测试,已跑通。
- armor-firmware:四路压电片 ADC 连续采样、四路 WS2812(C3 只有一个 RMT 通道可用,
  靠 rmt_tx_switch_gpio 轮流驱动)、NVS、BOOT 键、WiFi + UDP 广播。
- scripts:build_armor.sh / flash_armor.sh / armor_probe.py(不开界面单看广播)。

armor/ 是独立 workspace(目标 RISC-V 的 ESP32-C3),与外层 Xtensa 的图传固件互不相干,
各自 .cargo/config.toml 就是这条边界。构建产物由根 .gitignore 的 `/armor/target/` 覆盖,
本次没有把任何 target/ 或 build/ 下的东西加进来。

顺带把 `.DS_Store` 加进 .gitignore。
2026-10-14 19:43:14 +08:00

50 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 编译装甲板固件(ESP32-C3),凭据与队伍号来自 .env。
#
# ARMOR_TEAM=1 scripts/build_armor.sh # 队伍二(蓝)
# scripts/build_armor.sh # 队伍一(红,默认)
#
# ESP-IDF 的位置来自 armor/.cargo/config.toml(IDF_PATH / ESP_IDF_TOOLS_INSTALL_DIR),
# 所以这里不需要先 activate ESP-IDF。
set -euo pipefail
cd "$(dirname "$0")/.."
if [ -f .env ]; then
set -a
# shellcheck disable=SC1091
. ./.env
set +a
fi
: "${WIFI_SSID:?set WIFI_SSID in .env (or export it) before building}"
export WIFI_PASS="${WIFI_PASS:-}"
# 队伍一(红)是默认值;队伍号在固件里决定灯色,也在上报里决定裁判端算哪一边。
export ARMOR_TEAM="${ARMOR_TEAM:-0}"
# 受击阈值(原始 12 bit ADC)。看 status 行里的 peak[...] 来定:底噪要明显低于它,
# 正常敲击要明显高于它。不写就是参考实现的 2000。
export ARMOR_THRESHOLD="${ARMOR_THRESHOLD:-2000}"
case "$ARMOR_TEAM" in
0 | 1) ;;
*)
echo "ARMOR_TEAM must be 0 or 1, got '$ARMOR_TEAM'" >&2
exit 1
;;
esac
case "$ARMOR_THRESHOLD" in
'' | *[!0-9]*)
echo "ARMOR_THRESHOLD must be a non-negative integer, got '$ARMOR_THRESHOLD'" >&2
exit 1
;;
esac
echo "==> building armor firmware for esp32c3 (team $ARMOR_TEAM, threshold $ARMOR_THRESHOLD)"
cd armor
cargo build --release --bin armor "$@"
echo
echo "elf: armor/target/riscv32imc-esp-espidf/release/armor"
echo "next: scripts/flash_armor.sh"