feat: 完善Mesh继电器OTA与地址协议

- 增加STM8 Bootloader工程及出厂固件恢复流程\n- 增加W25Q64外部Flash驱动和OTA分包接收、CRC16校验、断点续传状态管理\n- 增加固件版本查询、升级结果上报与主机确认机制\n- 将业务帧从55 AA帧头调整为发送方Mesh短地址+CMD+LEN+DATA+CRC16\n- 修正JDY-28M外层地址与业务发送方地址的职责划分,支持广播请求定向应答\n- 同步更新硬件引脚、存储分区、OTA流程和主机通信协议文档\n- 已使用SDCC重新编译,应用代码大小为5512字节,链接地址为0x8800
This commit is contained in:
十七
2026-11-03 11:29:55 +08:00
parent d275a3523b
commit 42a4650a78
30 changed files with 2318 additions and 108 deletions
+13 -3
View File
@@ -8,23 +8,33 @@ INC_DIR := include
CC := sdcc
OBJCOPY := packihx
MAKEBIN := makebin
CFLAGS := -mstm8 --std-c99 --opt-code-size -I$(INC_DIR)
LDFLAGS := -mstm8 --out-fmt-ihx
# Bootloader占用0x8000~0x87FF,主程序必须从0x8800开始链接。
LDFLAGS := -mstm8 --out-fmt-ihx --code-loc 0x8800
SOURCES := $(shell find $(SRC_DIR) -name '*.c' -print)
OBJECTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.rel,$(SOURCES))
IHX := $(BUILD_DIR)/$(PROJECT).ihx
HEX := $(BUILD_DIR)/$(PROJECT).hex
BIN := $(BUILD_DIR)/$(PROJECT).bin
.PHONY: all clean size
all: $(HEX)
all: $(HEX) $(BIN)
$(HEX): $(IHX)
@mkdir -p $(dir $@)
$(OBJCOPY) $< > $@
# 生成OTA使用的裸二进制:跳过0x0000~0x87FF,只保留0x8800之后的应用程序数据。
# -s 0x10000确保按STM8完整地址空间解析IHX;-o 0x8800去除Bootloader区域;
# -p再截断到应用程序最后一个实际占用地址,避免生成无意义的尾部空洞。
$(BIN): $(IHX)
@mkdir -p $(dir $@)
$(MAKEBIN) -p -s 0x10000 -o 0x8800 $< $@
$(IHX): $(OBJECTS)
@mkdir -p $(dir $@)
$(CC) $(LDFLAGS) -o $@ $(OBJECTS)
@@ -34,7 +44,7 @@ $(BUILD_DIR)/%.rel: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
size: $(IHX)
@ls -lh $(IHX) $(HEX)
@ls -lh $(IHX) $(HEX) $(BIN)
clean:
rm -rf $(BUILD_DIR)