驱动-平台总线-probe

平台总线-probe函数 的了解和使用


前言

  • 驱动-平台总线-platform设备注册platform驱动注册篇 的文章中,我们理解了platform 总线,了解了platform driver和platform device 的注册,配对 知识。

  • 匹配成功之后会进入在注册 platform 驱动程序中编写的 probe 函数,在上个章节只是为了验证是否匹配成功,所以只是在 probe 中加入了一句相关打印,而驱动是要控制硬件的,但是平台总线模型对硬件的描述写在了 platform_device.c 中,platform 设备和 platform 驱动匹配成功之后,那我们如何在驱动platform_driver.c 的 probe 函数中,得到 platform_device.c 中编写的硬件资源呢?

也就是 平台总线体系中,device 负责描述设备相关,但是驱动需要把设备用起来,那就需要再驱动里面初始化设备、控制设备、获取设备相关信息的。 这里就是probe 方法里面要做的。

  • 我们这里简单看看再probe 函数里面如何获取设备资源、描述信息等。

一、参考资料

驱动-平台总线-platform设备注册platform驱动注册篇
平台总线-probe函数编写
手把手教Linux驱动-platform总线详解
platform总线设备驱动模型

二、程序测试

总线设备编码

驱动-平台总线-platform设备注册platform驱动注册篇 里面的程序我们直接拿来用,编码如下:

#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/ioport.h>

#define MEM_START_ADDR 0xFDD60000
#define MEM_END_ADDR   0xFDD60004
#define IRQ_NUMBER     101

static struct resource my_resources[] = {
   
   
    {
   
   
        .start = MEM_START_ADDR,    // 内存资源起始地址
        .end = MEM_END_ADDR,        // 内存资源结束地址
        .flags = IORESOURCE_MEM,    // 标记为内存资源
    },
    {
   
   
        .start = IRQ_NUMBER,        // 中断资源号
        .end = IRQ_NUMBER,          // 中断资源号
        .flags = IORESOURCE_IRQ,    // 标记为中断资源
    },
};

static void my_platform_device_release(struct device *dev)
{
   
   
    // 释放资源的回调函数
}

static struct platform_device my_platform_device = {
   
   
    .name = "my_platform_device",                  // 设备名称
    .id = -1,                                      // 设备ID 可以用于区分同一种设备的不同实例。这个参数是可选的,如果不需要使用 ID 进行区分,可以将其设置为-1,
    .num_resources = ARRAY_SIZE(my_resources),     // 资源数量
    .resource = my_resources,                      // 资源数组
    .dev.release = my_platform_device_release,     // 释放资源的回调函数
};

static int __init my_platform_device_init(void)
{
   
   
    int ret;

    ret = platform_device_register(&my_platform_device)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值