2015年4月17日 星期五

[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

platform_device 的基礎定義:


struct platform_device {
 const char *name;
 u32  id;
 struct device dev;
 u32  num_resources;
 struct resource *resource;
};
platform_driver的基礎定義
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找到.






沒有留言: