平台设备驱动开发流程设计

本文介绍了Linux平台总线的概念,它是内核中的一个重要虚拟总线,用于简化设备和驱动的管理。通过创建和注册平台设备,然后编写平台驱动,并利用平台总线的匹配机制实现设备与驱动的连接。文章通过按键设备的实例,详细阐述了如何将设备驱动改写为平台设备方式,并展示了设备的注册和驱动的加载过程,强调了平台总线设备模型对程序可移植性的提升。
摘要由CSDN通过智能技术生成

1平台总线概述
2.平台设备
3.平台驱动
4.范例程序
1平台总线概述
1.1平台总线概述
平台总线(Platform bus)是linux2.6内核加入的一种虚拟总线,是在linxu系统中最为重要的一种总线。
linux系统中除了去支持这些实际的总线,USB总线,PCI总线,还支持虚拟总线,之前是自己创建总线并基于总线去创建驱动和设备。
linux提供了虚拟总线,平台总线(Platform bus)是linux为我们创建的虚拟总线,我们只需要去挂载驱动程序和设备。其同样具备总线的优势在于采用了总线的模型对设备与驱动进行了管理,这样提高了程序的可移植性
通过平台总线机制开发设备驱动的流程
创建和注册设备,将平台设备挂载到平台总线上
创建驱动
平台总线驱动与设备的匹配机制,前面自己创建总线,通过设备和驱动的名称匹配。platform大多数依然使用平台的设备和驱动名称相同进行匹配。
2.平台设备
平台设备使用struct platform_device来描述:
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; /资源的类型///中断号,寄存器
struct resource *parent, *sibling, *child;
};
2.2注册平台设备
注册平台设备,使用函数:
int platform_device_register(struct platform_device *pdev)

4.范例程序
将按键程序进行改写,采用平台设备方式编写。
key_dev.c

#include<linux/module.h>
#include<linux/init.h>
#include<linux/platform_device.h>
#define GPXCON  0x11000C20
#include<linux/interrupt.h>
#include<linux/irq.h>
#define GPXCON 0x11000C20
#define GPXDAT 0x11000C24

MODULE_LICENSE("GPL");
struct resource key_resource[]={
    [0]= {
        .start = GPXCON,
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值