我們打開Makefile檔案,輸入下面的內容:
1 CROSS_COMPILE ?= arm-linux-gnueabihf-
2 TARGET ?= printf
3
4 CC := $(CROSS_COMPILE)gcc
5 LD := $(CROSS_COMPILE)ld
6 OBJCOPY := $(CROSS_COMPILE)objcopy
7 OBJDUMP := $(CROSS_COMPILE)objdump
8
9 LIBPATH := -lgcc -L /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib/gcc/arm -linux-gnueabihf/4.9.4
10
11
12 INCDIRS := core \
13 stdio/include \
14 drivers/clk \
15 drivers/led \
16 drivers/delay \
17 drivers/beep \
18 drivers/gpio \
19 drivers/key \
20 drivers/exit \
21 drivers/int \
22 drivers/epittimer \
23 drivers/keyfilter \
24 drivers/uart
25
26 SRCDIRS := ./ \
27 stdio/lib \
28 drivers/clk \
29 drivers/led \
30 drivers/delay \
31 drivers/beep \
32 drivers/gpio \
33 drivers/key \
34 drivers/exit \
35 drivers/int \
36 drivers/epittimer \
37 drivers/keyfilter \
38 drivers/uart
39
40
41 INCLUDE := $(patsubst %, -I %, $(INCDIRS))
42
43 SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
44 CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
45
46 SFILENDIR := $(notdir $(SFILES))
47 CFILENDIR := $(notdir $(CFILES))
48
49 SOBJS := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
50 COBJS := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
51 OBJS := $(SOBJS) $(COBJS)
52
53 VPATH := $(SRCDIRS)
54
55 .PHONY: clean
56
57 $(TARGET).bin : $(OBJS)
58 $(LD) -Timx6ul.lds -o $(TARGET).elf $^ $(LIBPATH)
59 $(OBJCOPY) -O binary -S $(TARGET).elf $@
60
61 $(SOBJS) : output/%.o : %.S
62 $(CC) -Wall -nostdlib -fno-builtin -c -O2 $(INCLUDE) -o $@ $<
63
64 $(COBJS) : output/%.o : %.c
65 $(CC) -Wall -Wa,-mimplicit-it=thumb -nostdlib -fno-builtin -c -O2 $(INCLUDE) -o $@ $<
66
67 clean:
68 rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)
Makefile檔案我們主要修改下面幾個地方:
第2行的target賦值改成printf,
第13行添加格式化函式庫的頭檔案“stdio/include”到INCDIRS變數,
第27行添加格式化函式庫的.c檔案“stdio/lib”到SRCDIRS變數,
第65行添加-Wa,-mimplicit-it=thumb編譯選項,
鏈接檔案保持不變,
然后我們在終端輸入“make”命令,開始編譯,編譯完成后生成printf.bin檔案,如圖 1所示:

然后在終端輸入命令“chmod 777 create_imx”修改create_imx檔案具有可執行權限,如圖 2所示:

最后在終端運行命令“./create_imx printf.bin”生成最終的鏡像檔案“bare.imx”,如圖 3所示:

然后我們將生成的bare.imx檔案通過SSH軟體拷貝到mfg燒寫工具內對應目錄下,這一步可以參考前面的燒寫章節,將撥碼開關切換成燒寫模式,上電燒寫等待燒寫完成,然后將撥碼開關切換回啟動模式,然后我們打開SecureCRT,按照上一章節的配置,配置完進入SecureCRT的串口模式下,然后開發板上電,可以看到串口列印資訊如圖 4所示:

根據提示輸入兩個整數,中間用空格分開,輸入完成按鍵回車按鍵,可以看到SecureCRT的列印資訊如圖 5所示:

從上圖可以看到我們分別輸入了整數21和23,它們的和是44,通過運行結果可以看到我們的printf和scanf格式化函式移植成功,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179225.html
標籤:其他
上一篇:Python 數分基礎問題
