首先我们使用命令“sudo vi Makefile”打开Makefile。如图 1所示:
然后添加下面的内容:
1 CROSS_COMPILE ?= arm-linux-gnueabihf-
2 TARGET ?= beep
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
15 SRCDIRS := ./ \
16 drivers/clk \
17 drivers/led \
18 drivers/delay \
19 drivers/beep
20
21
22 INCLUDE := $(patsubst %, -I %, $(INCDIRS))
23
24 SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
25 CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
26
27 SFILENDIR := $(notdir $(SFILES))
28 CFILENDIR := $(notdir $(CFILES))
29
30 SOBJS := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
31 COBJS := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
32 OBJS := $(SOBJS) $(COBJS)
33
34 VPATH := $(SRCDIRS)
35
36 .PHONY: clean
37
38 $(TARGET).bin : $(OBJS)
39 $(LD) -Timx6ul.lds -o $(TARGET).elf $^
40 $(OBJCOPY) -O binary -S $(TARGET).elf $@
41
42 $(SOBJS) : output/%.o : %.S
43 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
44
45 $(COBJS) : output/%.o : %.c
46 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $<
47
48 clean:
49 rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
50
51
第2行的TARGET我们修改为“beep”。
第9行在变量 INCDIRS 中添加蜂鸣器驱动头文件路径,也就是文件beep.h的路径。
第15行在变量 SRCDIRS 中添加蜂鸣器驱动文件路径,也就是文件beep.c的路径。
部分截图图 2所示:
最后我们保存并退出Makeile的修改。
然后我们在终端输入命令“make”开始编译工程。如图 3所示:
编译完成后,我们在终端输入“ls”命令,可以看到生成的beep.bin文件,如图 4所示:
然后在终端输入命令“chmod 777 create_imx”修改create_imx文件具有可执行权限,如图 5所示:
最后在终端运行命令“./create_imx beep.bin”生成最终的镜像文件“bare.imx”,如图 6所示:
然后我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具内对应目录下,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待代码正常运行,我们即可得到蜂鸣器和LED灯交替响应的实验结果。