红联Linux门户
Linux帮助

Linux设备驱动简易框图

发布时间:2015-11-05 15:57:45来源:linux网站作者:phlong999

最近读了一些网上对Linux 设备模块解释的文章,对linux 设备原理有了初步的了解。

现以下图作以学习成果记录。

Linux设备驱动简易框图


一.建立bus

任何一个Device 都是要利用bus 来进行通信的。所以在你要在建立一个Device之前要确定它属于哪个bus。在没有现成的bus可以利用的情况下就要自己来建立一个bus了。

建立最简单的bus (bus_init) 需要两个步骤:

1.注册bus: bus_register() 和 bus_create_file() 。这两步的作用是在sys/下注册一个名为xxx_bus的bus。

2.注册devide: 这个device并不是我们最终要建立的device,而是和bus对应的device集合,我们要建立的device应该是这个xxx_bus的child。注册完成后,我们可以在sys/devices/下发现新建了一个名为xxx_bus的目录。


二.建立Device和Driver

有了bus后,就可以把想要建立的Device 或 Driver挂到bus上

1.建立Device(devide_init()):使用device_register建立device, 其中.bus_type指向所属的bus、.parent指向所属的bus_device。注册完成后,我们可以在sys/devices/xxx_bus/下发现xxx_device目录建立成功。并且在sys/bus/xxx_bus/下也发现一个xxx_device目录,这个目录是前一个xxx_device的符号链接。

2.建立Driver(driver_init()):使用driver_register建立driver,其中.bus_type指向所属的bus。注册完成后,我们可以在sys/bus/xxx_bus/下发现xxx_driver目录建立成功。


Linux设备驱动的分层设计思想:http://www.linuxdiyf.com/linux/11731.html

Linux设备驱动结构梳理:http://www.linuxdiyf.com/linux/5759.html