王朝网络
分享
 
 
 

精通Linux驱动程序开发(英文版)(图灵程序设计丛书)

王朝导购·作者佚名
 
精通Linux驱动程序开发(英文版)(图灵程序设计丛书)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  参考价格: 点此进入淘宝搜索页搜索
  分类: 图书,计算机与互联网,操作系统,Linux,Linux 编程开发,
  品牌: Sreekrishnan Venkateswaran

基本信息·出版社:人民邮电出版社

·页码:714 页

·出版日期:2009年

·ISBN:7115206473/9787115206473

·条形码:9787115206473

·包装版本:1版

·装帧:平装

·开本:16

·正文语种:英语

·丛书名:图灵程序设计丛书

产品信息有问题吗?请帮我们更新产品信息。

内容简介《精通Linux驱动程序开发(英文版)》是Linux设备驱动程序领域的权威著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深入探讨了其他书没有涵盖或辄止浅尝的许多重要主题和关键难点,如PCMCIA、I2C和USB等外部总线、视频、音频、无线连网和闪存等技术。在解释每一个技术时,均讲解了相关的内核源码文件,并给出了完整的开发实例。《精通Linux驱动程序开发(英文版)》适合中高级Linux 开发人员阅读。

作者简介Sreekrishnan Venkateswaran,世界顶级Linux开发技术专家。在IBM工作多年,有丰富的嵌入式Linux和驱动程序开发经验,曾经将Linux移植到了手表、音乐播放器、VoIP电话、心脏起搏器以及远程门诊监控系统等各种设备上。目前负责IBM印度公司的嵌入式解决方案组。他曾担任Linux Magazine的特邀编辑,主持内核技术专栏作。

媒体推荐目前最全面深入的Linux设备驱动程序著作,世界级Linux技术大师力作,大量技术内幕首次公开。

“这是我读过的最全面的Linux设备驱动程序著作。”

——Alan Cox,Linux内核维护者

“这本书涵盖了各种Linux设备驱动程序,全面而翔实。”

——Theodore Ts’o,Linux基金会CTO,北美第一位内核开发者

编辑推荐在回顾了驱动开发的各种基础知识和最新的Linux 2.6内核相关特性之后,《精通Linux驱动程序开发(英文版)》的作者不仅讲述了其他设备驱动程序图书中都会涉及的较容易的内容,更迎难而上,深入探讨了驱动开发包括嵌入式Linux开发中必须面对的难点,比如PCMCIA、USB、I2C、视频、音频、闪存、无线通信等,揭示了许多内幕技术的秘密。对每种驱动程序,书中在剖析关键技术之外,还带你查看相关的内核源代码,提供完整的实例。时至今日,Linux操作系统以其跨平台、开源、支持众多应用软件和网络协议等优点,已经成为应用最广泛的开发平台。在这部贴近实战、实例丰富的著作中,世界上经验最丰富的Linux驱动程序开发者之一系统全面地阐述了如何为各种设备开发可靠的驱动程序。

目录

Chapter 1Introduction 1

Evolution 2

The GNU Copyleft 3

Kernel.org 4

Mailing Lists and Forums 4

Linux Distributions 5

Looking at the Sources 6

Building the Kernel 10

Loadable Modules 12

Before Starting 14

Chapter 2A Peek Inside the

Kernel 17

Booting Up 18

Kernel Mode and User Mode 30

Process Context and Interrupt Context 30

Kernel Timers 31

HZ and Jiffies 31

Long Delays 33

Short Delays 36

Pentium Time Stamp Counter 36

Real Time Clock 37

Concurrency in the Kernel 39

Spinlocks and Mutexes 39

Atomic Operators 45

Reader-Writer Locks 46

Debugging 48

Process Filesystem 49

Allocating Memory 49

Looking at the Sources 52

Chapter 3Kernel Facilities 55

Kernel Threads 56

Creating a Kernel Thread 56

Process States and Wait Queues 61

User Mode Helpers 63

Helper Interfaces 65

Linked Lists 65

Hash Lists 72

Work Queues 72

Notifier Chains 74

Completion Interface 78

Kthread Helpers 81

Error-Handling Aids 83

Looking at the Sources 85

Chapter 4Laying the Groundwork 89

Introducing Devices and Drivers 90

Interrupt Handling 92

Interrupt Context 92

Assigning IRQs 94

Device Example: Roller Wheel 94

Softirqs and Tasklets 99

The Linux Device Model 103

Udev 103

