Linux Kernel Programming and Driver Design. PKU course notes and example.
Title | Subject |
---|---|
Week 0 | Compile Linux 4.19.23 kernel on Ubuntu |
Week 1 | Build Basic Linux Kernel |
Lab 1 | Kernel Debug |
Week 3 | Linux Process |
Lab 2 | Add Kernel Patch and Read Process Info Module |
Week 5 | No homework ʕ•͡ᴥ•ʔ |
Week 6 | No homework maybe.. ʕ•͡ᴥ•ʔ ?? |
Week 7 | Synchronization Mechanism - RCU |
Week 8 | No homework (* ̄▽ ̄)/‧☆"'-.,_,.-'"-.,_☆ |
Week 9 | 5/1 Holiday |
Lab 3 | Observe Memory Mapping and Find Physical Address |
Lab 4 | Docker Container and Resource Limitation (TODO: exercise 2 and notes) |
And also Direct Register Access in user space
# Quick start on Raspberry Pi (make sure you've set up the environment as mine)
# Copy the file to the home dir of raspberry pi (you can replace raspberrypi.local with the IP address)
scp -r Subject/Final pi@raspberrypi.local:~/KernelGPIO
# connect to raspberry pi
ssh pi@raspberrypi.local
# compile and install the rpi_7seg module
cd KernelGPIO/Code_KernelDelayThread_UseGPIO_H
./smart_install.sh
# play a dice!
cd ../TestScriptsForKernelSysfs
./dice.py 6
- Linux Kernel Overview
- Linux Kernel Programming
- Linux Process
- Linux Process Scheduling
- Linux Kernel Synchronization
- Linux Interrupt, Exception and System Call - Skip system call now (TBD)
- Linux Memory Management (TBD)
- Virtual Memory (Maybe)
- Linux File System
- Virtualization and Container
- Linux Kernel Development 3ed.
- Understanding the Linux Kernel (O'Reilly) (深入理解Linux内核)
- Linux Device Drivers 3ed. (O'Reilly)
- Linux Kernel in a Nutshell (O'Reilly)
- Is Parallel Programming Hard (深入理解並行編程)
- Understanding Linux Network Internals (Linux網路技術內幕)
- 奔跑吧Linux內核
- Github - figozhang/Running-LinuxKernel
- Introduction to Computer Organization: ARM Assembly Language Using the Raspberry Pi
- linux-insides - A book-in-progress about the linux kernel and its insides
- The Linux Kernel documentation