i.MX6ULL終結者GPIO中斷例程編譯及執行

2020-09-30 15:01:15

首先使用命令「vi Makefile」開啟Makefile。如圖 1所示:
在這裡插入圖片描述

圖 1

新增內容如下:

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

Make檔案主要修改了下面幾個地方:
第2行TARGET修改為「int」。
第16行在變數INCDIRS中新增按鍵中斷驅動和中斷驅動標頭檔案路徑,也就是檔案exit.h和int.h的路徑。
第26行在變數SRCDIRS中新增按鍵中斷驅動和中斷驅動檔案路徑,也就是檔案exit.c和int.c的路徑。

連結指令碼保持不變。
然後在終端輸入「make」命令編譯程式碼。如圖 2所示:
在這裡插入圖片描述

圖 2

編譯完成,我們使用命令「ls」可以看到生成的int.bin檔案,如圖 3所示:
在這裡插入圖片描述

圖 3

接著我們使用命令「chmod 777 create_imx」修改create_imx檔案許可權。如圖 4所示:
在這裡插入圖片描述

圖 4

然後我們使用命令「./create_imx int.bin」生成燒寫檔案bare.imx,如圖 5所示:
在這裡插入圖片描述

圖 5

我們將生成的bare.imx檔案通過SSH軟體拷貝到mfg燒寫工具內對應的映象資料夾裡面,這一步可以參考前面的燒寫章節。然後將撥碼開關切換成燒寫模式,上電燒寫等待燒寫完成,然後將撥碼開關切換回啟動模式,等待程式正常執行,按下按鍵KEY就會開啟蜂鳴器,再次按下就會關閉蜂鳴器。LED會不斷閃爍,週期大約500ms。在這裡插入圖片描述