Kernel Module Programming and Character Drivers in Linux & Setting-Up FriendlyARM mini2440-td35 Board with Character Drivers for LED,Buttons,PWM,Keys.
This Training Module covers Kernel Module Programming aspect of Linux Kernel Space which is baseline for any Device Driver Implementation. It further covers Linux Character Driver Interface and how to write Character Drivers with Examples on mini2440-td35 board.
Duration : 24 Hours
Introduction to Embedded Linux and it’s components
Introduction to Linux Kernel Space Programming
What is Kernel Module ? Understanding Kernel module interface
How to write kernel module , implement “Hello World” module with Example
Logging messages in kernel space using printk with Example
How module is linked to kernel , kernel symbol table ? with Example
Linux Device Driver Architecture
Overview of VFS and it’s role in Character Driver
Device Files with Examples
Device Number Scheme with Example
Character Driver Registration
Various methods need to be implemented in Character Driver
Passing Data to/from Character Driver to User Space application
Using Wait Queues for Blocking
Using Data Structures Facilities provided by Kernel e.g. Linked List.
Interrupt Handling in Linux
Interrupt Architecture of ARM and How Linux Handles Interrupts
Setting-up mini2440 Board
ARM Cross Compile Toolchain Installation
Building U-Boot bootloader for min2440.
Understanding boot methods on mini2440.
Burning U-Boot Bootloader on NAND Flash
Compiling Linux-22.214.171.124 Kernel for mini2440
Setting-up Network Environment, TFTP and NFS Server Installation
Setting U-Boot Environment on mini2440 for downloading Linux Kernel zImage file
Setting U-Boot bootargs cmdline to mount root file system via Network on a directory of the Linux Host Machine.
Extracting root file system and setting proper permission for mounting via NFS.
Building LED,Buttons,PWM Kernel Modules/Drivers for ARM for mini2440 board
Installing them dynamically on Linux running on mini2440 Target using insmod
Testing the Device Driver by using provided “test-apps”
Modifying Driver to support Additional Functionality