我们首先需要修改下Makefile文件,在里面输入下面的内容:
1 CROSS_COMPILE ?= arm-linux-gnueabihf-
2 TARGET ?= gpt_delay
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 drivers/keyfilter
20
21 SRCDIRS := ./ \
22 drivers/clk \
23 drivers/led \
24 drivers/delay \
25 drivers/beep \
26 drivers/gpio \
27 drivers/key \
28 drivers/exit \
29 drivers/int \
30 drivers/epittimer \
31 drivers/keyfilter
32
33
34 INCLUDE := $(patsubst %, -I %, $(INCDIRS))
35
36 SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
37 CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
38
39 SFILENDIR := $(notdir $(SFILES))
40 CFILENDIR := $(notdir $(CFILES))
41
42 SOBJS := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
43 COBJS := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
44 OBJS := $(SOBJS) $(COBJS)
45
46 VPATH := $(SRCDIRS)
47
48 .PHONY: clean
49
50 $(TARGET).bin : $(OBJS)
51 $(LD) -Timx6ul.lds -o $(TARGET).elf $^
52 $(OBJCOPY) -O binary -S $(TARGET).elf $@
53
54 $(SOBJS) : output/%.o : %.S
55 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
56
57 $(COBJS) : output/%.o : %.c
58 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
59
60 clean:
61 rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
因为我们在该例程中,没有添加新的.c和.h文件,只是修改了delay.c和delay.h文件,所以Makefile我们只把第2行的target修改为gpt_delay。
链接脚本文件保持不变。
最后我们在终端输入命令“make”编译工程,编译完成最终得到“gpt_delay.bin”文件,如图 1所示:
然后在终端输入命令“chmod 777 create_imx”修改create_imx文件具有可执行权限,如图 2所示:
最后在终端运行命令“./create_imx gpt_delay.bin”生成最终的镜像文件“bare.imx”,如图 3所示:
然后我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具内对应目录下,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待代码正常运行,我们可以看到LED灯每隔500ms交替闪烁。