然后我们打开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所示:
然后在终端输入命令“chmod 777 create_imx”修改create_imx文件具有可执行权限,如图 17.4.2所示:
最后在终端运行命令“./create_imx epit.bin”生成最终的镜像文件“bare.imx”,如图 17.4.3所示:
然后我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具内对应目录下,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待代码正常运行,我们LED会以500ms的时间间隔闪烁。