模組化專案,使得專案清晰
拷貝原來工程
建立資料夾建立對應的驅動檔案和上一節一樣的驅動檔案# ?= 沒有賦值的話就賦值
cross_compile ?= arm-linux-gnueabihf-
target ?= bsp
# :=覆蓋之前的值
gcc := $(cross_compile)gcc
ld := $(cross_compile)ld
objcopy := $(cross_compile)objcopy
objdump := $(cross_compile)objdump
# incdirs 包含整個工程的.h 頭檔案目錄 \是換行符
incdirs := imx6ull \
bsp/clk \
bsp/led \
bsp/delay
# srcdirs 包含整個工程的.s .c檔案目錄
srcdirs := project \
bsp/clk \
bsp/led \
bsp/delay
# patsubst的作用是給incdirs中的每個目錄前面加乙個 -i,指明頭檔案目錄時必須加
# -i imx6ull -i bsp/clk -i bsp/led -i bsp/delay
include := $(patsubst %, -i %, $(incdirs))
# foreach dir對每個dir都執行一次,srcdirs中dir, 即上面的資料夾
# wildcard 取出資料夾內所有檔案
# 比如bsp/clk/bsp_clk.c
sfiles := $(foreach dir, $(srcdirs), $(wildcard $(dir)/*.s))
cfiles := $(foreach dir, $(srcdirs), $(wildcard $(dir)/*.c))
# notdir 上面取出來之後去掉目錄
sfilendir := $(notdir $(sfiles))
cfilendir := $(notdir $(cfiles))
# 把所有的.s和.c都變成點o檔案,並在前面加上obj
sobjs := $(patsubst %, obj/%, $(sfilendir:.s=.o))
cobjs := $(patsubst %, obj/%, $(cfilendir:.c=.o))
objs := $(sobjs) $(cobjs)
# 相當於重新命名
vpath := $(srcdirs)
.phony: clean
# 這段和以前是一樣的
$(target).bin : $(objs)
$(ld) -timx6ul.lds -o $(target).elf $^
$(objcopy) -o binary -s $(target).elf $@
$(objdump) -d -m arm $(target).elf > $(target).dis
# -wall 編譯後顯示所有警告
# -nostdlib 不連線系統標準啟動檔案和標準庫檔案,只把指定的檔案傳遞給聯結器。
# 這個選項常用於編譯核心、bootloader等程式,它們不需要啟動檔案、標準庫檔案
# -o2 是比o1更高階的選項,進行更多的優化。
# gcc將執行幾乎所有的不包含時間和空間折中的優化。
# 當設定o2選項時,編譯器並不進行迴圈開啟()loop unrolling以及函式內聯。
# 與o1比較而言,o2優化增加了編譯時間的基礎上,提高了生成**的執行效率。
# 這樣還能帶著.**件一起編譯
$(sobjs) : obj/%.o : %.s
$(gcc) -wall -nostdlib -c -o2 $(include) -o $@ $<
$(cobjs) : obj/%.o : %.c
$(gcc) -wall -nostdlib -c -o2 $(include) -o $@ $<
clean:
rm -rf $(target).elf $(target).dis $(target).bin $(cobjs) $(sobjs)
嵌入式Linux學習歷程 BSP工程管理
bsp工程管理的目的就是為了模組化整理 同乙個屬性的檔案存放在同乙個目錄裡面。新建所需的資料夾,將同一屬性的檔案放到相應的資料夾中。修改clk led delay驅動,建立對應的驅動檔案,然後放置到對應的目錄中。根據編寫的新驅動檔案,修改main.c檔案內容。設定vscode標頭檔案路徑 先建立.v...
imx6ull 5 之BSP工程管理
一 bsp工程管理原理 為了模組化管理 同一屬性的檔案存放在同一目錄中 1 新建所需的資料夾,將同一屬性的檔案放到相應的資料夾中 2 修改clk led delay驅動,建立對應的驅動檔案,然後放到對應的目錄中 3 根據編寫的新驅動檔案,修改main.c檔案內容 設定vscode標頭檔案路徑,先建立...
什麼是BSP票和BSP電子票
bsp billing and settlement plan,簡稱bsp,即開賬與結算計畫,它是國際航協根據運輸 業的發展和需要而建立,供航空公司和 人之間使用的銷售結算系統。bsp票由 人銷售,並通過國際航協指定的資料處理中心和清算銀行進行結算和付款,從而避免了以往航空公司和 人之間多種票證 多...