Слияние кода завершено, страница обновится автоматически
#选择编译工具链
CROSS_COMPILE = arm-none-eabi-
CC := $(CROSS_COMPILE)gcc
CXX := $(CROSS_COMPILE)g++
AS := $(CROSS_COMPILE)as
AR := $(CROSS_COMPILE)ar
LD := $(CROSS_COMPILE)ld
OBJCOPY :=$(CROSS_COMPILE)objcopy
OBJDUMP :=$(CROSS_COMPILE)objdump
SIZE :=$(CROSS_COMPILE)size
#编译输出的路径
OUTPUT :=output/
#查找当前目录下所有的inc文件夹
allincdir := $(shell find ./ -name inc -type d)
#编译的CFLAGS 选项中添加头文件路径
CFLAGS += $(addprefix -I,$(allincdir))
CFLAGS += -Wall -O0 -g -Wno-missing-braces -std=gnu99 -mthumb -mcpu=cortex-m3 -mfloat-abi=soft -D__NO_SYSTEM_INIT -lnosys --specs=nano.specs -ffunction-sections -fdata-sections
#设置为环境变量,方便在makefile.build中使用
export CC CXX AS AR LD OBJCOPY OBJDUMP SIZE CFLAGS OUTPUT
#编译项目的目标名称
PROJECTNAME = sharertos
#需要编译的文件夹名称,即项目下需要编译的文件夹路径名
PROJECTSRCDIR = mcudevice/
PROJECTSRCDIR += user/
PROJECTSRCDIR += kernel/
#链接脚本路径
LDDIR = mcudevice/stm32f205/
#链接选项
LDFLAGS += -I ./include/generated
LDFLAGS += -nostartfiles -Wl,--gc-sections,-Map=$(OUTPUT)$(PROJECTNAME).map,-cref -mcpu=cortex-m3 -march=armv7-m -T$(LDDIR)stm32f2xx.ld
#用于生成bin文件的依赖文件的名称,例如user/build-in.o
allbuildfile = $(addsuffix build-in.o,$(addprefix $(OUTPUT),$(PROJECTSRCDIR)))
#目标文件
all:$(OUTPUT)$(PROJECTNAME).bin
#生成bin文件
$(OUTPUT)$(PROJECTNAME).bin:$(OUTPUT)$(PROJECTNAME).elf
$(OBJCOPY) -O binary $^ $@
$(OUTPUT)$(PROJECTNAME).elf: build-in
$(CC) $(CFLAGS) -o $@ $(allbuildfile) $(LDFLAGS)
#调用makefile.build 文件生成对应的build-in文件,这个地方应该可以用foreach的函数去实现,没有验证
#目前要用的话直接像后加3 4 等这样的
#$(allbuildfile):FORCE
build-in:FORCE
make -f Makefile.build obj=$(word 1,$(PROJECTSRCDIR))
make -f Makefile.build obj=$(word 2,$(PROJECTSRCDIR))
make -f Makefile.build obj=$(word 3,$(PROJECTSRCDIR))
#清除文件
clean:
-rm -rf $(OUTPUT)
#实现menuconfig
menuconfig:Kconfig
./tools/mconf $<
./tools/conf -s --syncconfig $<
rm -rf $(OUTPUT)
#下载到mcu中
download:
echo "si 1" >> jlinkcmd #选择swd端口
echo "speed 4000" >>jlinkcmd #设置速度
echo "device STM32F205RE" >> jlinkcmd #选择mcu型号
echo "r" >> jlinkcmd #重新复位
echo "h" >> jlinkcmd #挂起目标
#echo "erase" >> jlinkcmd #全部擦除flash
echo "loadfile $(OUTPUT)$(PROJECTNAME).bin 0x08000000" >> jlinkcmd #烧录
echo "g" >> jlinkcmd #运行
echo "qc" >> jlinkcmd #退出
JLinkExe -CommanderScript jlinkcmd
rm jlinkcmd
FORCE:
.PHONY:FORCE
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )