Embedded Linux

Overview
STEPS TO LEARN EMBEDDED LINUX:
Provide an understanding of essentials of embedded Linux
Consider dual booting as this would help in letting to learn windows.
Describe the concept of ARM9
Introduce the concept of embedded Linux
Explain porting of Linux kernel and root file system to ARM9 board.
Describe the implementation of the application program on ARM9 board.
Curriculum
GNU Project/ GPL Licensing
Evolution of Linux & Development Model
Device Identities in Linux- Partitioning Schema
History of Linux- Types of Kernel-The Linux kernel
Kernel Architecture
Basic Shell Commands- Bash Shell Essentials
Creating Makefiles
BIOS Level- Boot Loader- Setup, startup_32 functions
The start_kernel() function
Virtual File System & its role
Files associated with a process- System Calls
Process Defined
Process Descriptor Structures in the kernel
Process States- Process Scheduling
Process Creation- System calls related to process management
Defining and Creating secondary memory areas
Memory allocation & deallocation system calls malloc, calloc, alloca, free
Demand Paging defined
Process Organization in Memory
Address Translation and page fault handling
Virtual Memory Management
Creating multiple threads
Parent synchronization with other Threads
Pipes, Fifo’s, signals- System-V IPC’s
Message queues- shared memory- Semaphores
An Overview
System calls related to TCP and UDP sockets
TCP Server Client Programming
UDP Server Client Programming
Netlink socket interface
Strace: Tracing System calls
ltrace: Tracing library calls
Tools used to detect memory access error and Memory leakage in Linux: mtrace
Using gdb and ddd utilities
Core Dump Analysis etc.
Role of the Device Drivers
Splitting the kernel
Classes of devices and modules
Kernel Architecture or Model
Kernel modules
Introduction to Modules & Device Drivers
Modules Defined
Types of modules in the kernel
Writing your first kernel module
Module related commands
Kernel module vs Applications
User space vs kernel space
Statically linked vs Dynamically linked drivers/modules
Exporting symbols from modules
Concurrency in the kernel
Module Parameters
Version dependency
Kernel Module Programming
Lab exercises
Creating proc file system entries
Making read & write operations on proc entries
Lab exercises.
Registering a character device driver
File operations
The file structure
Devfs/ Iseek/ ioctl
Blocking, non blocking and asynchronous operations
Programming with ioctl(), mmap()
Lab exercises
Using IO Ports
Installing and implementing an interrupt handler
Tasklets and Bottom halves
Task queues, Work queues- Lab exercises
Block drivers structures- Flash memory Drivers
Lab exercisesEmbedded Linux
The net device structure in detail.
Making changes in Ethernet drivers in Kernel Source
Lab exercises