首先我们在终端输入“vi Makefile”打开Makefile文件,如图 1所示:
然后输入下面的内容:
1 CROSS_COMPILE ?= arm-linux-gnueabihf-
2 TARGET ?= clk
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
17 SRCDIRS := ./ \
18 drivers/clk \
19 drivers/led \
20 drivers/delay \
21 drivers/beep \
22 drivers/gpio \
23 drivers/key
24
25
26 INCLUDE := $(patsubst %, -I %, $(INCDIRS))
27
28 SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
29 CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
30
31 SFILENDIR := $(notdir $(SFILES))
32 CFILENDIR := $(notdir $(CFILES))
33
34 SOBJS := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
35 COBJS := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
36 OBJS := $(SOBJS) $(COBJS)
37
38 VPATH := $(SRCDIRS)
39
40 .PHONY: clean
41
42 $(TARGET).bin : $(OBJS)
43 $(LD) -Timx6ul.lds -o $(TARGET).elf $^
44 $(OBJCOPY) -O binary -S $(TARGET).elf $@
45
46 $(SOBJS) : output/%.o : %.S
47 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
48
49 $(COBJS) : output/%.o : %.c
50 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
51
52 clean:
53 rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
54
第2行TARGET修改为“clk”。
链接脚本文件保持不变。
然后在终端输入“make”命令编译代码。如图 2所示:
编译完成,会生成的clk.bin文件,如图 3所示:
然后使用命令“chmod 777 create_imx”修改create_imx文件权限。如图 4所示:
然后使用命令“./create_imx clk.bin”生成烧写文件bare.imx,如图 5所示:
我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具里面的对应文件夹下面,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待代码正常运行,实验效果与按键输入实验基本一致,但是由于我们把主频修改成了528MHz,所以我们可以明显发现LED灯闪烁频率加快了,这是由于CPU处理指令速度变快了,所以延时函数效果没有之前慢,导致LED灯闪烁更快了。