13.平台总线专题2

本文详细介绍了Linux驱动程序中设备(device)和驱动(driver)的构建、注册与注销过程,以及总线(bus)匹配的实现。通过自定义device对象,设置匹配方法,并确保driver和device名称一致,实现设备与驱动的自动匹配。同时,文章讨论了在设备卸载时如何避免错误,以及在prob方法中合并数据的操作。
摘要由CSDN通过智能技术生成

device的构建和注册

device对象:设备对象,描述设备信息,包括地址,中断号,甚至其他自定义的数据
struct device {
struct kobject kobj;  //所有对象的父类
const char *init_name;
// 在总线中会有一个名字,用于做匹配,在/sys/bus/mybus/devices/名字
struct bus_type *bus; //指向该device对象依附于总线的对象
void *platform_data; // 自定义的数据,指向任何类型数据

注册和注销的方法:
int device_register(struct device *dev)
void device_unregister(struct device *dev)

1.创建mydev.c驱动程序并搭建模块驱动的框架
2.注册和销毁device,注意要在mybus.c中导出mybus
在这里插入图片描述在这里插入图片描述

mybus.c
在这里插入图片描述

3.insmod以后查看ls /sys/bus/mybus/devices

driver的构建和注册

driver对象:描述设备驱动的方法(代码逻辑)
struct device_driver {
const char *name;
// 在总线中会有一个名字,用于做匹配,在/sys/bus/mybus/drivers/名字
struct bus_type *bus;//指向该driver对象依附于总线的对象
int (*probe) (struct device *dev); // 如果device和driver匹配之后,driver要做的事情
int (*remove) (struct device *dev); // 如果device和driver从总线移除之后,driver要做的事情
}
注册和注销:
int driver_register(struct device_driver *drv)
void driver_unregister(struct device_driver *drv)

1.创建mydrv.c
在这里插入图片描述在这里插入图片描述在这里插入图片描述

总线bus匹配的实现

如何实现总线匹配,匹配成功之后会自动调用driver的probe方法:
1, 实现bus对象中 match方法
2, 保证driver和device中名字要一样

1.实现bus对象 中match方法
mybus.c
在这里插入图片描述
2.保证driver和device中名字要一样
mydev.c
在这里插入图片描述
mydrv.c
在这里插入图片描述
3.补充:解决在卸载mydev的时候报错
在这里插入图片描述

driver和device分离和合并的实现

1.自定义设备对象
mydev.c
在这里插入图片描述
2.在驱动中的prob方法中合并数据
在这里插入图片描述

完整代码

mybus.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>

int mybus_match(struct device *dev, struct device_driver *drv)
{
   
	if (!strncmp(drv->name, dev->kobj.name, strlen(drv->name)))
	{
   
		printk("match ok\n");
		return 1;
	}
	else
	{
   
		printk("match failed\n")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
米联客2022版AXI4总线专题篇是一本关于AXI4总线架构的专题教材。AXI4总线是一种高性能、高带宽的总线协议,通常用于多核处理器和外设的连接。本专题篇主要介绍了AXI4总线的基本原理、信号传输、相关协议和应用实例。 首先,本专题篇对AXI4总线的基本原理进行了详细介绍。包括AXI4总线的主从模式、数据传输方式、信号和握手机制等。读者可以了解到AXI4总线的工作原理和数据传输的流程。 其次,本专题篇详细介绍了AXI4总线的信号传输。包括地址传输、读写数据传输、传输长度等。读者可以了解每个信号的作用和传输规则,能够准确理解每个传输过程。 然后,本专题篇还介绍了与AXI4总线相关的协议。包括AXI协议信号的扩展、AXI4-Lite总线协议等。这些协议能够帮助读者进一步了解AXI4总线的应用领域和技术细节。 最后,本专题篇提供了一些应用实例。包括使用AXI4总线进行数据传输、外设控制等。通过这些实例,读者可以学习如何在实际应用中使用AXI4总线,并且了解到它的优势和不足之处。 综上所述,米联客2022版AXI4总线专题篇通过详细的介绍和实例分析,帮助读者全面了解AXI4总线架构和应用。这对于从事数字系统设计和嵌入式开发的工程师和学习相关领域知识的学生来说,是一本很有价值的教材。它能够帮助读者提高设计水平,提升开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值