Mastering Linux Device Driver Development

Mastering Linux Device Driver Development

Linux is one of the fastest-growing operating systems in the world, and in the last few years, the Linux kernel has evolved significantly to support a wide variety of embedded devices, with its improved subsystems and a lot of new features.

Mastering Linux Device Driver Development provides complete coverage of kernel topics such as video and audio frameworks that usually go unaddressed. You’ll delve into some of the most complex and impactful Linux kernel frameworks, such as PCI, ALSA for SoC, and Video4Linux2, gaining expert tips and best practices along the way. In addition to this, you’ll learn how to leverage frameworks such as NVMEM and Watchdog. Once the book has got you started with Linux kernel helpers, you’ll gradually progress to working with special device types such as Multi-Function Devices (MFDs), followed by video and audio device drivers.

By the end of this book, you’ll be able to write rock-solid device drivers and integrate them with some of the most complex Linux kernel frameworks, including V4L2 and ALSA SoC.

Who this book is for

This book is essentially intended for embedded enthusiasts and developers, Linux system administrators, and kernel hackers. Whether you are a software developer, a system architect, or a maker (electronics hobbyist), looking to dive into Linux driver development, this book is for you.

What this book covers

Chapter 1, Linux Kernel Concepts for Embedded Developers, walks through the Linux kernel helpers for locking, blocking I/O, deferring work, and interrupt management.

Chapter 2, Leveraging the Regmap API and Simplifying the Code, provides an overview of the Regmap framework and shows you how to leverage its APIs to ease interrupt management and abstract register access.

Chapter 3, Delving into the MFD Subsystem and Syscon API, focuses on MFD drivers in the Linux kernel, their APIs, and their structures, as well as introducing the syscon and simple-mfd helpers.

Chapter 4, Storming the Common Clock Framework, explains the Linux kernel clock framework and explores both producer and consumer device drivers, as well as their device tree bindings.

Chapter 5, ALSA SoC Framework – Leveraging Codec and Platform Class Drivers, discusses ALSA driver development for both codec and platform devices and introduces concepts such as kcontrol and digital audio power management (DAPM).

Chapter 6, ALSA SoC Framework – Delving into the Machine Class Drivers, dives into ALSA machine class driver development and shows you how to bind both codec and platform together and how to define audio routes.

Chapter 7, Demystifying V4L2 and Video Capture Device Drivers, describes V4L2’s key concepts. It focuses on bridge video devices, introduces the concept of subdevices, and covers their respective device drivers.

Chapter 8, Integrating with V4L2 Async and Media Controller Frameworks, introduces the concept of asynchronous probing so that you don’t have to care about bridge and subdevice probing order. Finally, this chapter introduces media controller frameworks in order to provide video routing and video pipe customizations.

Chapter 9, Leveraging V4L2 API from the User Space, closes our teaching series on V4L2 and deals with V4L2 from the user space. It first teaches you how to write C code in order to open, configure, and grab data from a video device. It then shows you how to write as little code as possible by leveraging user-space video-related tools such as v4l2-ctl and media-ctl.

Chapter 10, Linux Kernel Power Management, discusses power management on Linux-based systems and teaches you how to write power-aware device drivers.

Chapter 11, Writing PCI Device Drivers, deals with the PCI subsystem and introduces you to its Linux kernel implementation. This chapter also shows you how to write PCI device drivers.

Chapter 12, Leveraging the NVMEM Framework, describes the Linux Non-Volatile Memory (NVEM) subsystem. It first teaches you how to write both provider and consumer drivers as well as their device tree bindings. Then, it shows you how to take the most out of the device from user space.

Chapter 13, Watchdog Device Drivers, provides an accurate description of the Linux kernel Watchdog subsystem. It first introduces you to Watchdog device drivers and gradually takes you through the core of the subsystem, introducing some key concepts such as pre-timeout and governors. Toward the end, this chapter teaches you how to manage the subsystem from the user space.

Chapter 14, Linux Kernel Debugging Tips and Best Practices, highlights the most-used Linux kernel debugging and tracing techniques using kernel-embedded tools such as ftrace and oops message analysis.


  • 关于本书的内容介绍、目录、详情等请在 AmazonGoolge Books 等售书网站搜索查看,本站仅展示封面作为参考。
  • 如无特殊说明,本站提供的所有pdf均为文字版(aka True PDF or Digitally Created PDF)。
  • 本站已经列出的所有图书均可以找到。
  • 收到PDF链接之后建议尽快下载或者保存到自己的百度网盘,防止链接过期失效。


扫描下方二维码添加微信号 bookyage 回复本书编号 182065 即可,我们会尽快(一般24小时之内)将本书PDF文件以百度网盘链接的形式发送给您。