学习笔记---驱动程序probe函数

本文记录了作者在尝试使用probe函数编写nand驱动程序时遇到的问题及解决过程。probe函数作为驱动程序的入口,在bus_drv_dev模型中起到关键作用,负责设备的匹配和初始化。在驱动程序中,通过device_add将设备加入总线的设备链表,然后通过driver_register将驱动加入到总线驱动链表,并使用match函数进行匹配,匹配成功后调用probe函数进行设备操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天跟着老师写了个nand驱动程序 老师没有用probe函数 的那我想试试 没想到 我的程序驱动不能用了
查了点儿资料 才好使了。
probe函数是一个入口函数,本来写驱动是直接再init函数里面直接操作
使用probe后 这个函数便是正儿八经的入口函数
本来我也不懂

static int ly_nandf_init(void)
{
	
	return platform_driver_register(&ly_nandf_driver);
}

就在入口函数只写了个这个
驱动程序就不好使
查过资料后发现这是一个bus_drv_dev 模型
驱动程序分层分离概念 总线驱动设备模型

device_add
把 device 放入bus 的dev 链表;
从 bus 的dev 链表中取出一个drv 用match 函数判断 能否与 device 匹配;
若name 相同 则调用 drv 的probe 函数
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
driver_register
放入bus 的 drv 链表;
从dev 链表中一一比较match 函数
若支持 则调用 probe 函数

static struct platform_driver ly_nandf_driver = {
	.probe		= ly_nandf_probe,
	.remove		= ly_nandf_remove,
	.driver		= {
		.name	= "ly_nandf",
		.owner	= THIS_MODULE,
	},
};

static struct platform_device *ly_nandf_device;

static int ly_nandf_init(void)
{
	int ret;


	ret = platform_driver_re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值