# # Makefile のターゲット依存部(NUCLEO_F401RE用) # # # ボード名, チップ名,コア名,開発環境名の定義 # BOARD = nucleo_f401re CHIP = stm32f4xx_stm32cube PRC = arm_m TOOL = gcc # # FPUを使用するか # FPU_USAGE = FPU_LAZYSTACKING # # 使用するタイマ # #KERNEL_TIMER = SYSTICK KERNEL_TIMER = TIM # # コンパイルオプション # INCLUDES := $(INCLUDES) -I$(TARGETDIR) -I$(TARGETDIR)/stm32fcube CDEFS := $(CDEFS) -DSTM32F401xE COPTS := $(COPTS) LDFLAGS := -nostdlib -nostartfiles $(LDFLAGS) # # ファイルサイズ削減のためのオプション # COPTS := $(COPTS) -ffunction-sections -fdata-sections OBJ_LDFLAGS := $(OBJ_LDFLAGS) -Wl,--gc-sections # # カーネルに関する定義 # KERNEL_DIRS := $(KERNEL_DIRS) $(TARGETDIR) $(TARGETDIR)/stm32fcube KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) start.o KERNEL_COBJS := $(KERNEL_COBJS) target_kernel_impl.o \ system_stm32f4xx.o stm32f4xx_nucleo.o systemclock_config.o \ stm32f4xx_hal_gpio.o stm32f4xx_hal_uart.o \ stm32f4xx_hal_rcc.o stm32f4xx_hal_dma.o KERNEL_COBJS := $(KERNEL_COBJS) stm32f4xx_hal_tim.o # # システムサービスに関する定義 # SYSSVC_DIRS := $(SYSSVC_DIRS) SYSSVC_COBJS := $(SYSSVC_COBJS) usart.o # # 使用するタイマ # ifeq ($(KERNEL_TIMER), SYSTICK) CDEFS := $(CDEFS) -DUSE_SYSTICK_AS_TIMETICK KERNEL_COBJS := $(KERNEL_COBJS) core_timer.o else ifeq ($(KERNEL_TIMER), TIM) CDEFS := $(CDEFS) -DUSE_TIM_AS_HRT KERNEL_COBJS := $(KERNEL_COBJS) target_timer.o endif endif # # GNU開発環境のターゲットアーキテクチャの定義 # ifndef GCC_TARGET GCC_TARGET = arm-none-eabi endif # # トレースログ記録のサンプルコードに関する定義 # ifdef ENABLE_TRACE COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE SYSSVC_DIRS := $(SYSSVC_DIRS) $(SRCDIR)/arch/tracelog endif # # 依存関係の定義 # cfg1_out.timestamp: $(TARGETDIR)/target_timer.cfg offset.timestamp: kernel_cfg.timestamp: $(TARGETDIR)/target_kernel.trb check.timestamp: $(TARGETDIR)/target_check.trb # # リンカスクリプトの定義 # LDSCRIPT = $(TARGETDIR)/stm32f401re.ld # # チップ依存部のインクルード # include $(SRCDIR)/arch/$(PRC)_$(TOOL)/$(CHIP)/Makefile.chip # # フラッシュへの書き込み # UNAME_TARGET = Cygwin OPENOCD_PATH = /cygdrive/c/arm/OpenOCD/0.10.0-201510281129-dev/bin/openocd.exe OPENOCD_SCRIPT_PATH = c:/arm/OpenOCD/0.10.0-201510281129-dev/scripts OPENOCD_SCRIPT = c:/arm/OpenOCD/0.10.0-201510281129-dev/scripts/board/st_nucleo_f4.cfg ifeq ($(UNAME_TARGET), Cygwin) GDB = arm-gdb_m0.exe else GDB = $(ARDUINO_BASE_DIR_WIN)\hardware\tools\gcc-arm-none-eabi-4.8.3-2014q1\bin\arm-none-eabi-gdb endif run: $(OBJNAME).bin ifeq ($(UNAME_TARGET), Cygwin) "`cygpath -u "$(OPENOCD_PATH)"`" -s "$(OPENOCD_SCRIPT_PATH)" -f "$(OPENOCD_SCRIPT)" -c "program ./$(OBJNAME).bin verify 0x08000000 reset exit" #-c "flash probe 0; flash write_image erase ./$(OBJNAME).axf 0x08000000 reset exit" else "$(OPENOCD_PATH)" -s "$(OPENOCD_SCRIPT_PATH)" -f "$(OPENOCD_SCRIPT)" -c "program ./$(OBJNAME).bin verify 0x4000 reset exit" endif ocd: $(OBJNAME).bin ifeq ($(UNAME_TARGET), Cygwin) cygstart "$(OPENOCD_PATH)" '-s "$(OPENOCD_SCRIPT_PATH)"' '-f "$(OPENOCD_SCRIPT)"' else start /MIN "" "$(OPENOCD_PATH)" -s "$(OPENOCD_SCRIPT_PATH)" -f "$(OPENOCD_SCRIPT)" endif db: $(OBJNAME).bin ifeq ($(UNAME_TARGET), Cygwin) $(GDB) $(OBJFILE) -x $(TARGETDIR)/gdb.ini else $(GDB) $(OBJFILE) -x $(TARGETDIR)/gdb.ini endif d: $(OBJNAME).bin ifeq ($(UNAME_TARGET), Cygwin) $(GDB) $(OBJFILE) -x $(TARGETDIR)/gdb_noflash.ini else endif