Initial Commit
This commit is contained in:
commit
07f75ad6a5
15 files changed
+1439
No files matched your search
@@ -0,0 +1,89 @@
|
||||
# LYWSD03MMC B1.5 BTHome v2 beacon + LCD
|
||||
#
|
||||
# Builds against the Telink TLSR825x BLE SDK as shipped in
|
||||
# pvvx/ATC_MiThermometer, reusing its startup code, linker script and
|
||||
# post-build scripts:
|
||||
# git clone https://github.com/pvvx/ATC_MiThermometer ../ATC_MiThermometer
|
||||
# make ATC_PATH=../ATC_MiThermometer
|
||||
# TC32 toolchain: $(TEL_PATH)/tools/linux/tc32/bin (or set TC32_PATH)
|
||||
|
||||
PROJECT_NAME ?= LYWSD03MMC-BTHome
|
||||
ATC_PATH ?= ../ATC_MiThermometer
|
||||
TEL_PATH ?= $(ATC_PATH)/SDK
|
||||
TC32_PATH ?= $(TEL_PATH)/tools/linux/tc32/bin/
|
||||
PYTHON ?= python3
|
||||
|
||||
SRC_PATH := ./src
|
||||
OUT_PATH := ./out
|
||||
ATC_SRC := $(ATC_PATH)/src
|
||||
|
||||
ifeq ($(wildcard $(TEL_PATH)/components/drivers/8258/gpio_8258.c),)
|
||||
$(error SDK not found: set ATC_PATH or TEL_PATH)
|
||||
endif
|
||||
|
||||
CC := $(TC32_PATH)tc32-elf-gcc
|
||||
LD := $(TC32_PATH)tc32-elf-ld
|
||||
OBJCOPY := $(TC32_PATH)tc32-elf-objcopy
|
||||
NM := $(TC32_PATH)tc32-elf-nm
|
||||
|
||||
CFLAGS := -DCHIP_TYPE=CHIP_TYPE_8258 -DMCU_STARTUP_825X \
|
||||
-ffunction-sections -fdata-sections -Wall -O2 -fpack-struct \
|
||||
-fshort-enums -finline-small-functions -std=gnu99 -funsigned-char \
|
||||
-fshort-wchar -fms-extensions \
|
||||
-I$(TEL_PATH)/components -I$(SRC_PATH)
|
||||
|
||||
APP_SRCS := main.c ble.c i2c.c sensor.c battery.c lcd.c
|
||||
DRV_SRCS := adc.c analog.c bsp.c clock.c flash.c gpio_8258.c i2c.c lpc.c rf_pa.c timer.c uart.c
|
||||
COM_SRCS := string.c utility.c
|
||||
|
||||
OBJS := \
|
||||
$(OUT_PATH)/boot/cstartup_825x.o \
|
||||
$(OUT_PATH)/boot/div_mod.o \
|
||||
$(addprefix $(OUT_PATH)/app/,$(APP_SRCS:.c=.o)) \
|
||||
$(addprefix $(OUT_PATH)/drv/,$(DRV_SRCS:.c=.o)) \
|
||||
$(addprefix $(OUT_PATH)/common/,$(COM_SRCS:.c=.o)) \
|
||||
$(OUT_PATH)/vendor/blt_common.o
|
||||
|
||||
ELF := $(OUT_PATH)/$(PROJECT_NAME).elf
|
||||
BIN := $(PROJECT_NAME).bin
|
||||
|
||||
all: $(BIN)
|
||||
|
||||
$(OUT_PATH)/app/%.o: $(SRC_PATH)/%.c $(wildcard $(SRC_PATH)/*.h)
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OUT_PATH)/drv/%.o: $(TEL_PATH)/components/drivers/8258/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OUT_PATH)/common/%.o: $(TEL_PATH)/components/common/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OUT_PATH)/vendor/%.o: $(TEL_PATH)/components/vendor/common/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OUT_PATH)/boot/%.o: $(ATC_SRC)/%.S
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
# Two-pass link: the second pass places code after the retention RAM area
|
||||
$(ELF): $(OBJS)
|
||||
$(LD) --gc-sections -L $(TEL_PATH)/components/proj_lib -T $(ATC_SRC)/boot.link \
|
||||
-o $@ $(OBJS) -llt_8258
|
||||
$(LD) --gc-sections -Ttext `$(PYTHON) $(ATC_SRC)/TlsrRetMemAddr.py -e $@ -t $(NM)` \
|
||||
-L $(TEL_PATH)/components/proj_lib -T $(ATC_SRC)/boot.link \
|
||||
-o $@ $(OBJS) -llt_8258
|
||||
@$(PYTHON) $(ATC_SRC)/TlsrMemInfo.py -s 32768 -t $(NM) $@
|
||||
|
||||
# Raw image + Telink CRC (required by the OTA bootloader)
|
||||
$(BIN): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(PYTHON) $(ATC_PATH)/utils/tl_check_fw.py $@
|
||||
|
||||
clean:
|
||||
rm -rf $(OUT_PATH) $(BIN)
|
||||
|
||||
.PHONY: all clean
|
||||
Reference in new issue
Block a user