First, write in front:
Qualified Linux driver engineers need to meet the following conditions, the goal of this article is to present these conditions to the reader
1, have a certain hardware foundation, understand Sram,flash,sdram, disk read and write way, understand UART,IIC,USB and other device interface, understand the polling, interrupt, DMA principle, the working mode of PCI bus and CPU memory Management Unit (MMU) and so on.
2, have a certain C language Foundation, be able to skillfully use the structure, pointers, function pointers, as well as the dynamic application and release of memory.
3, there is a certain Linux kernel Foundation, the kernel part is difficult, at least should understand the driver and the kernel interface.
4, there are a number of tasks concurrency and synchronization Control Foundation, in the drive will use a lot of spin lock, mutual exclusion, signal volume, waiting queue and other concurrency and synchronization control mechanism.
Second, the development environment:
Ubuntu14.04lts (virtual machine inconvenient, directly installs Ubuntu), OK6410 Development Board (although a bit old)
Tool chain installation (see blog post ")
NFS and TFTP installation (see blog post ")
III. Overview of device drivers
1. Single task environment and multi-task operating system environment
2, classification: Character equipment, block equipment, network equipment
3. The relationship between hardware and software system and drive
Four, the Hardware Foundation
1. Universal processor
Chart
2. DSP
3. Memory
4. Interface and Bus
5, CPLD,FPGA
6. Schematic basis
Five, Linux kernel analysis
1. Five main pillars
2. Kernel Source code directory structure
3. Core Components
Process scheduling, memory management, virtual file system, network interface, process communication
4. Kernel Compilation and loading
Compiling: Multiple compilation methods analysis
Makefile ""
5. Kernel Boot
6. C Programming under Linux
Six, device drive in-depth
1. Kernel module
2. File system and Equipment file system
3. Concurrency control
4. Blocking and non-blocking I/O
5. Asynchronous notification and asynchronous I/O
6. Interrupts and Clocks
7. Memory and I/O access
8. Application: Android
Seven, device driver example
1. Character device driver
2, block device drive
3. Network device driver
"Original"--Linux driver Development--"continuous finishing"