#1b, 2a,3a Dhananjaya Chambers, Sarathi Studio Lane, Ameerpet, Hyderabad. For more details logon to www.techveda.org, Contacts: Ph: 040-66100265 Email: [email protected]
1
A revolution that will forever change the way Linux is understood
Linux Kernel & Embedded Developer
A Must Do Linux Program - A collective response from our participants
#1b, 2a,3a Dhananjaya Chambers, Sarathi Studio Lane, Ameerpet, Hyderabad. For more details logon to www.techveda.org, Contacts: Ph: 040-66100265 Email: [email protected]
Program Overview
Rated as the best program ever designed for all aspiring system programmers by our clients and participants. The program looks into finer aspects of the Linux kernel, its modules and submodules and makes Network Programming, Device Drivers, Embedded and Real-Time Linux vividly clear and interesting.
This is the first ever program in India designed on the Linux 2.6.x kernel
At the end of the Program, Participants will learn
• Linux Programming environment• Linux kernel Internals and Programming• Implementation and Procedural details for writing Driver programs on Linux subsystems• Network Programming and Advanced Linux Networking• Open Source learning Technique• Building and Deploying portable kernel and applications• Debugging target kernel and applications• Optimization techniques• Making kernel meet Real-Time requirements• Writing Real-Time programs and Controller drivers• Understanding firmware to handle MTD
Participants
Attendees with a passion for system programming are highly appreciated. A natural inclination towards practical learning is highly required.
Prerequisite
Good knowledge of programming using C and understanding of generic OS concepts
Training Methodology
Class room training combined with Lab exercisesSpecially designed case studiesUsage of target boards for practical learningCommunity learning and participation
Trainer
Mr Raghu Bharadwaj, a seasoned system side programmer on Linux with an experience spanning over 6 years. Possessing excellent domain expertise and in depth technical faculty in the
area of system software like Device Drivers, Real Time Drivers, Network Security Applications, Embedded Linux, Linux based RTOS etc. He is one of the leading corporate trainers in India and boosts of clients like: Defense labs of India, GE, Server Engines, Sipera Systems, Linkwell Telesystems, Xilinx and many more.
Duration
3 months in public program modeCustomized scheduling only for Corporates
Program Contents
• GNU ‘C’ & Linux • Free and Open Source • Proprietory Vs Open Source • Free Vs Open Model • What do they mean to a Devoloper?
• Programming Standards • ANSI • POSIX
• Linkers And Loaders • Libraries • Static Libraries • Dynamic Libraries • Linking using Third party libraries.
• Inline Assembly • Understanding Assembly Equivalent C- source.. • Implementing Inline Assembly. • Advantages of Inline Assembly.
• Build Tools • Make Tool • Autoconf • Automake
• Dynamic Memory • Need of Dynamic Memory • Design of Application using • Dynamic Memory • Memory overrun-underrun
• Debugging Techniques. • GDB • Electric Fence • Valgrind • gprof, gcov
• Linux Programming • System Call • System call Defined
Linux Kernel & Embedded Developer
2
#1b, 2a,3a Dhananjaya Chambers, Sarathi Studio Lane, Ameerpet, Hyderabad. For more details logon to www.techveda.org, Contacts: Ph: 040-66100265 Email: [email protected]
• System call Vs API • Implementation of a new System Call.
• Process Management • Process Creation • Process states scheduling • Process Descriptor structure in kernel. • Architecture of kernel process scheduler.
• Virtual Memory SubSystem • Responsibilities of Memory • Management Module. • Memory Allocation and De-allocation System call. • Process Organization in Memory. • Address Translation
• Inter Process Communication & Signals • Signals • Kernel IPC Mechanism • Pipes • Message Queues • Shared Memory • Semaphores
• Linux Network Programming • Connection-Oriented Application Development • The TCP/IP Socket model • Establishing a connection • Performing data transfer • Client programming • Server programming
• Connectionless Application Development • UDP Programming • Data transfer • Broadcasting and multicasting
• Concurrency • Processes and threads • Posix threads • Concurrent servers
• Client/Server application Architecture • Connectionless/connection-oriented I/O models • Multithreaded vs multi-process • application designs
• UDP: User Datagram Protocol • UDP Header • UDP messages • UDP applications
• TCP: Transmission Control Protocol • TCP services • TCP header • TCP connection management
• TCP data flow • TCP performance and features • IP: Internet Protocol • IP Header • IP Routing • ARP: Address Resolution Protocol • ICMP: Internet Control Message Protocol • IPV6
• Advanced Linux Networking • Sysctl • Advanced Sockets – Internals • Socket Data Structures • Registering protocol Families • Multiplexing and Demultiplexing Operations • Network Stack initialization • Sockfs • Socket Buffer • Packet Family • Netlink and RTNetlink • Packet Filtering • Net-filter extensions • Kernel structures for Physical layer
• Kernel Programming & Device Drivers • Linux Module Programming • Accessing kernel data structures • Kernel Data Types • Kernel Hotplug • Device Model • Reserving I/O Ports • Kernel Synchronization • Kernel Interrupt Handling • Kernel Time Keeping • Accessing the Performance Counters • Kernel Memory and Implementation • File Systems • Deferred Operations • Kernel Threads • Binary File Formats • Dynamic Kernel Probes
• The VFS Interface • Introduction • Need for a VFS layer • In-core and on-disk data structures • The Big Picture
• Experiments: • Registering a file system • Associating inode operations with a directory inode • The lookup function • Creating a file • Implementing read and write • Modifying read and write • A better read and write
3
#1b, 2a,3a Dhananjaya Chambers, Sarathi Studio Lane, Ameerpet, Hyderabad. For more details logon to www.techveda.org, Contacts: Ph: 040-66100265 Email: [email protected]
• Creating a directory • A look at how the dcache entries are chained together • Implementing deletion
• Character Devices • Driver/ Re-entrancy • Lseek/ioctl/fasync • Blocking I/O • Asynchronous I/O • Hotplug • Kernel Timers • Memory Mapping • Accessing Device I/O • Interrupt Handling• Block Device • Linux Block Device Architecture • “Bio” Structure • Block I/O Scheduler • Example Block Driver
• Network Device • Configuring an Interface • Driver writing basics • Registering a new driver • The sk_buff structure • Towards a meaningful driver • Statistical Information
• BUS ACCESS • PCI • USB • Serial• Introduction to Embedded Linux • What is an Embedded system • What is Embedded Linux • Why do you need to use Linux in Embedded systems
A brief description on ARM architecture • Embedded System Booting Process • How an embedded system starts up(Bootloader, OS,...) • Linux Booting process • Boot loader • Linux kernel • Root file system• Building a compiler tool-chain (Cross compiler) • What is a toolchain • Building toolchains for ARM • binutils • glibc , uClibc • gcc • Building an Embedded Linux • Boot Loader
• Linux Kernel • Requirements • Obtaining the source Code • Configuring linux kernel according to the needs • Compiling the kernel
• Root File System • What is a Root file system • Linux File Hirarchy system (FHS) • Building a Root File System
• Role of a Bootloader• A Universal Bootloader: Das U-Boot• Porting U-Boot• Other Bootloaders• Redboot• blob
Porting Linux kernel and root file system to the target boards• Booting the kernel • Normal Booting • Booting via TFTP • mounting the root filesystem via NFS • Building and Deploying Embedded Applications • A packet sniffer application • An embedded Web Server • Background on HTTP • A Simple embedded web server • An LCD control application • Embedded Storage • Flash Map • MTD-Memory Technology Device • MTD Architecture • Mtdutils Package • Embedded File Systems • Space and Speed Optimization Techniques: • Optimizing the Linux kernel image • Optimizing Root File System • Optimizing Applications • Debugging Techniques: • Kernel Debugging Tools • kgdb • kdb • Application Debugging Tools • gdb • gdbserver
• ARM and PowerPc emulators: • What are emulators • Qemu, an ARM and PowerPc emulator • PearPC, an architecture independent PowerPC platform emulator
4
• Real-Time Linux • Real-Time Operating System • Linux and Real-Time • Real-Time Programming in Linux • Hard Real-Time Linux
• Porting Applications to Real
Time
Linux
•
Architectural Comparison
•
Application Porting Roadmap
•
Programming with Pthreads