i.MX6ULL终结者EPIT定时器例程编译及运行

然后我们打开Makefile文件,输入下面的内容:

  1 CROSS_COMPILE   ?= arm-linux-gnueabihf-
  2 TARGET                  ?= epit
  3 
  4 CC                              := $(CROSS_COMPILE)gcc
  5 LD                              := $(CROSS_COMPILE)ld
  6 OBJCOPY                 := $(CROSS_COMPILE)objcopy
  7 OBJDUMP                 := $(CROSS_COMPILE)objdump
  8 
  9 INCDIRS                 := core \
 10                                    drivers/clk \
 11                                    drivers/led \
 12                                    drivers/delay \
 13                                    drivers/beep \
 14                                    drivers/gpio \
 15                                    drivers/key  \
 16                                    drivers/exit \
 17                                    drivers/int  \
 18                                    drivers/epittimer
 19 
 20 SRCDIRS                 := ./   \
 21                                    drivers/clk \
 22                                    drivers/led \
 23                                    drivers/delay \
 24                                    drivers/beep \
 25                                    drivers/gpio \
 26                                    drivers/key  \
 27                                    drivers/exit \
 28                                    drivers/int  \
 29                                    drivers/epittimer
 30 
 31 
 32 INCLUDE                 := $(patsubst %, -I %, $(INCDIRS))
 33 
 34 SFILES                  := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
 35 CFILES                  := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
 36 
 37 SFILENDIR               := $(notdir  $(SFILES))
 38 CFILENDIR               := $(notdir  $(CFILES))
 39 
 40 SOBJS                   := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
 41 COBJS                   := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
 42 OBJS                    := $(SOBJS) $(COBJS)
 43 
 44 VPATH                   := $(SRCDIRS)
 45 
 46 .PHONY: clean
 47         
 48 $(TARGET).bin : $(OBJS)
 49         $(LD) -Timx6ul.lds -o $(TARGET).elf $^
 50         $(OBJCOPY) -O binary -S $(TARGET).elf $@
 51 
 52 $(SOBJS) : output/%.o : %.S
 53         $(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<
 54 
 55 $(COBJS) : output/%.o : %.c
 56         $(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<
 57         
 58 clean:
 59         rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)

我们在Makefile中主要添加了EPIT1相关的驱动,以及修改了编译生成的文件名称:
第2行的target我们修改成了epit,这样编译得到的文件就是epit.bin。
第18行我们添加了EPIT1驱动的目录到INCDIRS,相当于添加EPIT1相关的.h文件。
第29行我们添加了EPIT1的驱动目录到SRCDIRS,相当于添加EPIT1相关的.c文件。
其它的地方和上一个实验的Makefile基本没有变化,然后保存并退出。

然后是链接文件“imx6ul.lds”保持不变。

然后我们在终端输入“make”命令开始编译我们的EPIT1定时器的工程,编译完成,会生成文件“epit.bin”
如图 1所示:
在这里插入图片描述

图 1

然后在终端输入命令“chmod 777 create_imx”修改create_imx文件具有可执行权限,如图 17.4.2所示:
在这里插入图片描述

图 2

最后在终端运行命令“./create_imx epit.bin”生成最终的镜像文件“bare.imx”,如图 17.4.3所示:
在这里插入图片描述

图 3

然后我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具内对应目录下,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待代码正常运行,我们LED会以500ms的时间间隔闪烁。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46635880/article/details/108879965