一:platform匯流排
1.1概述
乙個現實的linux裝置驅動通常需要掛接在一種匯流排上,對於本身依附於pci,usb,iic,spi等的裝置而言,這自然不是問題,但是在嵌入式系統裡面,
soc系統中整合的獨立的外設控制器,掛接在soc記憶體空間的外設等確不依附於此類匯流排。基於這一背景,linux發明了一種虛擬的匯流排,稱為platform匯流排,相應的
裝置稱為platform_device,而驅動成為platform_driver.platform匯流排是linux2.6核心加的一種虛擬匯流排.
1.2.platform匯流排優勢
platform驅動與傳統的裝置驅動模型相比,優勢在於platform機制將裝置本身的資源註冊進核心,由核心統一管理,在驅動程式使用這些資源時使用統一的介面,提高了程式的可移植性。
二.平台裝置的驅動軟體設計流程
三.平台裝置:
3.1.平台裝置使用struct platform_device來描述
struct platform_device ;
3.2.分配乙個平台裝置結構體
strcut platform_device的分配使用:
struct platform_device *platform||_device_alloc(const char *name,int id)
引數:name:裝置名
id:裝置id,一般為-1
3.3.平台裝置註冊
註冊平台裝置,使用函式:
int platform_device_add(struct paltform_device *pdev)
3.4.裝置資源
平台裝置資源使用struct resource來描述
struct resource ;
3.5.資源的獲取
struct resource *platform_get_resource(struct platform_device *dev,unsigned int type,unsigned int num)
引數:dev:資源所屬的裝置
type:獲取的資源型別
num:獲取的資源數
eg:platform_get_resource(pdev,ioresource_irq,0)
四:平台驅動
4.1.平台驅動描述
平台驅動使用struct platform_driver描述:
struct platform_driver ;
4.2.平台驅動註冊
平台驅動註冊使用函式:
int platform_driver_register(struct platform_driver*)
4.3.實現struct platform_driver結構體中某些函式的功能
五.平台裝置與平台驅動**分析
linux裝置驅動那點事兒之輸入子系統理論篇
linux輸入子系統 input subsystem 1.1.input子系統概述 輸入裝置 如按鍵,鍵盤,觸控螢幕,滑鼠等 是典型的字元裝置,其一般的工作機制是低層在按鍵,觸控等動作發生時產生乙個中斷 或驅動通過timer定時查詢 然後cpu通過spi,i2c或者外部儲存器匯流排讀取鍵值,座標等資...
Linux裝置驅動之《字元裝置驅動》
linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...
Linux裝置驅動之字元裝置驅動
一 linux裝置的分類 linux系統將裝置分成三種基本型別,每個模組通常實現為其中某一類 字元模組 塊模組或網路模組。這三種型別有 字元裝置 字元裝置是個能夠像位元組流 類似檔案 一樣被訪問的裝置,由字元裝置驅動程式來實現這種特性。字元裝置可以通過檔案系統節點來訪問,比如 dev tty1等。這...