############################################################################### # 萝莉3代 接收机固件 - Makefile (SDCC) # 工具链: sdcc (apt 包,版本 4.2.0) # MCU: STC8H1K08-36I-QFN20 (1T 8051 内核,8KB Flash,1.25KB RAM) ############################################################################### PROJECT := LoliRX TARGET := $(PROJECT).ihx HEX := $(PROJECT).hex BIN := $(PROJECT).bin # 工具 CC := sdcc PACKIHX := packihx MAKEBIN := makebin # 目录 BUILD := build INC_DIRS := inc SRC_DIRS := src # 源 C_SRCS := $(wildcard $(SRC_DIRS)/*.c) # 头 INCLUDES := $(addprefix -I,$(INC_DIRS)) # SDCC 模型: stc8h1k08 是标准 8051,data 区 128 字节,xdata 可扩展 # 用 --model-small 让 data/xdata 自动分配 CFLAGS := -mmcs51 \ --model-small \ --std-sdcc11 \ --opt-code-size \ $(INCLUDES) LDFLAGS := -mmcs51 \ --model-small \ --iram-size 256 \ --xram-size 512 \ --code-size 8192 \ --out-fmt-ihx # 输出位置 OBJECTS := $(C_SRCS:$(SRC_DIRS)/%.c=$(BUILD)/%.rel) .PHONY: all clean flash size all: $(HEX) $(BIN) size $(HEX): $(TARGET) @$(PACKIHX) $(TARGET) > $(HEX) @echo "HEX <-" $(HEX) $(BIN): $(TARGET) @$(MAKEBIN) -s 8192 $(TARGET) $(BIN) @echo "BIN <-" $(BIN) $(TARGET): $(OBJECTS) @echo "LD <-" $@ @$(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(BUILD)/%.rel: $(SRC_DIRS)/%.c | $(BUILD) @echo "CC <-" $< @$(CC) -c $(CFLAGS) -o $@ $< $(BUILD): @mkdir -p $@ size: $(TARGET) @echo @echo "=== Memory map ===" @grep -E "^\s*(ABS,CON)" $(BUILD)/$(PROJECT).map 2>/dev/null | head -20 || \ echo " 无 .map 文件" flash: $(BIN) stcgal -p stc8h1k08 -b 115200 $(BIN) clean: @rm -rf $(BUILD) $(HEX) $(BIN) $(TARGET) @echo "清理完成"