-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
163 lines (135 loc) · 5.24 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
TARGET = gw_test_app
OPT ?= -g -Og
C_SOURCES = \
Core/Src/test_app.c \
Core/Src/system_stm32h7xx.c \
Core/Src/stm32h7xx_it.c \
Core/Src/gw_buttons.c \
Core/Src/stm32h7xx_hal_msp.c \
Core/Src/gw_flash.c \
Core/Src/gw_lcd.c \
Core/Src/gw_alloc.c \
Core/Src/main.c \
Core/Src/bq24072.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_wwdg.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ospi.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai.c \
C_INCLUDES += \
-ICore/Inc \
-IDrivers/STM32H7xx_HAL_Driver/Inc \
-IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32H7xx/Include \
-IDrivers/CMSIS/Include \
ASM_SOURCES = \
Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_stm32h7b0xx.s \
Core/Src/memcpy-armv7m.s \
# setup arm toolchain
PREFIX = arm-none-eabi-
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
GDB = gdb #$(PREFIX)gdb
DUMP = $(PREFIX)objdump
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
# set flags to target microcontroller
CPU = -mcpu=cortex-m7 -mtune=cortex-m7
FPU = -mfpu=fpv5-d16
FLOAT-ABI = -mfloat-abi=hard
MCU = $(CPU) -mthumb -mno-unaligned-access $(FPU) $(FLOAT-ABI)
# macros for gcc
# AS defines
AS_DEFS +=
# C defines
C_DEFS += \
-DUSE_HAL_DRIVER \
-DSTM32H7B0xx \
-DVECT_TAB_ITCM \
-DIS_LITTLE_ENDIAN \
-DDEBUG_RG_ALLOC \
# compile gcc flags
ASFLAGS += $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
# detect stack overflow (adjust according to _Min_Stack_Size in STM32H7B0VBTx_FLASH.ld)
CFLAGS += -fstack-usage -Wstack-usage=20480
# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
# Set external flash size (default to 1MB)
EXTFLASH_SIZE ?= 1048576
LDFLAGS += -Wl,--defsym=__EXTFLASH_TOTAL_LENGTH__=$(EXTFLASH_SIZE)
# ld script setups memory layout and elf sections
LDSCRIPT = STM32H7B0VBTx_FLASH.ld
# libraries
LIBS = -lc -lm -lnosys
LDFLAGS += $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBS) -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections
all: $(TARGET).elf $(TARGET)_extflash.bin $(TARGET)_intflash.bin
OBJECTS=$(patsubst %.c,%.o,$(C_SOURCES)) $(patsubst %.s,%.o,$(ASM_SOURCES))
$(TARGET).elf: $(OBJECTS)
$(CC) $^ $(LDFLAGS) -o $@
$(SZ) $@
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
%.o: %.s
$(AS) -c $(CFLAGS) $< -o $@
# sections that are copied to external flash
$(TARGET)_extflash.bin: $(TARGET).elf
$(BIN) -j ._itcram_hot -j ._ram_exec -j ._extflash $< $(TARGET)_extflash.bin
# sections that are copied to internal flash
$(TARGET)_intflash.bin: $(TARGET).elf
$(BIN) -j .isr_vector -j .text -j .rodata -j .ARM.extab -j .preinit_array -j .init_array -j .fini_array -j .data $< $(TARGET)_intflash.bin
OPENOCD ?= openocd
ADAPTER ?= stlink
FLSHLD_DIR ?= ../game-and-watch-flashloader
FLASHLOADER ?= $(FLSHLD_DIR)/flash_multi.sh
# Programs the internal and external flash using OpenOCD
flash_intflash: $(TARGET)_intflash.bin
$(OPENOCD) -f $(FLSHLD_DIR)/interface_$(ADAPTER).cfg -c "program $< 0x08000000 verify reset exit"
.PHONY: flash_intflash
flash_extflash: $(TARGET)_extflash.bin
$(FLASHLOADER) $<
.PHONY: flash_extflash
# Programs both the external and internal flash.
flash: flash_extflash flash_intflash
.PHONY: flash
# run debugger
gdb: $(TARGET).elf
$(GDB) $< -ex "target extended-remote :3333"
.PHONY: gdb
# run st-link side of debugger
debug:
st-util -p 3333
.PHONY: debug
clean:
rm -f $(TARGET).{map,elf} $(TARGET)_{ext,int}flash.bin
find . -name '*.o' -or -name '*.d' -or -name '*.su' | xargs rm
#-include $(wildcard $(BUILD_DIR)/*.d)