Sysfs, Kobjects, and Device Classes 106

Hotplug and Coldplug 110

Microcode Download 111

Module Autoload 112

Memory Barriers 114

Power Management 114

Looking at the Sources 115

Chapter 5Character Drivers 119

Char Driver Basics 120

Device Example: System CMOS 121

Driver Initialization 122

Open and Release 127

Exchanging Data 129

Seek 136

Control 137

Sensing Data Availability 139

Poll 139

Fasync 142

Talking to the Parallel Port 145

Device Example: Parallel Port LED

Board 146

RTC Subsystem 156

Pseudo Char Drivers 157

Misc Drivers 160

Device Example: Watchdog Timer 160

Character Caveats 166

Looking at the Sources 167

Chapter 6Serial Drivers 171

Layered Architecture 173

UART Drivers 176

Device Example: Cell Phone 178

RS-485 191

TTY Drivers 192

Line Disciplines 194

Device Example: Touch Controller 195

Looking at the Sources 205

Chapter 7Input Drivers 207

Input Event Drivers 210

The Evdev Interface 210

Input Device Drivers 216

Serio 217

Keyboards 217

Mice 220

Touch Controllers 227

Accelerometers 228

Output Events 228

Debugging 230

Looking at the Sources 231

Chapter 8The Inter-Integrated

Circuit Protocol 233

What’s I2C/SMBus? 234

I2C Core 235

Bus Transactions 237

Device Example: EEPROM 238

Initializing 238

Probing the Device 241

Checking Adapter Capabilities 244

Accessing the Device 244

More Methods 246

Device Example: Real Time Clock 247

I2C-dev 251

Hardware Monitoring Using LM-Sensors 251

The Serial Peripheral Interface Bus 251

The 1-Wire Bus 254

Debugging 254

Looking at the Sources 255

Chapter 9PCMCIA and Compact

Flash 257

What’s PCMCIA/CF? 258

Linux-PCMCIA Subsystem 260

Host Controller Drivers 262

PCMCIA Core 263

Driver Services 263

Client Drivers 264

Data Structures 264

Device Example: PCMCIA Card 267

Tying the Pieces Together 271

PCMCIA Storage 272

Serial PCMCIA 272

Debugging 273

Looking at the Sources 275

Chapter 10Peripheral Component

Interconnect 277

The PCI Family 278

Addressing and Identification 281

Accessing PCI Regions 285

Configuration Space 285

I/O and Memory 286

Direct Memory Access 288

Device Example: Ethernet-Modem Card 292

Initializing and Probing 293

Data Transfer 301

Debugging 308

Looking at the Sources 308

Chapter 11Universal Serial Bus 311

USB Architecture 312

Bus Speeds 314

Host Controllers 315

Transfer Types 315

Addressing 316

Linux-USB Subsystem 317

Driver Data Structures 317

The usb_device Structure 318

USB Request Blocks 319

Pipes 321

Descriptor Structures 322

Enumeration 324

Device Example: Telemetry Card 324

Initializing and Probing 325

Accessing Registers 332

Data Transfer 335

Class Drivers 338

Mass Storage 339

USB-Serial 345

Human Interface Devices 348

Bluetooth 348

Gadget Drivers 348

Debugging 349

Looking at the Sources 351

Chapter 12Video Drivers 355

Display Architecture 356

Linux-Video Subsystem 359

Display Parameters 361

The Frame Buffer API 362

Frame Buffer Drivers 365

Device Example: Navigation System 365

Console Drivers 380

Device Example: Cell Phone Revisited 382

Boot Logo 387

Debugging 387

Looking at the Sources 388

Chapter 13Audio Drivers 391

Audio Architecture 392

Linux-Sound Subsystem 394

Device Example: MP3 Player 396

Driver Methods and Structures 399

ALSA Programming 409

Debugging 412

Looking at the Sources 412

Chapter 14Block Drivers 415

Storage Technologies 416

Linux Block I/O Layer 421

I/O Schedulers 422

Block Driver Data Structures and

Methods 423

Device Example: Simple Storage

Controller 426

Initialization 427

Block Device Operations 430

Disk Access 432

Advanced Topics 434

Debugging 436

Looking at the Sources 437

Chapter 15Network Interface

Cards 439

Driver Data Structures 440

Socket Buffers 441

The Net Device Interface 443

Activation 444

Data Transfer 444

Watchdog 445

Statistics 445

Configuration 446

Bus Specific 448

Talking with Protocol Layers 448

