裝置:
(1)平台裝置(說白了就是
cpu
內部的乙個控制器,比如
i2c控制器
或是lcd
控制器等)
struct platform_device;
註冊裝置:intdevice_register(sruct device *dev)
登出裝置:voiddevice_unregister(struct device *dev);
(3)裝置屬性:
sysfs 中的裝置入口可有屬性. 相關的結構是:
struct device_attribute ;
這些屬性結構可在編譯時建立, 使用這些巨集:
device_attr(name, mode, show, store);
結果結構通過字首dev_attr_ 到給定名子上來命名. 屬性檔案的實際管理使用通常的函式對來處理:
int device_create_file(struct device *device, struct device_attribute *attr);
void device_remove_file(struct device *dev, struct device_attribute *attr);
struct bus_type 的 dev_attrs 成員指向乙個預設的屬性列表, 這些屬性給新增到匯流排的每個裝置建立.
(4)建立裝置例項:
建立裝置和建立匯流排基本一樣這裡只貼出示例程式:
#include
#include
#include
#include
#include
extern struct device my_bus;
extern struct bus_type my_bus_type;
static void my_dev_release(struct device *dev)
struct device my_dev = ;
static ssize_t zhouxh_show(struct device *dev,struct device_attribute *attr,char *buf)
static device_attr(dev, s_irugo, zhouxh_show, null);
static int __init my_device_init(void)
static void my_device_exit(void)
module_init(my_device_init);
module_exit(my_device_exit);
module_author("[email protected]");
module_license("dual bsd/gpl");
裝置驅動基礎1 裝置模型之匯流排,驅動,裝置
kobject,kset是裝置模型的基本結構體,裝置模型使用這兩個結構體來完成裝置的層次關係,但在實際的裝置驅動編寫中,我們基本上用不到kobject,kset這些結構體,是因為這些結構體又被嵌入到更大的結構體中,原因在於kobject,kset結構體只能表徵裝置的層次關係,但是乙個裝置的驅動,並不...
裝置驅動基礎1 裝置模型之匯流排,驅動,裝置
原文 kobject,kset是裝置模型的基本結構體,裝置模型使用這兩個結構體來完成裝置的層次關係,但在實際的裝置驅動編寫中,我們基本上用不到kobject,kset這些結構體,是因為這些結構體又被嵌入到更大的結構體中,原因在於kobject,kset結構體只能表徵裝置的層次關係,但是乙個裝置的驅動...
Linux 平台裝置驅動模型
linux 平台裝置驅動模型 一。平台匯流排概述 1.平台匯流排 platform bus 是linux2.6核心加入的一種虛擬匯流排,其優勢在於採用了匯流排的模型對裝置與驅動進行了管理,這樣提高了程式的可移植性 二。平台裝置 1.平台裝置使用structplatform device來描述 str...