bsp工程管理

2022-09-09 12:18:19 字數 2392 閱讀 8518

模組化專案,使得專案清晰

拷貝原來工程

建立資料夾

建立對應的驅動檔案

和上一節一樣的驅動檔案

# ?= 沒有賦值的話就賦值

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票由 人銷售,並通過國際航協指定的資料處理中心和清算銀行進行結算和付款,從而避免了以往航空公司和 人之間多種票證 多...