Linux USB驅動框架分析(二)

2021-06-05 21:28:32 字數 962 閱讀 8902

好,了解過usb一些規範細節之後,我們現在來看看linux的驅動框架。事實上,linux的裝置驅動,特別是這種hotplug的usb裝置驅動,會被編譯成模組,然後在需要時掛在到核心。要寫乙個linux的模組並不複雜,以乙個helloworld為例:

#include

#include

module_license(「gpl」);

static int hello_init(void)

static int hello_exit(void)

module_init(hello_init);

module_exit(hello_exit);

這個簡單的程式告訴大家應該怎麼寫乙個模組,module_license告訴核心該模組的版權資訊,很多情況下,用gpl或者bsd,或者兩個,因為乙個私有模組一般很難得到社群的幫助。module_init和module_exit用於向核心註冊模組的初始化函式和模組推出函式。如程式所示,初始化函式是hello_init,而退出函式是hello_exit。

另外,要編譯乙個模組通常還需要用到核心原始碼樹種的makefile,所以模組的makefile可以寫成:

ifneq ($(kernelrelease),)

obj-m:= hello.o#usb-dongle.o

else

kdir:= /usr/src/linux-headers-$(shell uname -r)

bdir:= $(shell pwd)

default:

$(make) -c $(kdir) m=$(pwd) modules

.phony: clean

clean:

make -c $(kdir) m=$(bdir) clean

endif

可以用insmod跟rmmod來驗證模組的掛在跟解除安裝,但必須用root的身份登陸命令列,用普通使用者加su或者sudo在ubuntu上的測試是不行的。

Linux USB驅動框架分析

一 引言 隨著微電子技術的不斷創新和發展,嵌入計算系統 簡稱嵌入系統 作為計算機應用的乙個重領域,已深入到社會的方方面面,越來越為人們關注。我們為某煤礦企業開發的監控系統作為乙個智慧型分站,其系統就是採用嵌入式作業系統windows ce.net。二 嵌入式作業系統 嵌入式系統是以應用為中心 以計算...

Linux USB驅動框架分析

初次接觸與os相關的裝置驅動編寫,感覺還挺有意思的,為了不至於忘掉看過的東西,筆記跟總結當然不可缺,更何況我決定為嵌入式賣命了。好,言歸正傳,我 說一說這段時間的收穫,跟大家分享一下linux的驅動開發。但這次只先針對linux的usb子系統作分析,因為周五研討老闆催貨。當然,還會順帶提一 下其他的...

Linux USB驅動框架分析(一)

linux usb驅動框架分析 一 初次接觸與os相關的裝置驅動編寫,感覺還挺有意思的,為了不至於忘掉看過的東西,筆記跟總結當然不可缺,更何況我決定為嵌入式賣命了。好,言歸正傳,我 說一說這段時間的收穫,跟大家分享一下linux的驅動開發。但這次只先針對linux的usb子系統作分析,因為周五研討老...