嵌入式开发3(I.MX6U移植SDK与makefile解析)

NXP官方SDK与makefile解析

移植文件

新建imx6ul文件夹,需要移植的文件有:
cc.h
fsl_common.h
fsl_iomuxc.h
MCIMX6Y2.h

IO函数说明

函数:IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03 , 0);		/* 复用为GPIO1_IO03 */
定义:IOMUXC_SetPinMux(uint32_t muxRegister,
                      uint32_t muxMode,
                      uint32_t inputRegister,
                      uint32_t inputDaisy,
                      uint32_t configRegister,
                      uint32_t inputOnfield)
解析:
#define IOMUXC_GPIO1_IO03_GPIO1_IO03          0x020E0068U, 0x5U, 0x00000000U, 0x0U, 0x020E02F4U
该函数有两个参数,第一个 IOMUXC_GPIO1_IO03_GPIO1_IO03 对应5个参数,用于确定复用寄存器地址,模式等。
第二个参数0

同理:

IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);
IOMUXC_SetPinConfig(uint32_t muxRegister,
                                       uint32_t muxMode,
                                       uint32_t inputRegister,
                                       uint32_t inputDaisy,
                                       uint32_t configRegister,
                                       uint32_t configValue)
最后一位configValue就是电气属性

makefile解析

见注释

CROSS_COMPILE 	?= arm-linux-gnueabihf-
TARGET		  	?= beep      //目标生成的名字

CC 				:= $(CROSS_COMPILE)gcc    //用CC代替gcc
LD				:= $(CROSS_COMPILE)ld
OBJCOPY 		:= $(CROSS_COMPILE)objcopy
OBJDUMP 		:= $(CROSS_COMPILE)objdump

INCDIRS 		:= imx6ul \        //incdirs是所有头文件所在的路径
				   bsp/clk \
				   bsp/led \
				   bsp/delay  \
				   bsp/beep
				   			   
SRCDIRS			:= project \       //srcdirs是所有源码所在的路径
				   bsp/clk \
				   bsp/led \
				   bsp/delay \
				   bsp/beep
				   
				   
INCLUDE			:= $(patsubst %, -I %, $(INCDIRS))   //include是在所有.h文件前面加上“-I”用于链接

SFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))   //sfiles是提取所有.s文件
CFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))   //cfiles是提取所有.c文件

SFILENDIR		:= $(notdir  $(SFILES))    //取消sfiles前面的路径
CFILENDIR		:= $(notdir  $(CFILES))    //取消cfiles前面的路径

SOBJS			:= $(patsubst %, obj/%, $(SFILENDIR:.S=.o))   //.s链接到.o并放到obj目录下
COBJS			:= $(patsubst %, obj/%, $(CFILENDIR:.c=.o))   //.c链接到.o并放到obj目录下
OBJS			:= $(SOBJS) $(COBJS)

VPATH			:= $(SRCDIRS)


print:                 //打印,见下图
	@echo INCLUDE = $(INCLUDE)
	@echo SFILES = $(SFILES)
	@echo CFILES = $(CFILES)
	@echo SFILENDIR = $(SFILENDIR)
	@echo CFILENDIR = $(CFILENDIR)
	@echo SOBJS = $(SOBJS)
	@echo COBJS = $(COBJS)
	@echo OBJS = $(OBJS)



.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

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

$(COBJS) : obj/%.o : %.c
	$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<
	
clean:
	rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)

	

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值