当前makefile还没完全好

[复制链接]
5805|0
手机看帖
扫描二维码
随时随地手机跟帖
keer_zu|  楼主 | 2021-6-23 10:27 | 显示全部楼层 |阅读模式
排除某些文件:
#工程名称
TARGET                         = OSAL_example

#设置编译器
CC                             = arm-none-eabi-gcc
#CC                             = /opt/arm-none-gcc-5.4/bin/arm-none-eabi-gcc
OBJCOPY                        = arm-none-eabi-objcopy
#OBJCOPY                        = /opt/arm-none-gcc-5.4/bin/arm-none-eabi-objcopy
ARMSIZE                        = arm-none-eabi-size

#获取当前工作目录
TOP=.

#设置源文件后缀,c或cpp
EXT                                = c

#设置自定义源文件目录
# APP_DIR                        = $(TOP)/APP
HARD_DIR                = $(TOP)/HARDWARE
PORT_STM32F4_DIR                = $(TOP)/LWIP/port
SYS_DIR = $(TOP)/SYSTEM
FREERTOS_DIR = $(TOP)/FreeRTOS

#设置源文件搜索路径
VPATH                        += $(TOP)/Cpu/Core
VPATH                        += $(TOP)/firmware
VPATH                        += $(TOP)/FreeRTOS
VPATH                        += $(FREERTOS_DIR)/portable/GCC/ARM_CM4_MPU
VPATH                        += $(TOP)/FWLIB/src
VPATH                        += $(TOP)/IAP:$(TOP)/LWIP:$(TOP)/HARDWARE
VPATH                        += $(HARD_DIR)/ADC:$(HARD_DIR)/CAN:$(HARD_DIR)/DIN:$(HARD_DIR)/DMA:$(HARD_DIR)/DOUT:$(HARD_DIR)/DS1302:$(HARD_DIR)/FLASH:$(HARD_DIR)/GPRS:$(HARD_DIR)/KEY:$(HARD_DIR)/TIMER:$(HARD_DIR)/USART2:$(HARD_DIR)/WDG
VPATH                        += $(TOP)/LWIP/app:$(TOP)/LWIP/cfg:$(TOP)/LWIP/drv
VPATH                        += $(PORT_STM32F4_DIR)/FreeRTOS:$(PORT_STM32F4_DIR)/Standalone
VPATH                        += $(SYS_DIR)/delay:$(SYS_DIR)/sys:$(SYS_DIR)/usart
VPATH                        += $(TOP)/Task
VPATH                        += $(TOP)/USER
VPATH                        += $(TOP)/Main

#设置中间目标文件目录
OBJ_DIR                        = $(TOP)/OBJ

#设定头文件包含目录
INC_FLAGS                += -I $(TOP)/FreeRTOS/include
INC_FLAGS                 += -I $(TOP)/Cpu/Core
INC_FLAGS                 += -I $(TOP)/firmware
INC_FLAGS                += -I $(FREERTOS_DIR)/include
INC_FLAGS                += -I $(FREERTOS_DIR)/portable/GCC/ARM_CM4_MPU
INC_FLAGS                 += -I $(TOP)/FWLIB/inc
INC_FLAGS                 += -I $(HARD_DIR)
INC_FLAGS                += -I $(HARD_DIR)/ADC
INC_FLAGS                += -I $(HARD_DIR)/CAN
INC_FLAGS                += -I $(HARD_DIR)/DIN
INC_FLAGS                += -I $(HARD_DIR)/DMA
INC_FLAGS                += -I $(HARD_DIR)/DOUT
INC_FLAGS                += -I $(HARD_DIR)/DS1302
INC_FLAGS                += -I $(HARD_DIR)/FLASH
INC_FLAGS                += -I $(HARD_DIR)/GPRS
INC_FLAGS                += -I $(HARD_DIR)/KEY
INC_FLAGS                += -I $(HARD_DIR)/TIMER
INC_FLAGS                += -I $(HARD_DIR)/USART2
INC_FLAGS                += -I $(HARD_DIR)/WDG
INC_FLAGS                 += -I $(TOP)/IAP
INC_FLAGS                 += -I $(TOP)/LWIP/app
INC_FLAGS                += -I $(TOP)/LWIP/cfg$(TOP)/LWIP/drv
INC_FLAGS                += -I $(TOP)/LWIP
INC_FLAGS                += -I $(PORT_STM32F4_DIR)/FreeRTOS
INC_FLAGS                += -I $(PORT_STM32F4_DIR)/Standalone
INC_FLAGS                += -I $(PORT_STM32F4_DIR)/arch
INC_FLAGS                 += -I $(TOP)/Main
INC_FLAGS                 += -I $(SYS_DIR)/delay
INC_FLAGS                += -I $(SYS_DIR)/sys
INC_FLAGS                += -I $(SYS_DIR)/usart
INC_FLAGS                += -I $(TOP)/Task
INC_FLAGS                += -I $(TOP)/USER
INC_FLAGS                += -I $(TOP)/LWIP/drv


