I.MX 6 UL裸機開発(五)——BSPエンジニアリング管理


1、工程目次の下に4つのフォルダを作成する:(1)bsp:格納駆動ファイル(2)imx 6 ul:NXP公式のSDKライブラリファイル(3)obj:格納コンパイル生成のようなチップに関するファイルを格納する.oファイル(4)project:start.を格納Sとmain.cファイル、すなわちアプリケーションファイル
2、BSP工事のMakefile:
CROSS_COMPILE 	?= arm-linux-gnueabihf-		#      
TARGET		  	?= bsp						#    

CC 				:= $(CROSS_COMPILE)gcc		#    
LD				:= $(CROSS_COMPILE)ld		#    
OBJCOPY 		:= $(CROSS_COMPILE)objcopy	#      
OBJDUMP 		:= $(CROSS_COMPILE)objdump	#     

INCDIRS 		:= imx6ul \					#     
			   bsp/clk \
			   bsp/led \
			   bsp/delay 
			   			   
SRCDIRS			:= project \				#     
			   bsp/clk \
			   bsp/led \
			   bsp/delay 		  	   

INCLUDE			:= $(patsubst %, -I %, $(INCDIRS))	# INCDIRS      -I,           -I
SFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))	#        .S  (    )
CFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))	#        .c  (    )

SFILENDIR		:= $(notdir  $(SFILES))		#        .S  (     )
CFILENDIR		:= $(notdir  $(CFILES))		#        .c  (     )

SOBJS			:= $(patsubst %, obj/%, $(SFILENDIR:.S=.o))		# SFILENDIR   .S     .o  ,   obj/
COBJS			:= $(patsubst %, obj/%, $(CFILENDIR:.c=.o))		# CFILENDIR   .c     .o  ,   obj/
OBJS			:= $(SOBJS) $(COBJS)	#OBJS SOBJS COBJS   

VPATH			:= $(SRCDIRS)	#VPATH  SRCDIRS        

.PHONY: clean	#     clean

$(TARGET).bin : $(OBJS)	# .o     .bin  
	$(LD) -Timx6ul.lds -o $(TARGET).elf $^				# .o     .elf  
	$(OBJCOPY) -O binary -S $(TARGET).elf $@			# .elf       .bin  
	$(OBJDUMP) -D -m arm $(TARGET).elf > $(TARGET).dis	# .elf    .dis  

$(SOBJS) : obj/%.o : %.S	# .S     .o  
	$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<
$(COBJS) : obj/%.o : %.c	# .c     .o  
	$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<

clean:		#            
	rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)

3、リンクファイル:
SECTIONS{
	. = 0X87800000;
	.text :
	{
		obj/start.o 
		*(.text)
	}
	.rodata ALIGN(4) : {*(.rodata*)}     
	.data ALIGN(4)   : { *(.data) }    
	__bss_start = .;    
	.bss ALIGN(4)  : { *(.bss)  *(COMMON) }    
	__bss_end = .;
}