国嵌——虚拟总线之platform
来源:互联网 发布:平面图设计软件下载 编辑:程序博客网 时间:2024/04/30 07:39
platform总线是一种虚拟总线。
有platform_device和platform_driver组成。
platform驱动与传统的设备驱动模型相比,
优势在于platform机制将设备本身的资源注册进内核,
由内核统一管理,在驱动程序使用这些资源时使用统一的接口,
这样提高了程序的可移植性。
通过platform机制开发底层设备驱动的流程:
1.定义platform_device
2.注册platform_device
3.定义platform_driver
4.注册platform_driver
平台设备结构体:
#include <linux/platform_device.h>
struct platform_device {
const char * name; //设备名字
int id; //设备编号,配合设备名使用
struct device dev;
u32 num_resources;
struct resource * resource; //设备资源
......
};
设备资源结构体:
struct resource {
resource_size_t start; //资源的起始物理地址
resource_size_t end; //资源的结束物理地址
const char *name; //资源名字
unsigned long flags; //资源类型,如MEM,IO见<linux/ioport.h>
struct resource *parent, *sibling, *child;
};
分配:
struct platform_device *platform_device_alloc(const char *name, int id);
注册:
int platform_device_add(struct platform_device *pdev);
int platform_device_register(struct platform_device *);
注销:
void platform_device_unregister(struct platform_device *);
平台驱动结构体:
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 (*resume)(struct platform_device *);
struct device_driver driver;
const struct platform_device_id *id_table;
};
有platform_device和platform_driver组成。
platform驱动与传统的设备驱动模型相比,
优势在于platform机制将设备本身的资源注册进内核,
由内核统一管理,在驱动程序使用这些资源时使用统一的接口,
这样提高了程序的可移植性。
通过platform机制开发底层设备驱动的流程:
1.定义platform_device
2.注册platform_device
3.定义platform_driver
4.注册platform_driver
平台设备结构体:
#include <linux/platform_device.h>
struct platform_device {
const char * name; //设备名字
int id; //设备编号,配合设备名使用
struct device dev;
u32 num_resources;
struct resource * resource; //设备资源
......
};
设备资源结构体:
struct resource {
resource_size_t start; //资源的起始物理地址
resource_size_t end; //资源的结束物理地址
const char *name; //资源名字
unsigned long flags; //资源类型,如MEM,IO见<linux/ioport.h>
struct resource *parent, *sibling, *child;
};
分配:
struct platform_device *platform_device_alloc(const char *name, int id);
注册:
int platform_device_add(struct platform_device *pdev);
int platform_device_register(struct platform_device *);
注销:
void platform_device_unregister(struct platform_device *);
平台驱动结构体:
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 (*resume)(struct platform_device *);
struct device_driver driver;
const struct platform_device_id *id_table;
};
- 国嵌——虚拟总线之platform
- linux platform 虚拟总线
- platform虚拟总线
- Linux虚拟总线platform设备和驱动
- 使用platform虚拟总线驱动按键
- 使用platform虚拟总线驱动按键
- Linux设备驱动--------platform虚拟总线
- Linux虚拟总线platform驱动框架之地址对齐省内存
- Linux虚拟总线platform驱动框架之地址对齐省内存
- linux驱动之platform总线
- 设备驱动外传 - 虚拟总线和platform device
- 设备驱动外传 - 虚拟总线和platform device
- 设备驱动外传 - 虚拟总线和platform device
- 设备驱动外传 - 虚拟总线和platform device
- 设备驱动外传 - 虚拟总线和platform device
- Linux驱动学习——platform平台总线
- 总线设备驱动模型——platform篇
- Linux内核工程导论——总线:Platform
- android adb网络调试 Android中使用WIFI来连接ADB 简单100%成功
- 循环比赛日程表
- 异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。
- ADXL345三轴加速 arduino
- C++中使用C代码
- 国嵌——虚拟总线之platform
- 关于PLSQL Developer连接oracle 64位问题
- 浙工ACM1092
- 用递归求二进制
- 十二周——银行系统(2)
- ios学习笔记之OC篇(一):复制对象的方法
- Ubuntu 12.04搭建Qt for Android环境
- 学习笔记:android下获取sdcard容量大小
- DB2的基本sql操作