樹莓派裸核程式開發 工程管理Makefile

2021-09-17 02:00:05 字數 1968 閱讀 3816

1.原始碼結構

dir目錄:   --------- bin:可執行檔案生成目錄

--------- src:源檔案目錄------main.c   主程式檔案

------start.s    彙編啟動檔案

-------- makefile   編譯指令碼

-------- raspi.lds   鏈結檔案

2.makefile檔案

arch = arm-none-eabi          #宣告交叉編譯工具鏈

cc = $-gcc #交叉編譯c檔案

cpp = $-g++ #交叉編譯c++檔案

as = $-as #交叉編譯彙編檔案

ld = $-ld #鏈結工具

ar = $-ar

objcopy = $-objcopy #格式轉化工具

platform = raspi

cflags = -o0 -g -std=gnu99 -werror -d__$(platform)__ -draspberry_pi -fno-builtin

asflags = -g

cflags_for_target = -mcpu=arm1176jzf-s #核心引數

asflags_for_target = -mcpu=arm1176jzf-s

ldflags = -nostdlib -static --error-unresolved-symbols #鏈結引數

src_dir := src #原始檔

inc_dir := $(addsuffix /include,$(src_dir)) #標頭檔案

build_dir := $(addsuffix /build,$(src_dir))

asrc := $(foreach sdir,$(src_dir),$(wildcard $(sdir)/*.s))

aobj := $(asrc:.s=.o)

csrc := $(foreach sdir,$(src_dir),$(wildcard $(sdir)/*.c))

cobj := $(csrc:.c=.o)

includes := -isrc $(addprefix -i,$(src_dir) $(inc_dir))

vpath %.c $(src_dir) #獲取所有c檔案列表

vpath %.cpp $(src_dir) #獲取所有c++檔案列表

vpath %.s $(src_dir) #獲取所有彙編檔案列表

%.o: %.c

$(cc) $(cflags_for_target) $(includes) $(cflags) -c -o $*.o $<

%.o: %.s

$(as) $(asflags_for_target) $(includes) $(asflags) -o $*.o $<

obj = $(aobj) $(cobj)

bin/kernel.img: bin/kernel.elf #轉化kernel.img

$ -o binary $< $@

bin/kernel.elf: raspi.ld $(obj)

$ $ $(obj) -map bin/kernel.map -o $@ -t raspi.ld #鏈結kernel.elf

clean:

rm -f bin/*.elf bin/*.img bin/*.map $(obj) #make clean

上面是裸核驅動開發工程進行管理的makefile模板,

可以向src目錄下新增新的驅動c檔案,彙編s檔案,makefile不用做修改

樹莓派外設開發

這裡只列舉了我初次開發時的一些筆記,具體其他的可參考博文 普通io口 input output pwm 串列埠uart iic spi iis等介面 wiringpi庫是樹莓派io控制庫,提供豐富的介面 gpio控制 中斷 多執行緒等。在使用wiringpi庫時,需要包含標頭檔案 include 編...

樹莓派 按鍵程式

樹莓派3b wiringpi庫的使用 button按鈕操作 五 樹莓派3b wiringpi庫的使用 點亮led 如何編譯的教程 樹莓派學習筆記 wiringpi簡介 安裝和管腳說明 檢視樹莓派gpio引腳編號及定義 gpio readall輸出如下,說明wiringpi庫已經安裝成功。原來的官方鏈...

樹莓派環境處理 樹莓派開發環境配置

接上篇,準備樹莓派開發環境的配置。買回來的樹莓派一般會帶乙個系統,在這裡我建議自己定製系統,以樹莓派桌面系統為藍本搭建開發環境。你需要準備一張 16g的高速tf卡,用以安裝系統。4b取消了全尺寸的hdmi,還需要準備乙個minihdmi轉hdmi的線纜來連線顯示器。需要3a以上的電源,否則連線鍵盤滑...