- Saved searches
- Use saved searches to filter your results more quickly
- License
- PacktPublishing/Linux-Device-Driver-Development-Second-Edition
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Linux Device Drivers Development
- Saved searches
- Use saved searches to filter your results more quickly
- License
- PacktPublishing/Linux-Device-Drivers-Development
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Разработка драйвера устройств Linux
- Состав исполнителей
- Об авторе
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Linux Device Driver Development — Second Edition, published by Packt
License
PacktPublishing/Linux-Device-Driver-Development-Second-Edition
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Linux Device Driver Development-Second Edition
This is the code repository for Linux Device Driver Development-Second Edition, published by Packt.
Everything you need to start with device driver development for Linux kernel and embedded Linux
Linux is by far the most-used kernel on embedded systems. Thanks to its subsystems, the Linux kernel supports almost all of the application fields in the industrial world. This updated second edition of Linux Device Driver Development is a comprehensive introduction to the Linux kernel world and the different subsystems that it is made of, and will be useful for embedded developers from any discipline.
This book covers the following exciting features:
- Download, configure, build, and tailor the Linux kernel
- Describe the hardware using a device tree
- Write feature-rich platform drivers and leverage I2C and SPI buses
- Get the most out of the new concurrency managed workqueue infrastructure
- Understand the Linux kernel timekeeping mechanism and use time-related APIs
- Use the regmap framework to factor the code and make it generic
- Offload CPU for memory copies using DMA
- Interact with the real world using GPIO, IIO, and input subsystems
If you feel this book is for you, get your copy today!
Instructions and Navigations
All of the code is organized into folders. For example, Chapter02.
The code will look like the following:
Following is what you need for this book: This Linux OS book is for embedded system and embedded Linux enthusiasts/developers who want to get started with Linux kernel development and leverage its subsystems. Electronic hackers and hobbyists interested in Linux kernel development as well as anyone looking to interact with the platform using GPIO, IIO, and input subsystems will also find this book useful.
With the following software and hardware list you can run all code files present in the book (Chapter 1-17).
Software and Hardware List
Chapter | Software required | OS required |
---|---|---|
1-17 | A computer with good network bandwidth and enough space and RAM to download and build Linux kernel | Preferably any Debian distribution |
1-17 | Any cortex -A embedded board available on market (for example UDOO quad, Jetson nano, Rasberry Pi, Beagle bone | Either a yocto/Buildroot ditribution or any embedded or vendor-specific OS (for example Rasbian for Rasberry Pi) |
We also provide a PDF file that has color images of the screenshots/diagrams used in this book. Click here to download it.
- Page 45 (Paragraph 5, line 2,3): modeprob -r should be modprob -r
- Page 48 (Paragraph 2, line 8): if(wite(fd, buf, 1) < 0) < should be if(write(fd, buf, 1) < 0)
John Madieu is an embedded Linux and kernel engineer living in Paris, France. His main activity consists of developing device drivers and Board Support Packages (BSPs) for companies in domains including IoT, automation, transport, healthcare, energy, and the military. John is the founder and chief consultant of LABCSMART, a company that provides training and services for embedded Linux and Linux kernel engineering. He is an open source and embedded systems enthusiast, convinced that it is only by sharing knowledge that we can learn more. He is passionate about boxing, which he practiced for 6 years professionally, and continues to channel this passion through training sessions that he provides voluntarily.
Other books by the author
If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.
About
Linux Device Driver Development — Second Edition, published by Packt
Linux Device Drivers Development
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).
- 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
John Madieu is an embedded Linux and kernel engineer living in France, in Paris. His main activities consist of developing drivers and Board Support Packages (BSP) for companies in domains such as automation, transport, healthcare, energy, and the military. John works at EXPEMB, a French company that is a pioneer in electronical board design based on computer-on-module, and in embedded Linux solutions. He is an open source and embedded systems enthusiast, convinced that it is only by sharing knowledge that one learns more.
He is passionate about boxing, which he practised for 6 years professionally, and continues to transmit this passion through sessions of training that he provides voluntarily.
- Introduction to Kernel Development
- Device Driver Basis
- Kernel Facilities and Helper Functions
- Character Device Drivers
- Platform Device Drivers
- The Concept of Device Tree
- I2C Client Drivers
- SPI Device Drivers
- Regmap API — A Register Map Abstraction
- IIO Framework
- Kernel Memory Management
- DMA – Direct Memory Access
- Linux Device Model
- Pin Control and GPIO Subsystem
- GPIO Controller Drivers – gpio_chip
- Advanced IRQ Management
- Input Devices Drivers
- RTC Drivers
- PWM Drivers
- Regulator Framework
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Linux Device Drivers Development, published by Packt
License
PacktPublishing/Linux-Device-Drivers-Development
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Linux Device Drivers Development
This is the code repository for Linux Device Drivers Development, published by Packt. It contains all the supporting project files necessary to work through the book from start to finish.
Instructions and Navigation
All of the code is organized into folders. Each folder starts with a number followed by the application name. For example, Chapter02.
The code will look like the following:
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).
msleep(2000); wake_up_interruptible(&my_data->my_wq);
should include an extra line of code in between as shown here:
msleep(2000); sleep = 1; wake_up_interruptible(&my_data->my_wq);
If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.
About
Linux Device Drivers Development, published by Packt
Разработка драйвера устройств Linux
Все права защищены. Никакая часть этой книги не может быть воспроизведена, сохранена в поисковой системе или передана в любой форме или любыми средствами без предварительного письменного разрешения издателя, за исключением случаев кратких цитат, встроенных в критические статьи и обзоры.
При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.
Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.
Опубликовано Packt Publishing Ltd.
Состав исполнителей
Автор Джон Мадьё Рецензент Редактор выпуска Мита Раджани Редактор разработки содержания Абхишек Джадхав Технический редактор Маниш Д. Шанбханг Литературный редактор Safis Editing Джулиана Нейр Координатор проекта Джуди Хосе Корректор Safis Editing Составитель указателя Теджал Сони Дарувала Координатор производства Апарна Бхагат Графика Кирк Д’Пенья Вайбхав Бхембре Энтони Д’Атри Сьюзан Д’Атри