Receive Path 448

Transmit Path 449

Flow Control 449

Buffer Management and Concurrency

Control 450

Device Example: Ethernet NIC 451

ISA Network Drivers 457

Asynchronous Transfer Mode 458

Network Throughput 459

Driver Performance 459

Protocol Performance 461

Looking at the Sources 461

Chapter 16Linux Without Wires 465

Bluetooth 467

BlueZ 469

Device Example: CF Card 471

Device Example: USB Adapter 471

RFCOMM 473

Networking 475

Human Interface Devices 477

Audio 477

Debugging 478

Looking at the Sources 478

Infrared 478

Linux-IrDA 480

Device Example: Super I/O Chip 482

Device Example: IR Dongle 483

IrComm 486

Networking 486

IrDA Sockets 487

Linux Infrared Remote Control 488

Looking at the Sources 489

WiFi 489

Configuration 490

Device Drivers 494

Looking at the Sources 496

Cellular Networking 496

GPRS 496

CDMA 498

Current Trends 500

Chapter 17Memory Technology

Devices 503

What’s Flash Memory? 504

Linux-MTD Subsystem 505

Map Drivers 506

Device Example: Handheld 506

NOR Chip Drivers 511

NAND Chip Drivers 513

User Modules 516

Block Device Emulation 516

Char Device Emulation 517

JFFS2 517

YAFFS2 518

MTD-Utils 518

Configuring MTD 519

eXecute In Place 520

The Firmware Hub 520

Debugging 524

Looking at the Sources 524

Chapter 18Embedding Linux 527

Challenges 528

Component Selection 530

Tool Chains 531

Embedded Bootloaders 531

Memory Layout 535

Kernel Porting 537

Embedded Drivers 538

Flash Memory 538

UART 539

Buttons and Wheels 539

PCMCIA/CF 540

SD/MMC 540

USB 540

RTC 541

Audio 541

Touch Screen 541

Video 541

CPLD/FPGA 542

Connectivity 542

Domain-Specific Electronics 542

More Drivers 543

The Root Filesystem 544

NFS-Mounted Root 544

Compact Middleware 546

Test Infrastructure 548

Debugging 548

Board Rework 549

Debuggers 550

Chapter 19Drivers in User

Space 551

Process Scheduling and Response Times 553

The Original Scheduler 553

The O(1) Scheduler 553

The CFS Scheduler 555

Response Times 555

Accessing I/O Regions 558

Accessing Memory Regions 562

User Mode SCSI 565

User Mode USB 567

User Mode I2C 571

UIO 573

Looking at the Sources 574

Chapter 20More Devices and

Drivers 577

ECC Reporting 578

Device Example: ECC-Aware Memory

Controller 579

Frequency Scaling 583

Embedded Controllers 584

ACPI 585

ISA and MCA 587

FireWire 588

Intelligent Input/Output 589

Amateur Radio 590

Voice over IP 590

High-Speed Interconnects 591

InfiniBand 592

RapidIO 592

Fibre Channel 592

iSCSI 593

Chapter 21Debugging Device

Drivers 595

Kernel Debuggers 596

Entering a Debugger 597

Kernel Debugger (kdb) 598

Kernel GNU Debugger (kgdb) 600

GNU Debugger (gdb) 604

JTAG Debuggers 605

Downloads 609

Kernel Probes 609

Kprobes 609

Jprobes 614

Return Probes 617

Limitations 619

Looking at the Sources 620

Kexec and Kdump 620

Kexec 620

Kexec with Kdump 621

Kdump 622

Looking at the Sources 629

Profiling 629

Kernel Profiling with OProfile 629

Application Profiling with Gprof 633

Tracing 634

Linux Trace Toolkit 634

Linux Test Project 638

User Mode Linux 638

Diagnostic Tools 638

Kernel Hacking Config Options 639

Test Equipment 640

Chapter 22Maintenance and

Delivery 641

Coding Style 642

Change Markers 642

Version Control 643

Consistent Checksums 643

Build Scripts 645

Portable Code 647

Chapter 23Shutting Down 649

Checklist 650

What Next? 651

Appendix ALinux Assembly 653

Debugging 659

Appendix BLinux and the BIOS 661

Real Mode Calls 662

Protected Mode Calls 665

BIOS and Legacy Drivers 666

Appendix CSeq Files 669

The Seq File Advantage 670

Updating the NVRAM Driver 677

Looking at the Sources 679

Index 681

……[看更多目录]

