详解Linux设备模型(6)_Bus

详解Linux设备模型(6)_Bus

在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其他设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者Platform Bus。

Linux设备模型(5)_device和device driver

Linux设备模型(5)_device和device driver

在Linux驱动开发中,device和device driver是基本概念。Kernel的核心思路就是为设备和其驱动程序分别定义device和device_driver两个数据结构,本文将围绕这两个数据结构,介绍Linux设备模型的核心逻辑,包括:

详解Linux设备模型(4)_sysfs

详解Linux设备模型(4)_sysfs

sysfs是一种基于RAM的文件系统,它与Kobject结合使用,能够将Kernel的数据结构以及属性导出到用户空间,以文件目录结构的形式提供对这些数据结构的访问支持。

Linux设备模型(3)_Uevent

Linux设备模型(3)_Uevent

Uevent是Kobject的一部分,用于在Kobject状态发生改变时(例如增加、移除等),通知用户空间程序。用户空间程序在接收到这样的事件后,会做出相应的处理。

Linux设备模型(2)_Kobject

Linux设备模型(2)_Kobject

Kobject是Linux设备模型的基础,同时也是设备模型中最难理解的一部分(参见Documentation/kobject.txt)。因此,在深入探讨Linux设备模型之前,有必要先对Kobject进行分析。

详解Linux设备模型(1)_基本概念

详解Linux设备模型(1)_基本概念

在“Linux内核的整体架构”一文中,蜗蜗提到了Linux内核支持世界上几乎所有的不同功能硬件设备,这也是Linux的一个优点。然而,这也导致了Linux内核中一半的代码是设备驱动程序,而随着硬件设备的快速升级换代,设备驱动程序的代码量也在迅速增长。我认为,这种现象破坏了“简洁即美”的理念,使得Linux内核显得非常臃肿、杂乱且难以维护。然而,蜗蜗也明白,这并非Linux的过错,因为Linux是一个宏内核,必须面对设备多样性并实现对应的驱动程序。

Lnux自带i2c工具使用

Lnux自带i2c工具使用

I2C总线已成为一个全球标准,被1000多个来自50多个公司的ICs所使用。此外,I2C总线与许多不同的控制总线兼容,例如SMBus(系统管理总线)、PMBus(电源管理总线)、IPMI(智能平台管理总线)、DDC(显示数据通道)以及ATCA(高级电信架构)。如果我没有记错的话,Linux中的I2C框架完全支持SMBus。同时,图中显示了Linux自带的I2C工具的使用情况。

详解Linux内核中的内存屏障

详解Linux内核中的内存屏障

我之前阅读了一篇关于顺序一致性和缓存一致性的讨论文章,对于这两个概念的区别和联系有了更加清晰的认识。在Linux内核中,有很多同步和屏障机制,我想在此做一些总结。

详解Linux MTD层次

详解Linux MTD层次

MTD(memory technology device内存技术设备)是Linux中的一个子系统,用于访问memory设备(如ROM、flash)。MTD的主要目的是简化新memory设备的驱动开发,为此,它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码都在/drivers/mtd子目录下。CFI接口的MTD设备可以分为四层(从设备节点直到底层硬件驱动),这四层从上到下分别为:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。

Linux内核初始化过程中的调用顺序

Linux内核初始化过程中的调用顺序

所有的__init函数被保存在.initcall.init区段中,同时也保存了一份函数指针。在内核初始化时,内核通过这些函数指针调用这些__init函数指针。整个初始化完成后,包括.init.text和.initcall.init在内的整个init区段都会被释放。

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部