5 裝置驅動Makefile編寫及編寫測試驅動

2021-09-20 15:40:26 字數 1885 閱讀 1396

市面上的關於裝置驅動的書大部分是三星的開發板(都是啥210,2440啥的舊晶元),全志和瑞芯微的好像沒看到有,還有有關ti晶元的中文書籍關於驅動方面講的也很淺,不適於入門。

博文是在關於三桑的開發板上的基礎上開始編寫的,因筆者(我)水平問題,錯漏在所難免

參考資料改的makefile

mkdir /root/mypc2

cd /root/mypc2

vim makefile

kernel_dir ?= /root/oriangepi/orangepih5/kernel

pwd := $(shell pwd)

cross_compile = aarch64-linux-gnu-

obj-m = hello.o

#多檔案

#obj-m = module.o

#module-objs := file1.o file2.o

all: modules

modules clean:

$(make) -c $(kernel_dir) arch=arm64 cross_compile=$(cross_compile) \

subdirs=$(pwd) $@

測試方法

touch hello.c
#編譯

make
清理

make clean
以下為帶內容的hello.c測試,入口函式和出口函式編寫標準是「有進無出」(有無返回值)

$vim hello.c
#include #include //入口函式,可自定義函式名,帶返回值

static int hello_init(void)

//出口函式,可自定義函式名,無返回值

static void hello_exit(void)

module_init(hello_init);//入口

module_exit(hello_exit);//出口

module_license("gpl");//協議標準

$ make

make -c /root/oriangepi/orangepih5/kernel arch=arm64 cross_compile=aarch64-linux-gnu- \

subdirs=/root/mypc2 modules

make[1]: 進入目錄「/root/oriangepi/orangepih5/kernel」

cc [m] /root/mypc2/hello.o

building modules, stage 2.

modpost 1 modules

cc /root/mypc2/hello.mod.o

ld [m] /root/mypc2/hello.ko

make[1]: 離開目錄「/root/oriangepi/orangepih5/kernel」

#此時不會在提示空檔案,雖然空檔案也可以編譯

$ ls

hello.c   hello.mod.c  hello.o   modules.order

hello.ko  hello.mod.o  makefile  module.symvers

將驅動檔案拷貝到nfs目錄,開發板掛載nfs目錄(也可以在nfs目錄編寫驅動檔案)

#裝載驅動,帶字尾

$ insmod hello.ko

#解除安裝驅動,設定驅動檔名,不帶字尾

$ rmmod hello

linux驅動的Makefile編寫

makefile如下 obj m hello drv.o kernel dir lib modules shell uname r build pwd shell pwd all make c kernel dir subdirs pwd modules clean rm o ko mod.c ph...

編寫Linux裝置驅動

核心版本 2.4.22 閱讀此文的目的 學會編寫linux裝置 驅動。閱讀此文的方法 閱讀以下2個 檔案 hello.c,asdf.c。此文假設讀者 已經能用c語言編寫linux應用程式,理解 字元裝置檔案,塊裝置檔案,主裝置號,次裝置號 會寫簡單的shell指令碼和makefile。1.hello...

編寫驅動的makefile使要

一般在編譯linux驅動時,我們需要在交叉編譯環境中進行編譯,所以要在編譯環境中搭建交叉編譯環境。編寫驅動的makefile使需要制定驅動依賴的核心的路徑,makefile寫法如下 kern dir linux 2.6.22.6 all make c kern dir m pwd modules c...