Linux设备驱动开发

Linux设备驱动开发
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [法] (John Madieu)
2021-03
版次: 1
ISBN: 9787115555557
定价: 149.00
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 466页
字数: 570千字
22人买过
  • 本书讲解了Linux驱动开发的基础知识以及所用到的开发环境,全书分为22章,其内容涵盖了各种Linux子系统,包含内存管理、PWM、RTC、IIO和IRQ管理等,还讲解了直接内存访问和网络设备驱动程序的实用方法。在学完本书之后,读者将掌握设备驱动开发环境的概念,并可以从零开始为任何硬件设备编写驱动程序。
      阅读本书需要具备基本的C语言程序设计能力,且熟悉Linux基本命令。本书主要是为嵌入式工程师、Linux系统管理员、开发人员和内核黑客而设计的。无论是软件开发人员,还是系统架构师或制造商,只要愿意深入研究Linux驱动程序开发,阅读本书后都将有所收获。 John Madieu是嵌入式Linux和内核研发工程师,居住在法国巴黎。他主要为自动化、运输、医疗、能源和军事等领域的公司开发驱动程序和开发板支持包(Board Support Packages,BSP)。他目前就职于一家法国公司EXPEMB,该公司是基于模块化计算机的电子开发板设计和嵌入式Linux解决方案的先驱。同时,他还是一位开源和嵌入式系统爱好者,坚信通过知识分享能够学到更多的知识。 第 1章 内核开发简介 1

    1.1 环境设置 1

    1.1.1 获取源代码 2

    1.1.2 内核配置 4

    1.1.3 构建自己的内核 4

    1.2 内核约定 6

    1.2.1 编码风格 6

    1.2.2 内核结构分配和初始化 7

    1.2.3 类、对象、面向对象的编程 7

    1.3 总结 8

    第 2章 设备驱动程序基础 9

    2.1 内核空间和用户空间 9

    2.1.1 模块的概念 10

    2.1.2 模块依赖 10

    2.1.3 模块的加载和卸载 11

    2.2 驱动程序框架 13

    2.2.1 模块的入点和出点 14

    2.2.2 模块信息 16

    2.3 错误和消息打印 18

    2.3.1 错误处理 19

    2.3.2 处理空指针错误 21

    2.3.3 消息打印—— printk() 22

    2.4 模块参数 24

    2.5 构建第 一个模块 25

    2.5.1 模块的makefile 26

    2.5.2 内核树内 27

    2.5.3 内核树外 29

    2.5.4 构建模块 29

    2.6 总结 30

    第3章 内核工具和辅助函数 31

    3.1 理解宏container_of 31

    3.2 链表 33

    3.2.1 创建和初始化链表 35

    3.2.2 创建链表节点 36

    3.2.3 添加链表节点 36

    3.2.4 删除链表节点 37

    3.2.5 链表遍历 37

    3.3 内核的睡眠机制 38

    3.4 延迟和定时器管理 41

    3.4.1 标准定时器 41

    3.4.2 高精度定时器(HRT) 44

    3.4.3 动态Tick/Tickless内核 46

    3.4.4 内核中的延迟和睡眠 46

    3.5 内核的锁机制 47

    3.5.1 互斥锁 47

    3.5.2 自旋锁 49

    3.6 工作延迟机制 51

    3.6.1 Softirq和Ksoftirqd 51

    3.6.2 Tasklet 53

    3.6.3 Tasklet调度 54

    3.6.4 工作队列 56

    3.6.5 内核线程 62

    3.7 内核中断机制 62

    3.7.1 注册中断处理程序 62

    3.7.2 下半部的概念 65

    3.8 线程化中断 68

    3.9 从内核调用用户空间应用程序 71

    3.10 总结 72

    第4章 字符设备驱动程序 73

    4.1 主设备和次设备的概念 73

    4.2 设备文件操作 76

    4.3 分配和注册字符设备 77

    4.4 写文件操作 79

    4.4.1 内核空间和用户空间数据交换 79

    4.4.2 open方法 80

    4.4.3 release方法 81

    4.4.4 write方法 82

    4.4.5 read方法 84

    4.4.6 llseek方法 86

    4.4.7 poll方法 88

    4.4.8 ioctl方法 91

    4.4.9 填充file_operations结构 95

    4.5 总结 95

    第5章 平台设备驱动程序 96

    5.1 平台驱动程序 97

    5.2 平台设备 100

    5.3 设备、驱动程序和总线匹配 105

    5.4 总结 113

    第6章 设备树的概念 114

    6.1 设备树机制 114

    6.1.1 命名约定 115

    6.1.2 别名、标签和phandle 115

    6.1.3 DT编译器 117

    6.2 表示和寻址设备 117

    6.2.1 SPI和I2C寻址 118

    6.2.2 平台设备寻址 119

    6.3 处理资源 120

    6.3.1 命名资源的概念 121

    6.3.2 访问寄存器 122

    6.3.3 处理中断 123

    6.3.4 提取特定应用数据 124

    6.4 平台驱动程序和DT 127

    6.4.1 OF匹配风格 127

    6.4.2 匹配风格混合 132

    6.4.3 平台数据与DT 136

    6.5 总结 137

    第7章 I2C客户端驱动程序 138

    7.1 驱动程序架构 139

    7.1.1 i2c_driver结构 139

    7.1.2 驱动程序的初始化和注册 142

    7.1.3 驱动程序和设备的配置 142

    7.2 访问客户端 143

    7.2.1 普通I2C通信 143

    7.2.2 系统管理总线(SMBus)兼容函数 145

    7.2.3 在开发板配置文件中实例化I2C设备(弃用的旧方式) 146

    7.3 I2C和设备树 147

    7.3.1 定义和注册I2C驱动程序 147

    7.3.2 在设备树中实例化I2C设备——新方法 149

    7.3.3 小结 149

    7.4 总结 150

    第8章 SPI设备驱动程序 151

    8.1 驱动程序架构 151

    8.1.1 设备结构 152

    8.1.2 spi_driver结构 154

    8.1.3 驱动程序的初始化和注册 156

    8.1.4 驱动程序和设备配置 157

    8.2 访问和与客户端通信 161

    8.3 小结 166

    8.4 SPI用户模式驱动程序 166

    8.5 总结 170

    第9章 Regmap API ——寄存器映射抽象 171

    9.1 使用Regmap API编程 172

    9.1.1 regmap_config结构 172

    9.1.2 Regmap初始化 175

    9.1.3 设备访问函数 177

    9.1.4 Regmap和缓存 180

    9.1.5 小结 181

    9.1.6 Regmap示例 182

    9.2 总结 184

    第 10章 IIO框架 185

    10.1 IIO数据结构 186

    10.1.1 Iio_dev数据结构 186

    10.1.2 iio_info结构 190

    10.1.3 IIO通道 190

    10.1.4 小结 196

    10.2 触发缓冲区支持 199

    10.2.1 IIO触发器和sysfs(用户空间) 202

    10.2.2 IIO缓冲区 206

    10.2.3 小结 208

    10.3 IIO数据访问 214

    10.3.1 单次捕获 214

    10.3.2 缓冲区数据访问 214

    10.4 IIO工具 216

    10.5 总结 217

    第 11章 内核内存管理 218

    11.1 系统内存布局——内核空间和用户空间 219

    11.1.1 内核地址——低端和高端内存概念 221

    11.1.2 用户空间寻址 222

    11.1.3 虚拟内存区域 225

    11.2 地址转换和MMU 227

    11.3 内存分配机制 232

    11.3.1 页面分配器 233

    11.3.2 Slab分配器 235

    11.3.3 kmalloc分配系列 238

    11.3.4 vmalloc分配器 240

    11.3.5 后台的进程内存分配 242

    11.4 使用I/O内存访问硬件 244

    11.4.1 PIO设备访问 244

    11.4.2 MMIO设备访问 245

    11.5 内存(重)映射 248

    11.5.1 kmap 248

    11.5.2 映射内核内存到用户空间 249

    11.6 Linux缓存系统 253

    11.6.1 什么是缓存 253

    11.6.2 为什么数据延迟写入磁盘 255

    11.7 设备管理的资源—— Devres 256

    11.8 总结 257

    第 12章 DMA ——直接内存访问 258

    12.1 设置DMA映射 258

    12.1.1 缓存一致性和DMA 258

    12.1.2 DMA映射 259

    12.2 完成的概念 263

    12.3 DMA引擎API 264

    12.3.1 分配DMA从通道 265

    12.3.2 设置从设备和控制器指定参数 266

    12.3.3 获取事务描述符 269

    12.3.4 提交事务 270

    12.3.5 发布待处理DMA请求并等待回调通知 271

    12.4 总结—— NXP SDMA(i.MX6) 272

    12.5 DMA DT绑定 277

    12.6 总结 278

    第 13章 Linux设备模型 279

    13.1 LDM数据结构 279

    13.1.1 总线 280

    13.1.2 设备驱动程序 285

    13.1.3 设备 287

    13.2 深入剖析LDM 289

    13.2.1 kobject结构 289

    13.2.2 kobj_type 291

    13.2.3 内核对象集合 293

    13.2.4 属性 294

    13.3 设备模型和sysfs 296

    13.3.1 sysfs文件和属性 297

    13.3.2 允许轮询sysfs属性文件 303

    13.4 总结 304

    第 14章 引脚控制和GPIO子系统 305

    14.1 引脚控制子系统 305

    14.2 GPIO子系统 310

    14.2.1 基于整数的GPIO接口:传统方法 310

    14.2.2 基于描述符的GPIO接口:新的推荐方式 315

    14.2.3 GPIO接口和设备树 322

    14.2.4 GPIO和sysfs 327

    14.3 总结 329

    第 15章 GPIO控制器驱动程序—— gpio_chip 330

    15.1 驱动程序体系结构和数据结构 330

    15.2 引脚控制器指南 334

    15.3 GPIO控制器的sysfs接口 335

    15.4 GPIO控制器和DT 335

    15.5 总结 336

    第 16章 高级IRQ管理 337

    16.1 中断复用和中断控制器 339

    16.2 高级外设IRQ管理 347

    16.3 中断请求和传播 349

    16.3.1 链接IRQ 351

    16.3.2 案例研究—— GPIO和IRQ芯片 351

    16.4 总结 356

    第 17章 输入设备驱动程序 357

    17.1 输入设备结构 357

    17.2 分配并注册输入设备 360

    17.3 产生和报告输入事件 364

    17.4 用户空间接口 366

    17.5 回顾 368

    17.6 总结 376

    第 18章 RTC驱动程序 377

    18.1 RTC框架数据结构 377

    18.2 RTC和用户空间 387

    18.2.1 sysfs接口 387

    18.2.2 hwclock工具 388

    18.3 总结 389

    第 19章 PWM驱动程序 390

    19.1 PWM控制器驱动程序 391

    19.1.1 驱动程序示例 393

    19.1.2 PWM控制器绑定 396

    19.2 PWM消费者接口 397

    19.3 通过sysfs接口使用PWM 401

    19.4 总结 402

    第 20章 调节器框架 403

    20.1 PMIC/生产者驱动程序接口 404

    20.1.1 驱动程序数据结构 404

    20.1.2 驱动程序方法 412

    20.1.3 驱动程序示例 418

    20.2 调节器消费者接口 421

    20.2.1 调节器设备请求 422

    20.2.2 控制调节器设备 423

    20.3 调节器绑定 425

    20.4 总结 426

    第 21章 帧缓冲驱动程序 427

    21.1 驱动程序数据结构 428

    21.2 设备方法 431

    21.3 驱动程序方法 434

    21.3.1 fb_ops剖析 436

    21.3.2 总结 440

    21.4 用户空间的帧缓冲 440

    21.5 总结 442

    第 22章 网络接口卡驱动程序 443

    22.1 驱动程序数据结构 443

    22.1.1 套接字缓冲区结构 444

    22.1.2 网络接口结构 446

    22.2 设备方法 448

    22.2.1 打开和关闭 449

    22.2.2 数据包处理 452

    22.2.3 驱动程序示例 457

    22.2.4 状态和控制 460

    22.3 驱动程序方法 463

    22.3.1 probe函数 464

    22.3.2 模块卸载 466

    22.4 总结 466
  • 内容简介:
    本书讲解了Linux驱动开发的基础知识以及所用到的开发环境,全书分为22章,其内容涵盖了各种Linux子系统,包含内存管理、PWM、RTC、IIO和IRQ管理等,还讲解了直接内存访问和网络设备驱动程序的实用方法。在学完本书之后,读者将掌握设备驱动开发环境的概念,并可以从零开始为任何硬件设备编写驱动程序。
      阅读本书需要具备基本的C语言程序设计能力,且熟悉Linux基本命令。本书主要是为嵌入式工程师、Linux系统管理员、开发人员和内核黑客而设计的。无论是软件开发人员,还是系统架构师或制造商,只要愿意深入研究Linux驱动程序开发,阅读本书后都将有所收获。
  • 作者简介:
    John Madieu是嵌入式Linux和内核研发工程师,居住在法国巴黎。他主要为自动化、运输、医疗、能源和军事等领域的公司开发驱动程序和开发板支持包(Board Support Packages,BSP)。他目前就职于一家法国公司EXPEMB,该公司是基于模块化计算机的电子开发板设计和嵌入式Linux解决方案的先驱。同时,他还是一位开源和嵌入式系统爱好者,坚信通过知识分享能够学到更多的知识。
  • 目录:
    第 1章 内核开发简介 1

    1.1 环境设置 1

    1.1.1 获取源代码 2

    1.1.2 内核配置 4

    1.1.3 构建自己的内核 4

    1.2 内核约定 6

    1.2.1 编码风格 6

    1.2.2 内核结构分配和初始化 7

    1.2.3 类、对象、面向对象的编程 7

    1.3 总结 8

    第 2章 设备驱动程序基础 9

    2.1 内核空间和用户空间 9

    2.1.1 模块的概念 10

    2.1.2 模块依赖 10

    2.1.3 模块的加载和卸载 11

    2.2 驱动程序框架 13

    2.2.1 模块的入点和出点 14

    2.2.2 模块信息 16

    2.3 错误和消息打印 18

    2.3.1 错误处理 19

    2.3.2 处理空指针错误 21

    2.3.3 消息打印—— printk() 22

    2.4 模块参数 24

    2.5 构建第 一个模块 25

    2.5.1 模块的makefile 26

    2.5.2 内核树内 27

    2.5.3 内核树外 29

    2.5.4 构建模块 29

    2.6 总结 30

    第3章 内核工具和辅助函数 31

    3.1 理解宏container_of 31

    3.2 链表 33

    3.2.1 创建和初始化链表 35

    3.2.2 创建链表节点 36

    3.2.3 添加链表节点 36

    3.2.4 删除链表节点 37

    3.2.5 链表遍历 37

    3.3 内核的睡眠机制 38

    3.4 延迟和定时器管理 41

    3.4.1 标准定时器 41

    3.4.2 高精度定时器(HRT) 44

    3.4.3 动态Tick/Tickless内核 46

    3.4.4 内核中的延迟和睡眠 46

    3.5 内核的锁机制 47

    3.5.1 互斥锁 47

    3.5.2 自旋锁 49

    3.6 工作延迟机制 51

    3.6.1 Softirq和Ksoftirqd 51

    3.6.2 Tasklet 53

    3.6.3 Tasklet调度 54

    3.6.4 工作队列 56

    3.6.5 内核线程 62

    3.7 内核中断机制 62

    3.7.1 注册中断处理程序 62

    3.7.2 下半部的概念 65

    3.8 线程化中断 68

    3.9 从内核调用用户空间应用程序 71

    3.10 总结 72

    第4章 字符设备驱动程序 73

    4.1 主设备和次设备的概念 73

    4.2 设备文件操作 76

    4.3 分配和注册字符设备 77

    4.4 写文件操作 79

    4.4.1 内核空间和用户空间数据交换 79

    4.4.2 open方法 80

    4.4.3 release方法 81

    4.4.4 write方法 82

    4.4.5 read方法 84

    4.4.6 llseek方法 86

    4.4.7 poll方法 88

    4.4.8 ioctl方法 91

    4.4.9 填充file_operations结构 95

    4.5 总结 95

    第5章 平台设备驱动程序 96

    5.1 平台驱动程序 97

    5.2 平台设备 100

    5.3 设备、驱动程序和总线匹配 105

    5.4 总结 113

    第6章 设备树的概念 114

    6.1 设备树机制 114

    6.1.1 命名约定 115

    6.1.2 别名、标签和phandle 115

    6.1.3 DT编译器 117

    6.2 表示和寻址设备 117

    6.2.1 SPI和I2C寻址 118

    6.2.2 平台设备寻址 119

    6.3 处理资源 120

    6.3.1 命名资源的概念 121

    6.3.2 访问寄存器 122

    6.3.3 处理中断 123

    6.3.4 提取特定应用数据 124

    6.4 平台驱动程序和DT 127

    6.4.1 OF匹配风格 127

    6.4.2 匹配风格混合 132

    6.4.3 平台数据与DT 136

    6.5 总结 137

    第7章 I2C客户端驱动程序 138

    7.1 驱动程序架构 139

    7.1.1 i2c_driver结构 139

    7.1.2 驱动程序的初始化和注册 142

    7.1.3 驱动程序和设备的配置 142

    7.2 访问客户端 143

    7.2.1 普通I2C通信 143

    7.2.2 系统管理总线(SMBus)兼容函数 145

    7.2.3 在开发板配置文件中实例化I2C设备(弃用的旧方式) 146

    7.3 I2C和设备树 147

    7.3.1 定义和注册I2C驱动程序 147

    7.3.2 在设备树中实例化I2C设备——新方法 149

    7.3.3 小结 149

    7.4 总结 150

    第8章 SPI设备驱动程序 151

    8.1 驱动程序架构 151

    8.1.1 设备结构 152

    8.1.2 spi_driver结构 154

    8.1.3 驱动程序的初始化和注册 156

    8.1.4 驱动程序和设备配置 157

    8.2 访问和与客户端通信 161

    8.3 小结 166

    8.4 SPI用户模式驱动程序 166

    8.5 总结 170

    第9章 Regmap API ——寄存器映射抽象 171

    9.1 使用Regmap API编程 172

    9.1.1 regmap_config结构 172

    9.1.2 Regmap初始化 175

    9.1.3 设备访问函数 177

    9.1.4 Regmap和缓存 180

    9.1.5 小结 181

    9.1.6 Regmap示例 182

    9.2 总结 184

    第 10章 IIO框架 185

    10.1 IIO数据结构 186

    10.1.1 Iio_dev数据结构 186

    10.1.2 iio_info结构 190

    10.1.3 IIO通道 190

    10.1.4 小结 196

    10.2 触发缓冲区支持 199

    10.2.1 IIO触发器和sysfs(用户空间) 202

    10.2.2 IIO缓冲区 206

    10.2.3 小结 208

    10.3 IIO数据访问 214

    10.3.1 单次捕获 214

    10.3.2 缓冲区数据访问 214

    10.4 IIO工具 216

    10.5 总结 217

    第 11章 内核内存管理 218

    11.1 系统内存布局——内核空间和用户空间 219

    11.1.1 内核地址——低端和高端内存概念 221

    11.1.2 用户空间寻址 222

    11.1.3 虚拟内存区域 225

    11.2 地址转换和MMU 227

    11.3 内存分配机制 232

    11.3.1 页面分配器 233

    11.3.2 Slab分配器 235

    11.3.3 kmalloc分配系列 238

    11.3.4 vmalloc分配器 240

    11.3.5 后台的进程内存分配 242

    11.4 使用I/O内存访问硬件 244

    11.4.1 PIO设备访问 244

    11.4.2 MMIO设备访问 245

    11.5 内存(重)映射 248

    11.5.1 kmap 248

    11.5.2 映射内核内存到用户空间 249

    11.6 Linux缓存系统 253

    11.6.1 什么是缓存 253

    11.6.2 为什么数据延迟写入磁盘 255

    11.7 设备管理的资源—— Devres 256

    11.8 总结 257

    第 12章 DMA ——直接内存访问 258

    12.1 设置DMA映射 258

    12.1.1 缓存一致性和DMA 258

    12.1.2 DMA映射 259

    12.2 完成的概念 263

    12.3 DMA引擎API 264

    12.3.1 分配DMA从通道 265

    12.3.2 设置从设备和控制器指定参数 266

    12.3.3 获取事务描述符 269

    12.3.4 提交事务 270

    12.3.5 发布待处理DMA请求并等待回调通知 271

    12.4 总结—— NXP SDMA(i.MX6) 272

    12.5 DMA DT绑定 277

    12.6 总结 278

    第 13章 Linux设备模型 279

    13.1 LDM数据结构 279

    13.1.1 总线 280

    13.1.2 设备驱动程序 285

    13.1.3 设备 287

    13.2 深入剖析LDM 289

    13.2.1 kobject结构 289

    13.2.2 kobj_type 291

    13.2.3 内核对象集合 293

    13.2.4 属性 294

    13.3 设备模型和sysfs 296

    13.3.1 sysfs文件和属性 297

    13.3.2 允许轮询sysfs属性文件 303

    13.4 总结 304

    第 14章 引脚控制和GPIO子系统 305

    14.1 引脚控制子系统 305

    14.2 GPIO子系统 310

    14.2.1 基于整数的GPIO接口:传统方法 310

    14.2.2 基于描述符的GPIO接口:新的推荐方式 315

    14.2.3 GPIO接口和设备树 322

    14.2.4 GPIO和sysfs 327

    14.3 总结 329

    第 15章 GPIO控制器驱动程序—— gpio_chip 330

    15.1 驱动程序体系结构和数据结构 330

    15.2 引脚控制器指南 334

    15.3 GPIO控制器的sysfs接口 335

    15.4 GPIO控制器和DT 335

    15.5 总结 336

    第 16章 高级IRQ管理 337

    16.1 中断复用和中断控制器 339

    16.2 高级外设IRQ管理 347

    16.3 中断请求和传播 349

    16.3.1 链接IRQ 351

    16.3.2 案例研究—— GPIO和IRQ芯片 351

    16.4 总结 356

    第 17章 输入设备驱动程序 357

    17.1 输入设备结构 357

    17.2 分配并注册输入设备 360

    17.3 产生和报告输入事件 364

    17.4 用户空间接口 366

    17.5 回顾 368

    17.6 总结 376

    第 18章 RTC驱动程序 377

    18.1 RTC框架数据结构 377

    18.2 RTC和用户空间 387

    18.2.1 sysfs接口 387

    18.2.2 hwclock工具 388

    18.3 总结 389

    第 19章 PWM驱动程序 390

    19.1 PWM控制器驱动程序 391

    19.1.1 驱动程序示例 393

    19.1.2 PWM控制器绑定 396

    19.2 PWM消费者接口 397

    19.3 通过sysfs接口使用PWM 401

    19.4 总结 402

    第 20章 调节器框架 403

    20.1 PMIC/生产者驱动程序接口 404

    20.1.1 驱动程序数据结构 404

    20.1.2 驱动程序方法 412

    20.1.3 驱动程序示例 418

    20.2 调节器消费者接口 421

    20.2.1 调节器设备请求 422

    20.2.2 控制调节器设备 423

    20.3 调节器绑定 425

    20.4 总结 426

    第 21章 帧缓冲驱动程序 427

    21.1 驱动程序数据结构 428

    21.2 设备方法 431

    21.3 驱动程序方法 434

    21.3.1 fb_ops剖析 436

    21.3.2 总结 440

    21.4 用户空间的帧缓冲 440

    21.5 总结 442

    第 22章 网络接口卡驱动程序 443

    22.1 驱动程序数据结构 443

    22.1.1 套接字缓冲区结构 444

    22.1.2 网络接口结构 446

    22.2 设备方法 448

    22.2.1 打开和关闭 449

    22.2.2 数据包处理 452

    22.2.3 驱动程序示例 457

    22.2.4 状态和控制 460

    22.3 驱动程序方法 463

    22.3.1 probe函数 464

    22.3.2 模块卸载 466

    22.4 总结 466