#编译选项
CFLAGS                         += -W -Wall -g -mcpu=cortex-m3 -mthumb -O2 -std=gnu11 -mfloat-abi=softfp
CFLAGS                         += -D USE_STDPERIPH_DRIVER
CFLAGS                        += -D STM32F40XX
CFLAGS                        += -D __TARGET_FPU_VFP

#链接选项
LFLAGS                         += -mthumb -mcpu=cortex-m3 -Wl,--start-group -lc -lm -Wl,--end-group -specs=nano.specs
LFLAGS                         += -specs=nosys.specs -static -Wl,-cref,-u,Reset_Handler -Wl,-Map=Project.map -Wl,--gc-sections
LFLAGS                         += -Wl,--defsym=malloc_getpagesize_P=0x80

#链接启动文件和链接脚本
LFLAGS                        += $(TOP)/CORE/startup_stm32f10x_hd.s
LFLAGS                        += -T $(TOP)/CORE/stm32_flash.ld

#固定源文件添加
C_SRC                        += $(shell find $(TOP)/Cpu/Core  -name '*.$(EXT)')
C_SRC                        += $(shell find $(TOP)/firmware  -name '*.$(EXT)')
C_SRC                        += $(shell find $(TOP)/FreeRTOS -maxdepth 1 -name  '*.$(EXT)')
C_SRC                        += $(shell find $(FREERTOS_DIR)/portable/GCC/ARM_CM4_MPU  -name '*.$(EXT)')
C_SRC                        += $(shell find $(TOP)/FWLIB/src  -name '*.$(EXT)' ! -name 'stm32f4xx_fmc.$(EXT)')
C_SRC                        += $(shell find $(FREERTOS_DIR)/portable/MemMang  -name 'heap_4.$(EXT)')

#中间目标文件
#C_OBJ                        += $(C_SRC:%.$(EXT)=%.o)
C_SRC_NODIR                = $(notdir $(C_SRC))
C_OBJ                         = $(patsubst %.$(EXT), $(OBJ_DIR)/%.o,$(C_SRC_NODIR))

#依赖文件
C_DEP                        = $(patsubst %.$(EXT), $(OBJ_DIR)/%.d,$(C_SRC_NODIR))

.PHONY: all clean rebuild upload test ctags



all:$(C_OBJ)
        [url=home.php?mod=space&uid=3148]@echo[/url] "linking object to $(TARGET).elf"
        @$(CC) $(C_OBJ) -o $(TARGET).elf $(LFLAGS)
        @$(ARMSIZE) $(TARGET).elf
        @echo "create $(TARGET).hex from $(TARGET).elf"
        @$(OBJCOPY) $(TARGET).elf $(TARGET).hex -Oihex
        @$(ARMSIZE) $(TARGET).hex
#$(OBJCOPY) $(TARGET).elf  $(TARGET).bin -Obinary

#静态模式
#$(C_OBJ):%.o:%.$(EXT)
#        $(CC) -c $(CFLAGS) -o $[url=home.php?mod=space&uid=72445]@[/url] $<

$(OBJ_DIR)/%.o:%.$(EXT)
        @mkdir -p OBJ
        @echo "building $<"
        @$(CC) -c $(CFLAGS) $(INC_FLAGS) -o $@ $<

-include $(C_DEP)
$(OBJ_DIR)/%.d:%.$(EXT)
        @mkdir -p OBJ
        @echo "making $@"

        [url=home.php?mod=space&uid=126030]@set[/url] -e;rm -f $@;$(CC) -MM $(CFLAGS) $(INC_FLAGS) $< > $@.$$;sed 's,\($*\)\.o[ :]*,$(OBJ_DIR)/\1.o $(OBJ_DIR)/\1.d:,g' < $@.$$ > $@;rm -f $@.$$

clean:
        -rm -f $(OBJ_DIR)/*
        -rm -f $(shell find ./ -name '*.map')
        -rm -f $(shell find ./ -name '*.elf')
        -rm -f $(shell find ./ -name '*.bin')
        -rm -f $(shell find ./ -name '*.hex')

rebuild: clean all

test:
        @echo "Test !"
        @echo "C_SRC:$(C_SRC) "

ctags:
        @ctags -R *

upload:
#openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg  -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg -c init -c "reset halt" -c "flash write_image erase $(TOP)/$(TARGET).hex" -c reset -c shutdown
        openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg  -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg -c init -c "reset halt" -c "flash write_image erase $(TOP)/$(TARGET).hex" -c reset -c shutdown

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1287

主题

12161

帖子

53

粉丝