linux驅動初步

2021-08-18 05:51:49 字數 1336 閱讀 9580

主機環境:

ubuntu 16.04 64bit

在虛擬機器中安裝完ubuntu 16.04後,預設的環境是可以直接進行驅動開發的,而無需重新編譯核心樹。

下面以linux ubuntu 4.13.0-36-generic ubuntu 16.04  64bit為例,介紹簡單驅動程式的編寫和測試。

1.hello.c檔案

#include

#include

module_license

("dual bsd/gpl"

);

static

inthello_init

(void

)

static

void

hello_exit

(void

)

module_init

(hello_init

);

module_exit

(hello_exit

);

2.makefile檔案

obj-m := hello.o

3.然後在外部模組構建目錄下執行命令:

$make  -c /lib/modules/`uname -r`/build m=`pwd` 

如果編譯提示找不到某個標頭檔案  ,類似 :

./include/uapi/asm-generic/int-ll64.h:11:29: fatal error: asm/bitsperlong.h: no such file or directory

則用sudo make進行編譯。

應該是root管理員配置的path環境變數的問題。使用預設使用者配置的環境變數和root使用者不一樣,導致sudo make的時候,使用了不同的庫和編譯工具。

4.安裝模組

$sudo insmod hello.ko

然後檢視/var/log/syslog,會有日誌資訊輸出

$cat /var/log/syslog

或開啟另乙個中斷,跟蹤檢視

tail -f /var/log/syslog

刪除模組:

$sudo rmmod hello.ko

$lsmod 

驅動框架初步

編寫linux驅動先看一下驅動框架是什麼樣子的。驅動編寫和應用層編寫有什麼區別呢?一 首先 入口函式的問題。應用層編寫我們的入口就是main函式,但在驅動編寫時不是這樣的,有兩種情況,1 預設情況下 int init init module void 載入模組時的初始化函式,也就是驅動模組的入口函式...

Linux初步了解

1.嵌入式作業系統分類 按收費模式 商用型 vxworks wince 免費型 linux uc os ii 按實時性 實時性就是在規定時間完成規定任務 硬實時軟實時 2.linux作業系統的歷史 linux 開源,免費 是以 unix 商業 為基礎形成的 linux 修改完善後,要分享修改過的 p...

Linux初步認識

18年1月21日,蘇嵌第一天開課,初步認識了linux系統。linux是一種免費的類unix系統,核心穩定不收費,在各私密領域多用linux,較為安全。linux核心版本格式 x.y.zz www。x 版本型別 y 奇數為開發 測試版本,偶數為穩定版本。命令 help info 命令。虛擬機器的聯網...