700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux设备模型(8)_platform设备 Linux设备模型之platform总线

linux设备模型(8)_platform设备 Linux设备模型之platform总线

时间:2024-01-07 23:37:27

相关推荐

linux设备模型(8)_platform设备 Linux设备模型之platform总线

Linux设备模型之platform总线-

一:前言

Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完platform总线之后,才能继续深入下去分析.在分析完sysfs和设备驱动模型之后,这部份应该很简单了.闲言少叙.步入正题.GO.GO!以下的源代码分析是基于2.6.25的.

二:platform概貌

在分析源代码之前,先在内核代码中找一个platform架构的驱动程序.下面以i8042芯片的驱动为例进行分析.

在linux-2.6.25/drivers/input/serio/i8042.c的intel 8042的初始化入口中,有以下代码分段: static int __init i8042_init(void)

{

……

err = platform_driver_register(&i8042_driver);

if (err)

goto err_platform_exit;

i8042_platform_device = platform_device_alloc("i8042", -1);

if (!i8042_platform_device) {

err = -ENOMEM;

goto err_unregister_driver;

}

err = platform_device_add(i8042_platform_device);

if (err)

goto err_free_device;

……

}

我们在上面的程序片段中看到,驱动程序先注册了一个platform device.然后又添加了一个platform device.这里就涉及到了platform的两个最主要的操作,一个设备驱动注册,一个设备注册.

要了解platform总线的来龙去脉.得从它的初始化开始.

三:platform初始化

Platform总线的初始化是在linux-2.6.25/drivers/base/platform.c中的platform_bus_init()完成的,代码如下:

int __init platform_bus_init(void)

{

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。