Linux设备驱动程序第三版(文字版+书签).pdf
2021-03-25 16:59:23 2.2MB 设备驱动程序
1
作者:(美国)Jonahan Corbet科波特 译者:魏永明 耿岳 钟书毅 Jonahan Corbet早在1981年就开始接触BSD Unix的源代码 那时 科罗拉多大学的一名讲师让他“修正”其中的分页算法 从那时起直到现在 他深入研究了他所遇到的每一个系统 其中包括VAX Sun Arden以及x86系统的驱动程序 他在1993年第一次接触Linux系统 从此以后一直从事Linux的开发 Corbet先生是《Linux Weekly News》的创始人和执行主编 他和妻子及两个孩子生活在科罗多州的玻尔得市 《LINUX设备驱动程序 第3版 》已针对Linux内核的2610版本彻底更新过了 内核的这个版本针对常见任务完成了合理化设计及相应的简化 如即插即用 利用sysfs文件系统和用户空间交互 以及标准总线上的多设备管理等等 要阅读并理解本书 您不必首先成为内核黑客;只要您理解C语言并具有Unix系统调用的一些背景知识即可 您将学到如何为字符设备 块设备和网络接口编写驱动程序 为此 《LINUX设备驱动程序 第3版 》提供了完整的示例程序 您不需要特殊的硬件即可编译和运行这些示例程序 《LINUX设备驱动程序 第3版 》还在单独的章节中讲述了PCI USB和tty 终端 子系统 对期望了解操作系统内部工作原理的读者来讲 《LINUX设备驱动程序 第3版 》也深入阐述了地址空间 异步事件以及I O等方面的内容 ">作者:(美国)Jonahan Corbet科波特 译者:魏永明 耿岳 钟书毅 Jonahan Corbet早在1981年就开始接触BSD Unix的源代码 那时 科罗拉多大学的一名讲师让他“修正”其中的分页算法 从那时起直到现在 他深入研究了他所遇到的每一 [更多]
2021-03-24 14:30:02 138KB Linux 设备驱动程序
1
我想从下面三个方面来了解 Device Tree: 1、为何要引入 Device Tree,这个机制是用来解决什么问题的?(这是本文的主题) 2、 Device Tree 的基础概念(请参考 DT 基础概念) 3、 ARM linux 中和 Device Tree 相关的代码分析(请参考 DT 代码分析)
2021-03-22 12:02:06 1.04MB linux 设备树
1
第一章Linux内核概述 Linux 内核是一个庞大而复杂的操作系统的核心,不过尽管庞大,但是却采用子系统和分层的概念很好地进行了组织。在本文中,您将探索 Linux 内核的总体结构,并学习一些主要的子系统和核心接口。您还可以通过其他 IBM 文章的链接更深入地进行学习。 由于本章的目标是对 Linux 内核进行介绍并探索其体系结构和主要组件,因此首先回顾一下 Linux 的简短历史,然后从较高的层次审视 Linux 内核的体系结构,最后介绍它的主要子系统。Linux 内核具有超过 600 万行的代码,因此本文不可能进行完整的介绍。请使用指向其他内容的链接进一步学习。 1.1 linux简短历史 尽管 Linux 绝对是最流行的开源操作系统,但是相对于其他操作系统的漫长历史来说,Linux 的历史非常短暂。在计算机出现早期,程序员是使用硬件语言在裸硬件上进行开发的。缺少操作系统就意味着在某个时间只有一个应用程序(和一个用户)可以使用这些庞大而又昂贵的设备。早期的操作系统是在 20 世纪 50 年代开发的,用来提供简单的开发体验。 二十年后,Andrew Tanenbaum 创建了一个微内核版本的 UNIX®,名为 MINIX(代表 minimal UNIX),它可以在小型的个人计算机上运行。这个开源操作系统在 20 世纪 90 年代激发了 Linus Torvalds 开发 Linux 的灵感(请参看图 1 所示)。 Linux 快速从一个个人项目进化成为一个全球数千人参与的开发项目。对于 Linux 来说,最为重要的决策之一是采用 GPL(GNU General Public License)。在 GPL 保护之下,Linux 内核可以防止商业使用,并且它还从 GNU 项目(Richard Stallman 开发,其源代码要比 Linux 内核大得多)的用户空间开发受益。这允许使用一些非常有用的应用程序,例如 GCC(GNU Compiler Collection)和各种 shell 支持。 1.2linux内核组成 1.2.1linux内核简介 现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。 最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。 GNU C Library (glibc)也在这里。它提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制。这点非常重要,因为内核和用户空间的应用程序使用的是不同的保护地址空间。每个用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。 Linux 内核可以进一步划分成 3 层。最上面是系统调用接口,它实现了一些基本的功能,例如 read 和 write。系统调用接口之下是内核代码,可以更精确地定义为独立于体系结构的内核代码。这些代码是 Linux 所支持的所有处理器体系结构所通用的。在这些代码之下是依赖于体系结构的代码,构成了通常称为 BSP(Board Support Package)的部分。这些代码用作给定体系结构的处理器和特定于平台的代码。 1.2.2Linux内核属性 在讨论大型而复杂的系统的体系结构时,可以从很多角度来审视系统。体系结构分析的一个目标是提供一种方法更好地理解源代码,这正是本文的目的。 Linux 内核实现了很多重要的体系结构属性。在或高或低的层次上,内核被划分为多个子系统。Linux 也可以看作是一个整体,因为它会将所有这些基本服务都集成到内核中。这与微内核的体系结构不同,后者会提供一些基本的服务,例如通信、I/O、内存和进程管理,更具体的服务都是插入到微内核层中的。每种内核都有自己的优点,不过这里并不对此进行讨论。 随着时间的流逝,Linux 内核在内存和 CPU 使用方面具有较高的效率,并且非常稳定。但是对于 Linux 来说,最为有趣的是在这种大小和复杂性的前提下,依然具有良好的可移植性。Linux 编译后可在大量处理器和具有不同体系结构约束和需求的平台上运行。一个例子是 Linux 可以在一个具有内存管理单元(MMU)的处理器上运行,也可以在那些不提供 MMU 的处理器上运行。Linux 内核的 uClinux 移植提供了对非 MMU 的支持。 1.2.3Linux内核子系统 现在使用图 3 中的分类说明 Linux 内核的主要组件。 系统调用接口 SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用
2021-03-19 11:23:22 22.16MB linux
1
嵌入式linux设备驱动开发详解 嵌入式开发资料
2021-03-18 17:07:14 19.79MB 嵌入式 linux 驱动 ARM
1
Linux驱动程序教程:如何编写简单的Linux设备驱动程序 demo
2021-03-18 15:16:34 2KB linux driver
1
精通LINUX设备驱动程序开发
2021-03-10 16:39:10 38.25MB linux 驱动
1
接着前面的终端控制台分析,接下来分析serial的驱动。在linux中,serial也对应着终端,通常被称为串口终端。在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点。在分析具体的serial驱动之前。有必要先分析uart驱动架构。uart是UniversalAsynchronousReceiverandTransmitter的缩写。翻译成中文即为”通用异步收发器”。它是串口设备驱动的封装层。如下图所示:上图中红色部份标识即为uart部份的操作。从上图可以看到,uart设备是继tty_driver的又一层封装。实际上uart_driver就是对应tty_driver.
2021-03-02 10:06:56 173KB linux设备模型之uart驱动架构分析
1
这样的代码不应该需要太多积分,但时间久了积分上去了,特意来减少所需积分,希望大家喜欢。 嵌入式开发框架之模块化代码实现 仿linux设备驱动框架编写 linux模块化编程 代码开发框架 linux驱动学习
2020-04-30 11:26:04 205KB linux设备驱动 源码 模块化 程序框架
1
使用NL668 4g模块,调试NDIS网卡,直到ping通外网
2020-01-13 03:16:42 92KB NL668 NDIS网卡调试 ping外网 ping
1