靜態編譯
–>將驅動原始碼放到kernel核心原始碼所對應的資料夾下面
–>修改kconfig配置
–>修改makefile
–>make menuconfig配置圖形介面
–>生成zimage映象檔案
動態編譯:
–>將驅動檔案編譯成.ko檔案
–>將test.ko檔案拷貝到/lib/module/4.1.15/目錄下
–>depmod(會在/lib/modules/#4.1.15#/目錄下生成modules.dep和modules.dep.bb檔案,表明模組的依賴關係)
–>modprobe test(注意這裡無需輸入.ko字尾) 即可
1 kerneldir :
=/home/zuozhongkai/linux/imx6ull/linux/temp/linux-imx-rel_imx_4.
1.15_2.
1.0_ga_alientek
2 current_path :
= $(shell pwd)
3 obj-m :
= chrdevbase.o
45 build: kernel_modules
67 kernel_modules:
8 $(make)
-c $(kerneldir) m=$(current_path) modules
9 clean:
10 $(make)
-c $(kerneldir) m=$(current_path) clean
第 1 行,kerneldir 表示開發板所使用的 linux 核心原始碼目錄,使用絕對路徑,大家根
據自己的實際情況填寫即可。
第 2 行,current_path 表示當前路徑,直接通過執行「pwd」命令來獲取當前所處路
徑。第 3 行,obj-m 表示將 chrdevbase.c 這個檔案編譯為 chrdevbase.ko 模組。
第 8 行,具體的編譯命令,後面的 modules 表示編譯模組,-c 表示將當前的工作目錄切
換到指定目錄中,也就是 kernerldir 目錄。m 表示模組原始碼目錄,「make modules」命令
中加入 m=dir 以後程式會自動到指定的 dir 目錄中讀取模組的原始碼並將其編譯為.ko 檔案。
–>makefile 編寫好以後輸入「make」命令編譯驅動模組
!!!需要注意的是:引用linux kernel的標頭檔案用<.>;自己檔案裡面的.**件應該使用"*.h"
以下是驅動檔案adxl362.c的標頭檔案**,需要注意最後一行!
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
"adxl362.h"
//!!!!!!!!!!!!!!!!!!!
之後再資料夾下生成了.ko檔案
arm linux驅動開發學習2
驅動測試階段 wifi模組始終無法載入成功,usb wifi插上之後,始終無法顯示wifi網路資訊 lib modules 4.1.15 ifconfig a eth0 link encap ethernet hwaddr00 04 9f 04 d2 35 inet addr 192.168 1.5...
arm linux驅動開發學習5
串列埠通訊 只要是使用串列埠通訊,不論是ttl還是232 485,其驅動程式都是一樣的,通過外接rs485晶元即可將串列埠轉換為rs485訊號。本節用的是串列埠3,串列埠驅動框架為 1 uart driver 註冊與登出 每個串列埠驅動都需要定義乙個 uart driver,載入驅動的時候通過 ua...
ARM Linux驅動開發環境
目的 梳理arm linux驅動開發所需的環境和流程,記錄遇到的問題。環境介紹 pc機 編寫驅動程式和測試 伺服器 編譯驅動程式生成.ko檔案,編譯測試 生成執行程式 單板 jz2440 準備工作 linux核心 linux 2.6.22.6以及對應的補丁檔案 工具鏈 gcc version 3.4...