Linux驅動開發(2)——設備註冊
阿新 • • 發佈:2018-11-02
結構體platform_device
註冊裝置使用結構體platform_device,原始碼路徑include/linux/platform_device.h
struct platform_device { const char * name;//裝置名稱,在sys/devices顯示 int id;//裝置id,用於插入匯流排並且具有相同name的裝置編號,如果只有一個裝置那麼為-1 struct device dev; u32 num_resources; struct resource * resource; const struct platform_device_id *id_entry; /* MFD cell pointer */ struct mfd_cell *mfd_cell; /* arch specific additions */ struct pdev_archdata archdata; };
操作流程
- 註冊裝置
將裝置結構體放到平臺檔案中,會自動註冊裝置,不用去呼叫註冊裝置的函式。平臺檔案路徑根據架構選擇,例如arch/arm/mach-exynos/mach-itop4412.c。在平臺檔案中加入裝置的結構體,如
#ifdef CONFIG_HELLO_CTL
struct platform_device s3c_device_hello_ctl = {
.name = "hello_ctl",
.id =-1,
};
#endif
並加入核心連結串列中,
#ifdef CONFIG_HELLO_CTL &s3c_device_hello_ctl, #endif
- 在Kconfig檔案中新增設備註冊的巨集定義
在/drivers/char/Kconfig檔案中定義在/drivers/char/Kconfig檔案中定義 - 配置menuconfig中的HELLO巨集定義,生成新的.config檔案
- make zImage生成新的zImage
- 註冊完之後在虛擬平臺匯流排下可以查到註冊的裝置ls /sys/devices/platform/