Files
alicerc/AliceRX_STC/Makefile
T

80 lines
1.8 KiB
Makefile

###############################################################################
# 萝莉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 "清理完成"