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。
This commit is contained in:
Executable
+49
@@ -0,0 +1,49 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user