80 lines
1.8 KiB
Makefile
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 "清理完成"
|