查看详情
相关图书 / 更多
Linux设备驱动开发
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux设备驱动开发
Linux操作系统活页式教程
李国辉
Linux设备驱动开发
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux设备驱动开发
Linux系统自动化运维(Python版)(微课版)
张莉,丁传炜
Linux设备驱动开发
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux设备驱动开发
Linux源码趣读
闪客
Linux设备驱动开发
Linux 内核完全注释(20周年版) 赵炯
赵炯
Linux设备驱动开发
Linux网络操作系统项目式教程(CentOS 7.6)(微课版)(第2版)
刘正,张运嵩,尤澜涛主编
Linux设备驱动开发
Linux 内核完全剖析——基于0.12内核(15周年版) 赵炯
赵炯
Linux设备驱动开发
Linux高效学习教程:Linux就该这么学+Linux常用命令自学手册
刘遄 刘遄
Linux设备驱动开发
Linux后端开发工程实践
万木春
Linux设备驱动开发
Linux运维从入门到精通
明日科技
您可能感兴趣 / 更多
Linux设备驱动开发
我不想保持正确--拉图尔对塞尔的五次访谈(新行思)
[法]米歇尔·塞尔 [法]布鲁诺·拉图尔 著 顾晓燕 译
Linux设备驱动开发
小王子(克里斯·里德尔插图珍藏本)80周年
[法]安托万·德·圣埃克苏佩里 著 [英]克里斯·里德尔 绘 黄荭 译
Linux设备驱动开发
灵感·上海
[法]高大伟 主编
Linux设备驱动开发
语言、基因和考古--以甘青地区为中心的跨学科探索
[法]徐丹 主编
Linux设备驱动开发
棕熊巴纳比套装逗笑小孩 治愈大人 松弛身心 法国出版四十余年经典漫画(全5册)当当定制版
[法]菲利普·柯德雷/著
Linux设备驱动开发
作家榜名著:小王子(全新大开本典藏版《小王子》!译者荣获法国艺术与文学骑士勋章!读《小王子》认准作家榜!)
[法]圣-埃克苏佩里、作家榜经典名 著;树才 译
Linux设备驱动开发
高老头:巴尔扎克《人间喜剧》的基石,雨果、毛姆推崇的经典 一句顶一万句用笔征服世界的文学大师!
[法]奥诺雷·德·巴尔扎克
Linux设备驱动开发
笛卡尔:哲学原理 方法论-崇文学术译丛·西方哲学02
[法]笛卡尔 著,关文运 译
Linux设备驱动开发
童话、博物学与维多利亚文化 (邂逅仙灵精怪 漫步童话王国 品读自然文学 感受博物浪漫)
[法]劳伦斯·塔拉拉赫-维尔玛斯
Linux设备驱动开发
幼幼成长图画书图画书纸板书 宝宝情绪管理系列 小狼巴尔多
[法]艾瑞克·巴图 文/图 倪志华 译
Linux设备驱动开发
光的探索:从伽利略望远镜到奇异量子世界
[法]塞尔日·阿罗什(Serge Haroche)
Linux设备驱动开发
列那狐的故事 快乐读书吧 五年级上册推荐阅读(中小学生课外阅读指导丛书)无障碍阅读 彩插励志版 96000多名读者热评!
[法]玛特 艾 季罗夫人(Mme Mad H.-Giraud)