平台总线模型简介

1. 平台总线介绍

平台总线模型将一个驱动分成两部分 device.c, driver.c。一个描述硬件, 一个控制硬件。
平台总线通过比较字符串, 将name相同的device.cdriver.c匹配到一起来控制硬件。
在这里插入图片描述
driver通过平台总线去拿到device.c内容。
平台总线的优点是减少重复代码 提高效率。
类似.h.c的关系
平台总线的原则是先分离, 后搭档。

2.注册Platform设备

在Linux内核里用platform_device的结构体描述硬件资源

struct platform_device {
   
	const char	*name; //device的名字, 将和driver的名字进行匹配
	int		id; //名字+id 为/sys/bus/platform/devices 下的名称
	bool		id_auto; // 自动设置id 一般不用
	struct device	dev;
	u32		num_resources;  // 存储资源的个数
	struct resource	*resource;

	const struct platform_device_id	*id_entry;
	char *driver_override; /* Driver name to force a match */

	/* MFD cell pointer */
	struct mfd_cell *mfd_cell;

	/* arch specific additions */
	struct pdev_archdata	archdata;
};

struct resource {
   
	resource_size_t start; //根据不同资源 理解不同 如 flags = REG 则代表起始地址
	resource_size_t end;
	const char *name; // 资源名称 如中断:irq
	unsigned long flags; // 资源类型. 如IO MEM REG IRQ DMA BUS
	unsigned long desc;
	struct resource *parent, *sibling, *child;
};

补充:
该结构体的名称为name + id可以在/sys/bus/platform/devices下查看。假设id=-1id不会显示。

下面是device的示例代码
执行完成在在/sys/bus/platform/devices目录下可以找到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值