序言20世纪90年代末,我们IBM的一群同事进行了一项将Linux内核移植到一种智能手表上的工作。目标设备虽然微不足道,但是移植Linux的任务却相当艰巨。在当时,内核中还不存在MTD(MemoryTechnologyDevice,内存技术设备)子系统,这意味着在文件系统能够运行在这种手表的闪存之前,我们不得不从头开发必要的存储驱动器。由于当时内核的输入事件驱动接口尚未诞生,因此手表的触摸屏与用户应用程序的接口非常复杂。让XWindows运行在手表的LCD上十分困难,因为XWindows和帧缓冲设备驱动程序搭配得并不好。如果你戴着一块防水的Linux智能手表,却不能躺在浴缸里实时获得股票行情,那么这块手表还有什么用?Linux几年前就已集成了蓝牙技术,而当时我们却花费了数月的时间将一种专有的蓝牙协议栈移植到手表上,从而使得这种手表具备了Internet连网能力。电源管理系统可以让这种手表的电池多运行几个小时,因此我们又设计了一个省电方案。那时候,Linux红外项目Linux-Infrared还不稳定,我们十分小心地用红外协议栈,设计出使用红外键盘作为手表的数据输入设备。最后,由于当时还没有能应用于消费类电子产品的成型的编译器发行版,我们也不得不编译出编译器,并交叉编译出一个紧凑的应用程序集。

时光飞逝,当年嗷嗷待哺的企鹅宝宝已经成长为一名健壮的少年。过去我们编写了成千上万行代码并耗时一年完成的任务,若采用现在的内核,只需要几天的时间就可以完成。但是,要成为一名能巧妙地解决多种问题的高级内核工程师,你需要理解今天的Linux内核提供的各种功能和设施。

关于本书

在Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍。随着各种新技术的广泛应用,内核中新的设备驱动程序的开发工作正在稳步加速。最新的Linux内核支持多达70余种设备驱动程序的庞大家族。

本书主要讲解Linux设备驱动程序,介绍了目前内核所支持的主要设备类型的设计与开发,其中包括当年我在开发Linux-on-Watch项目时未遇到的设备。本书在讲解每种设备驱动程序家族的时候,先介绍与该驱动程序相关的技术,接着给出一个实际的开发例子,最后列出相关的内核源代码文件。在踏入Linux设备驱动程序领域之前,本书先介绍了内核以及Linux2.6的重要特性,重点讲解了设备驱动程序编写者感兴趣的内核知识。

文摘插图:

精通Linux驱动程序开发(英文版)(图灵程序设计丛书)

Linux has trekked many a terrain and is now state of the art, so you can use it as avehicle to understand operating system concepts, processor architectures, and evenindustry domains. When you learn a technique used by a device driver subsystem,look one level deeper and probe the underlying reasons behind that design choice. Wherever not explicitly stated, the text assumes the 32-bit x86 architecture. Thebook is, however, mindful of the fact that you are more likely to write device driversfor embedded devices than for conventional PC-compatible systems. The chapter onserial drivers, for example, examines two devices: a touch controller on a PC deriva-tive and a UART on a cell phone. Or the chapter on I2C device drivers looks at anEEPROM on a PC system and a Real Time Clock on an embedded device. The bookalso teaches you about the core infrastructure that the kernel provides for most driverclasses, which hides architecture dependencies from device drivers. Device driver debugging techniques are discussed near the end of the book inChapter 21, so you might find it worthwhile to forward to that chapter as you developdrivers while reading the book. This book is based on the 2.6 kernel, which has substantial changes across the boardfrom 2.4, touching all major subsystems. Hopefully, you have installed a 2.6,basedLinux on your system by now and started experimenting with the kernel sources. Eachchapter takes the liberty, of profusely pointing you to relevant kernel source files fortwo main reasons:

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
更多商品
商务馆学汉语近义词词典(商务馆学汉语系列辞书)
PhotoshopCS4图像处理与特效制作208例(附盘)(附赠DVD光盘1张)
Flex3宝典
汽车维修图解速成
3ds Max&Vray高精度场景模型库(第2辑)商业空间(附盘)(附赠DVD光盘2张)
Ubuntu Linux指南:基础篇(图灵系统与网络管理技术丛书)
3G知识问答
超越平凡的人文摄影
3ds Max&Vray高精度场景模型库(第1辑)居住空间(附盘)(附赠DVD光盘2张)
Photoshop:Lightroom2摄影师专业技法
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有