華清平臺匯流排驅動201208(不同平臺)

oxksn發表於2020-12-08

華清平臺匯流排驅動201208(不同平臺)

一,
(一)程式碼編寫
編寫一個能在多平臺下使用的led驅動
1,註冊一個platform_device,定義資源:地址和中斷號
struct platform_device led_pdev = {
.name = , //用於匹配
.id = -1,
.num_resources = ,
.resource = , //指標變數,指向resource結構體
} //主要是這幾個成員

struct resource{
resource_size_t start; //開始
resource_size_t end; //結束
const char *name; //描述,自定義
unsigned long flags; //區分當前資源描述的是中斷(IORESOURCE_IRQ)還是記憶體(IORESOURCE_MEM)
struct resource *parent, *sibling, *child; //父母,兄弟,孩子
}
2,註冊一個platform_driver,實現操作裝置的程式碼
註冊完畢,同時如果和pdev匹配成功,自動呼叫probe方法:
probe方法:對硬體進行操縱
a,註冊裝置號,並且註冊fops–為使用者提供一個裝置標示,同時提供檔案操作io介面
b,建立裝置節點
c,初始化硬體
ioremap(地址); //地址從pdev需要獲取
readl/writel();
d,實現各種io介面:xxx_open, xxx_read,

相關文章