๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Linux Device Drivers Development

โœ Scribed by Madieu, John


Publisher
Packt Publishing
Year
2017
Tongue
English
Leaves
570
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


Cover -- Title Page -- Copyright -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Dedication -- Table of Contents -- Preface -- Chapter 1: Introduction to Kernel Development -- Environment setup -- Getting the sources -- Source organization -- Kernel configuration -- Build your kernel -- Kernel habits -- Coding style -- Kernel structures allocation/initialization -- Classes, objects, and OOP -- Summary -- Chapter 2: Device Driver Basis -- User space and kernel space -- The concept of modules;Learn to develop customized device drivers for your embedded Linux system About This Book Learn to develop customized Linux device drivers Learn the core concepts of device drivers such as memory management, kernel caching, advanced IRQ management, and so on. Practical experience on the embedded side of Linux Who This Book Is For This book will help anyone who wants to get started with developing their own Linux device drivers for embedded systems. Embedded Linux users will benefit highly from this book. This book covers all about device driver development, from char drivers to network device drivers to memory management. What You Will Learn Use kernel facilities to develop powerful drivers Develop drivers for widely used I2C and SPI devices and use the regmap API Write and support devicetree from within your drivers Program advanced drivers for network and frame buffer devices Delve into the Linux irqdomain API and write interrupt controller drivers Enhance your skills with regulator and PWM frameworks Develop measurement system drivers with IIO framework Get the best from memory management and the DMA subsystem Access and manage GPIO subsystems and develop GPIO controller drivers In Detail Linux kernel is a complex, portable, modular and widely used piece of software, running on around 80% of servers and embedded systems in more than half of devices throughout the World. Device drivers play a critical role in how well a Linux system performs. As Linux has turned out to be one of the most popular operating systems used, the interest in developing proprietary device drivers is also increasing steadily. This book will initially help you understand the basics of drivers as well as prepare for the long journey through the Linux Kernel. This book then covers drivers development based on various Linux subsystems such as memory management, PWM, RTC, IIO, IRQ management, and so on. The book also offers a practical approach on direct memory access and network device drivers. By the end of this book, you will be comfortable with the concept of device driver development and will be in a position to write any device driver from scratch using the latest kernel version (v4.13 at the time of writing this book). Style and approach A set of engaging examples to develop Linux device drivers Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com . If ...

โœฆ Table of Contents


Cover --
Title Page --
Copyright --
Credits --
About the Author --
About the Reviewer --
www.PacktPub.com --
Customer Feedback --
Dedication --
Table of Contents --
Preface --
Chapter 1: Introduction to Kernel Development --
Environment setup --
Getting the sources --
Source organization --
Kernel configuration --
Build your kernel --
Kernel habits --
Coding style --
Kernel structures allocation/initialization --
Classes, objects, and OOP --
Summary --
Chapter 2: Device Driver Basis --
User space and kernel space --
The concept of modules Module dependenciesdepmod utility --
Module loading and unloading --
Manual loading --
modprobe and insmod --
/etc/modules-load.d/.conf --
Auto-loading --
Module unload --
Driver skeletons --
Module entry and exit point --
__init and __exit attributes --
Module information --
Licensing --
Module author(s) --
Module description --
Errors and message printing --
Error handling --
Handling null pointer errors --
Message printing aฬ‚#x80
#x93
printk() --
Module parameters --
Building your first module --
The module's makefile In the kernel treeOut of the tree --
Building the module --
Summary --
Chapter 3: Kernel Facilities and Helper Functions --
Understanding container_of macro --
Linked lists --
Creating and initializing the list --
Dynamic method --
Static method --
Creating a list node --
Adding a list node --
Deleting a node from the list --
Linked list traversal --
Kernel sleeping mechanism --
Wait queue --
Delay and timer management --
Standard timers --
Jiffies and HZ --
Timers API --
Timer setup initialization --
Standard timer example High resolution timers (HRTs)HRT API --
HRT setup initialization --
Dynamic tick/tickless kernel --
Delays and sleep in the kernel --
Atomic context --
Nonatomic context --
Kernel locking mechanism --
Mutex --
Mutex API --
Declare --
Acquire and release --
Spinlock --
Spinlock versus mutexes --
Work deferring mechanism --
Softirqs and ksoftirqd --
ksoftirqd --
Tasklets --
Declaring a tasklet --
Enabling and disabling a tasklet --
Tasklet scheduling --
Work queues --
Kernel-global workqueue aฬ‚#x80
#x93
the shared queue --
Dedicated work queue Programming syntaxPredefined (shared) workqueue and standard workqueue functions --
Kernel threads --
Kernel interruption mechanism --
Registering an interrupt handler --
Interrupt handler and lock --
Concept of bottom halves --
The problem aฬ‚#x80
#x93
interrupt handler design limitations --
The solution aฬ‚#x80
#x93
bottom halves --
Tasklets as bottom halves --
Workqueue as bottom halves --
Softirqs as bottom half --
Threaded IRQs --
Threaded bottom half --
Invoking user-space applications from the kernel --
Summary --
Chapter 4: Character Device Drivers

โœฆ Subjects


Application software--Development;Electronic books;Linux;Application software -- Development


๐Ÿ“œ SIMILAR VOLUMES


Linux Device Drivers Development
โœ John Madieu ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Packt Publishing ๐ŸŒ English

Linux kernel is a complex, portable, modular and widely used piece of software, running on around 80% of servers and embedded systems in more than half of devices throughout the World. Device drivers play a critical role in how well a Linux system performs. As Linux has turned out to be one of the m

Linux Device Drivers Development
โœ John Madieu ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Packt Publishing ๐ŸŒ English

Linux kernel is a complex, portable, modular and widely used piece of software, running on around 80% of servers and embedded systems in more than half of devices throughout the World. Device drivers play a critical role in how well a Linux system performs. As Linux has turned out to be one of the m

Linux Device Drivers Development
โœ Madieu, John ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Packt Publishing ๐ŸŒ English

Cover -- Title Page -- Copyright -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Dedication -- Table of Contents -- Preface -- Chapter 1: Introduction to Kernel Development -- Environment setup -- Getting the sources -- Source organization -- Kernel c

Linux Device Drivers Development: Develo
โœ John Madieu ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Packt Publishing ๐ŸŒ English

Key Features โ€ข Learn to develop customized Linux device drivers โ€ข Learn the core concepts of device drivers such as memory management, kernel caching, advanced IRQ management, and so on. โ€ข Practical experience on the embedded side of Linux Book Description Linux kernel is a complex, portable,

Linux Device Driver Development Cookbook
โœ Rodolfo Giometti ๐Ÿ“‚ Library ๐Ÿ“… 2019 ๐Ÿ› Packt Publishing ๐ŸŒ English

Over 30 recipes to develop custom drivers for your embedded Linux applications. Key Features - Use Kernel facilities to develop powerful drivers - Via a practical approach, learn core concepts of developing device drivers - Program a custom character device to get access to kerne