[Android]Linux kernel 開發基礎 (二)- platform device
Linux自2.6之後導入新的驅動管理與註冊機制,
在這樣的設計下,
bus , device , driver. 三者就是必須了解的基本元素.
CPU要執行某裝置的功能簡單的流程如下:
CPU->bus->device->driver
1. Bus 是CPU與各個裝置的連結通道,
CPU 透過bus找到device.
2. Device是接在bus上的實體裝置
3. Driver則詳細定義了裝置的各項功能
Platform bus 是一個虛擬通道,
現在大多數裝置都是建立在platform bus 上.
它可分為兩部份:
platform_device 與 platform_driver
今日主題
Linux kernel 開發基礎 (二)- platform device
基礎定義:
struct platform_device { const char *name; u32 id; struct device dev; u32 num_resources; struct resource *resource; };
struct platform_driver { int (*probe)(struct platform_device *); int (*remove)(struct platform_device *); void (*shutdown)(struct platform_device *); int (*suspend)(struct platform_device *, pm_message_t state); int (*suspend_late)(struct platform_device *, pm_message_t state); int (*resume_early)(struct platform_device *); int (*resume)(struct platform_device *); struct device_driver driver; };
要利用platform bus管理裝置可透過:
int platform_device_add(struct platform_device *pdev);
int platform_device_register(struct platform_device *);
來註冊裝置.
這些定義可以在
kernel/include/linux/platform_device.h找到.
================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================