bsp工程管理

1. bsp工程管理的目的

模块化项目,使得项目清晰

2. 代码

拷贝原来工程

image

创建文件夹

image

  • bsp就是工程驱动文件
  • imx6ull是和芯片有关的文件
  • obj是生成文件的文件夹
  • project 工程文件 start.s main.c

创建对应的驱动文件

和上一节一样的驱动文件

# ?= 没有赋值的话就赋值

CROSS_COMPILE ?= arm-linux-gnueabihf-

TARGET 		  ?= bsp



# :=覆盖之前的值

GCC    			 := $(CROSS_COMPILE)gcc 

LD 				 := $(CROSS_COMPILE)ld

OBJCOPY 		 := $(CROSS_COMPILE)objcopy

OBJDUMP  		 := $(CROSS_COMPILE)objdump 



# INCDIRS 包含整个工程的.h 头文件目录 \是换行符

INCDIRS          := imx6ull \

					bsp/clk \

					bsp/led \

					bsp/delay 



# SRCDIRS 包含整个工程的.s .c文件目录

SRCDIRS			 := project \

					bsp/clk \

					bsp/led \

					bsp/delay



# patsubst的作用是给INCDIRS中的每个目录前面加一个 -I,指明头文件目录时必须加

# -I imx6ull -I bsp/clk -I bsp/led -I bsp/delay 

INCLUDE 		 := $(patsubst %, -I %, $(INCDIRS))



# foreach dir对每个dir都执行一次,SRCDIRS中dir, 即上面的文件夹

# wildcard 取出文件夹内所有文件

# 比如bsp/clk/bsp_clk.c

SFILES 			 := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))

CFILES 			 := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))



# notdir 上面取出来之后去掉目录

SFILENDIR 		 := $(notdir $(SFILES))

CFILENDIR  		 := $(notdir $(CFILES))



# 把所有的.s和.c都变成点o文件,并在前面加上obj

SOBJS  			 := $(patsubst %, obj/%, $(SFILENDIR:.S=.o))

COBJS 			 := $(patsubst %, obj/%, $(CFILENDIR:.c=.o))

OBJS 			 := $(SOBJS) $(COBJS)



# 相当于重命名

VPATH 			 := $(SRCDIRS)



.PHONY: clean



# 这段和以前是一样的

$(TARGET).bin : $(OBJS)

	$(LD) -Timx6ul.lds -o $(TARGET).elf $^

	$(OBJCOPY) -O binary -S $(TARGET).elf $@

	$(OBJDUMP) -D -m arm $(TARGET).elf > $(TARGET).dis



# -Wall 编译后显示所有警告

# -nostdlib 不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。

#			这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件

# -O2   是比O1更高级的选项,进行更多的优化。

# 		Gcc将执行几乎所有的不包含时间和空间折中的优化。

# 		当设置O2选项时,编译器并不进行循环打开()loop unrolling以及函数内联。

# 		与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。

# 这样还能带着.h文件一起编译 

$(SOBJS) : obj/%.o : %.S

	$(GCC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<

$(COBJS) : obj/%.o : %.c

	$(GCC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<



clean:

	rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值