A Tutorial how to get started with Linux Kernel Modules and Linux Drivers.
Linux Driver Tutorial
Here you can find examples for simple Linux Kernel Modules and Linux Drivers.
Preparation
I used a Raspberry Pi 3 to develop and test my modules and drivers. To compile them, you need to install the Kernel headers on your Pi. On Raspbian you can do this with the following command:
bash 复制
sudo apt update
sudo apt install raspberrypi-kernel-headersRaspberry Pi OS is only installs the latest kernel headers. So, make sure, you are running the latest kernel. You can do this by running:
You also need the build utils (make, gcc, ...) but they come preinstalled on Raspbian.
Content
In this repo you can find examples for:
Simple Kernel Module
Device Numbers and Device Files
Create device file in driver and callbacks
GPIO Driver
Text LCD Driver
PWM Module
Temperature Sensor (I2C)
Timer in Linux Kernel Modules
High Resolution Timer in Linux Kernel Modules
Accessing SPI with a Linux Kernel Module (BMP280 sensor again)
Using a GPIO Interrupt in a Linux Kernel Module
Using Parameters in a Linux Kernel Module
IOCTL in a Linux Kernel Module
Threads in a Linux Kernel Module
Sending a signal from a Linux Kernel Module to an userspace application
The poll callback
Waitqueues in a Linux Kernel Module
Create procfs entries from a Linux Kernel Module
Create sysfs entries from a Linux Kernel Module
Parse the device tree from a Linux Kernel Module to get the deivce properties of a specific device
Device Tree GPIO Driver
Device Tree Driver for I2C Device
Dynamical memory management in a Linux Kernel module
Serial (UART) Driver
Industrial IO compatible driver for an ATMEGA I2C ADC
Device Tree SPI Driver (IIO compatible driver for Atmega SPI ADC)
Misc Device
Mutex for exclusive access to shared resource
Completions for synchronisation
Direct Memory Access (DMA) memcopy example
Accessing files form a Linux Driver
The mmap callback
Linked Lists
Registering device numbers, read and write callback in character devices Take 2
Private Data in struct file
I2C Device Driver without Device Tree
Sysfs Class
Kernel Log levels
More Information
For more information about my Linux Driver examples check out my videos and my playlist
Support me
If you want to support me, you can buy me a coffee buymeacoffee.com/johannes4linux .