chore: HERV 통합 저장소 초기 커밋
- 펌웨어(program), C# 대시보드(TestProgram), 시뮬레이터(Simulator), 프로토콜/문서(Protocol, doc) 전체를 단일 저장소로 통합 - program 폴더의 별도 git 저장소를 제거하고 통합 저장소에 흡수 - 빌드 산출물(program/build, bin/obj, *.o/.elf/.bin/.hex 등) .gitignore 처리 - 사내 Synology NAS Git 원격 연결 예정 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
# =============================================================================
|
||||
# HERV Firmware - Nuvoton NANO100SE3BN (Cortex-M0)
|
||||
# Eclipse(Nueclipse) -> VS Code + ARM-GCC 마이그레이션
|
||||
#
|
||||
# 사용법:
|
||||
# make : 빌드 (build/HERV.elf, .hex, .bin)
|
||||
# make clean : 빌드 정리
|
||||
# make flash : Nu-Link 으로 플래시 (OpenOCD-Nuvoton 필요)
|
||||
# make erase : 칩 erase
|
||||
# make size : 메모리 사용량 출력
|
||||
# =============================================================================
|
||||
|
||||
PROJECT := HERV
|
||||
BUILD := build
|
||||
|
||||
# --- Toolchain ---
|
||||
PREFIX := arm-none-eabi-
|
||||
CC := $(PREFIX)gcc
|
||||
AS := $(PREFIX)gcc -x assembler-with-cpp
|
||||
LD := $(PREFIX)gcc
|
||||
OBJCOPY := $(PREFIX)objcopy
|
||||
SIZE := $(PREFIX)size
|
||||
|
||||
# --- MCU ---
|
||||
MCU := -mcpu=cortex-m0 -mthumb
|
||||
|
||||
# --- Include 경로 (Eclipse 와 동일) ---
|
||||
INCLUDES := \
|
||||
-ILibrary/CMSIS/Include \
|
||||
-ILibrary/Device/Nuvoton/Nano100Series/Include \
|
||||
-ILibrary/StdDriver/inc \
|
||||
-IUser
|
||||
|
||||
# --- 공통 컴파일 플래그 (Eclipse subdir.mk 에서 추출) ---
|
||||
COMMON_FLAGS := $(MCU) -Os -g \
|
||||
-fmessage-length=0 -fsigned-char \
|
||||
-ffunction-sections -fdata-sections
|
||||
|
||||
CFLAGS := $(COMMON_FLAGS) $(INCLUDES) -std=gnu11 -MMD -MP
|
||||
ASFLAGS := $(COMMON_FLAGS) -MMD -MP
|
||||
|
||||
# --- 링커 ---
|
||||
LDSCRIPT := Library/Device/Nuvoton/Nano100Series/Source/GCC/gcc_arm.ld
|
||||
LDFLAGS := $(COMMON_FLAGS) -T$(LDSCRIPT) \
|
||||
-Xlinker --gc-sections \
|
||||
-Wl,-Map=$(BUILD)/$(PROJECT).map
|
||||
|
||||
# --- 소스 자동 수집 ---
|
||||
# 주의: User/pwm_duty10000.c 가 StdDriver/pwm.c 를 대체하므로 pwm.c 는 빌드에서 제외
|
||||
# (Eclipse Nueclipse 프로젝트도 동일하게 pwm.c 를 exclude 하고 빌드)
|
||||
STDDRIVER_EXCLUDE := Library/StdDriver/src/pwm.c
|
||||
|
||||
C_SRCS := \
|
||||
$(wildcard User/*.c) \
|
||||
$(filter-out $(STDDRIVER_EXCLUDE), $(wildcard Library/StdDriver/src/*.c)) \
|
||||
Library/Device/Nuvoton/Nano100Series/Source/system_Nano100Series.c \
|
||||
Library/Device/Nuvoton/Nano100Series/Source/GCC/_syscalls.c
|
||||
|
||||
ASM_SRCS := \
|
||||
Library/Device/Nuvoton/Nano100Series/Source/GCC/startup_Nano100Series.S
|
||||
|
||||
# --- Object 파일 (build/ 아래 같은 트리 구조 유지) ---
|
||||
OBJS := $(addprefix $(BUILD)/, $(C_SRCS:.c=.o)) \
|
||||
$(addprefix $(BUILD)/, $(ASM_SRCS:.S=.o))
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
# --- 출력 ---
|
||||
ELF := $(BUILD)/$(PROJECT).elf
|
||||
HEX := $(BUILD)/$(PROJECT).hex
|
||||
BIN := $(BUILD)/$(PROJECT).bin
|
||||
|
||||
# =============================================================================
|
||||
# Targets
|
||||
# =============================================================================
|
||||
|
||||
.PHONY: all clean flash erase debug-server size rebuild
|
||||
|
||||
all: $(ELF) $(HEX) $(BIN) size
|
||||
|
||||
# clean -> all 을 순차 실행 (병렬 make -jN 에서 clean/all 동시 실행 방지)
|
||||
rebuild:
|
||||
@$(MAKE) clean
|
||||
@$(MAKE) all
|
||||
|
||||
$(ELF): $(OBJS)
|
||||
@echo '[LD] $@'
|
||||
@$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
$(HEX): $(ELF)
|
||||
@echo '[HEX] $@'
|
||||
@$(OBJCOPY) -O ihex $< $@
|
||||
|
||||
$(BIN): $(ELF)
|
||||
@echo '[BIN] $@'
|
||||
@$(OBJCOPY) -O binary $< $@
|
||||
|
||||
size: $(ELF)
|
||||
@echo ''
|
||||
@$(SIZE) --format=berkeley $<
|
||||
@echo ''
|
||||
|
||||
# C 컴파일
|
||||
$(BUILD)/%.o: %.c
|
||||
@mkdir -p $(dir $@)
|
||||
@echo '[CC] $<'
|
||||
@$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Assembly 컴파일
|
||||
$(BUILD)/%.o: %.S
|
||||
@mkdir -p $(dir $@)
|
||||
@echo '[AS] $<'
|
||||
@$(AS) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
# Nu-Link 으로 플래시 굽기
|
||||
flash: $(ELF)
|
||||
openocd -f openocd.cfg -c "program $(ELF) verify reset exit"
|
||||
|
||||
# OpenOCD GDB 서버만 실행 (VS Code 디버그용)
|
||||
debug-server:
|
||||
openocd -f openocd.cfg
|
||||
|
||||
# 칩 erase
|
||||
erase:
|
||||
openocd -f openocd.cfg -c "init; reset halt; nuc_chip_erase; exit"
|
||||
|
||||
clean:
|
||||
@echo 'Cleaning...'
|
||||
@rm -rf $(BUILD)
|
||||
|
||||
-include $(DEPS)
|
||||
Reference in New Issue
Block a user