Mastering Embedded Linux
60 Hrs
Program Objective:
To equip learners with industry-relevant technical skills and enhance their job readiness through project-based learning, hands-on tool exposure, and real-world application deployment, thereby preparing them for successful employment in core domain areas
Modules
Linux System Programming – 30 Hrs:
- Essential Linux Commands and Shell Scripting
- System Programming in Linux
Embedded Linux – 30 Hrs:
- Introduction to Embedded Linux
- Linux Device Drivers
- Kernel, Bootloader and Build root
Project Stream:
- Linux, System Programming, Embedded Linux, Device Drivers
Experiential Project Based Learning:
Embedded Linux with Pi & Sensors
Project Stream:
- Linux, System Programming, Embedded Linux, Device Drivers
Experiential Project Based Learning:
Embedded Linux with Pi & Sensors
Program Outcomes
- Demonstrate proficiency in Linux system administration and scripting.
- Develop and debug system-level and kernel-space programs in Linux.
- Create and manage Linux device drivers and kernel
- Build a custom embedded Linux system using Build root and bootloaders.
- Interface embedded hardware and peripherals with Raspberry Pi for automation projects.
- Apply knowledge to real-world projects, preparing them for roles in embedded systems and Linux Development
Tools / Platform
- Hardware Required: Raspberry Pi (with SD card, power supply, and peripherals), sensors (temperature, light, etc.), LEDs, and push buttons.
- Tools/Software: GCC, GDB, Buildroot, U-Boot, SSH tools, cross-compilation toolchains.
Essential Linux Commands and Shell Scripting | ||
---|---|---|
Basic and Advanced Linux Commands | Bash Shell Basics | Writing Shell Scripts |
Loops, Conditions, and Functions in Shell Scripts | Introduction to Environment Variables | Debugging Shell Scripts |
Managing and Editing Text Files (nano, vim, emacs) | Use of Command-Line Text Processing Tools | Utilizing Raspberry Pi GPIO Pins with Shell Commands |
Writing automation scripts (e.g., backup scripts) | Using awk, sed, grep, and pipelines | Task automation using cron jobs |
System Programming in Linux | ||
File I/O System Calls (open, read, write, close) | Process Creation and Management (fork, exec, wait) | Interprocess Communication (Pipes, Shared Memory, Sockets) |
Threads Programming using POSIX Threads | Signal Handling and Implementation | Memory Management Concepts in Linux |
Understanding Daemons and Services | Debugging System Programs with gdb | Implementing Interprocess Communication on Raspberry Pi for Peripheral Interaction |
Writing simple C programs for file I/O | Implementing producer-consumer with pipes | Multithreading examples using pthreads |
Introduction to Embedded Linux | ||
Overview of Embedded Systems | Introduction to Linux in Embedded Systems | Raspberry Pi Architecture and Features |
Key Differences Between Embedded Linux and Desktop Linux | Introduction to Raspberry Pi Hardware (Models, Components, and Specifications) | Raspberry Pi Hardware Components |
STM32MPU / Raspberry Pi Hardware Specifications | Applications of Embedded Linux in Real-World Systems | Setting up Raspberry Pi (connecting peripherals, flashing the OS) |
Linux Device Drivers | ||
Linux Kernel Modules Basics | Character Device Drivers | GPIO Device Driver Programming |
Interrupt Handling and Synchronization | Dynamic and Static Allocation of Major and Minor Numbers | Debugging Drivers using dmesg and DebugFS |
Memory Mapping with mmap in Device Drivers | Overview of Block Device Drivers | Customizing Device Drivers for Raspberry Pi GPIO Pins |
Writing and loading simple kernel modules | Developing a basic character device driver | GPIO control using device drivers |
Kernel, Bootloader and Buildroot | ||
Linux Kernel Compilation and Configuration | Understanding Bootloaders (U-Boot) | Buildroot Basics and Root Filesystem Creation |
Cross-Compilation Toolchains | Kernel Customization and Patch Management | Overview of Embedded System Development Workflows |
Debugging Bootloader and Kernel Boot Processes | Configuring Raspberry Pi Bootloader | Customizing Raspberry Pi Bootloader |
Customizing and building a Linux kernel for Raspberry Pi | Bootloader configuration and booting with U-Boot | Creating a minimal root filesystem using Buildroot |
Project: Embedded Linux with Raspberry Pi & Sensors | ||
Hardware: Raspberry Pi (any model with GPIO, e.g. 4 or 3B+), Sensors (Temperature, Humidity, Pressure), Output Devices (OLED, LCD, Buzzer, LEDs, Relays), Communication (Ethernet/WiFi, UART) Software Tools: Raspberry Pi OS, GCC, Make, GDB, Buildroot, DTC, U-Boot, Bash, Python, SH, SCP, Vim, Nano Version Control: Git |