linux裝置驅動那點事兒之平台裝置理論篇

2022-04-04 07:27:12 字數 1456 閱讀 5388

一: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等。這...