Program Introduction
Welcome to the Embedded Linux on ARM training module! This training course is specifically targeted at budding embedded systems engineers and teaches how to create your own custom-built Linux operating system on an embedded platform using an ARM based board. We emphasize modern screen technologies by showing how to configure a screen server for the Linux desktop such as the Wayland/Weston environment and implement graphical user interfaces. Our special attention is paid to the Linux input subsystems, allowing participants to solve practical problems through manual calibration of touch screens with help of transformations and udev configuration.
Objective
The main purpose of the course is to prepare prospective embedded developers who can work with Embedded Linux by providing them with the needed knowledge and practical experience of developing customized embedded systems based on ARM architecture. Using an ARM board, trainees will get familiarized with all stages of creating their own customized Linux operating system. In particular, it is important to highlight that one of the most important aspects of the course is understanding the configuration of graphical subsystems with modern display servers, such as Wayland/Weston. Also, an essential goal of the program is mastering the Linux input subsystem to effectively work with touchscreens.
Salient Features of Training program
→ Custom Linux Operating Systems: Practical implementation of compiling custom, minimal Embedded Linux operating systems using the Yocto Project (Poky), BitBake, and custom layers rather than off-the-shelf monolithic operating systems such as Raspberry Pi OS.
→ Boot Flow and Initialization on ARM: Technical understanding of the ARM Cortex-A (BCM2711) boot process including bootloaders and kernel image boot-up, as well as moving from bare metal to user space.
→ Device Tree Overlays (DTOs): Practical understanding of modifying Device Tree Source (DTS) file to support dynamically configuring pin multiplexing as well as enabling DSI, SPI, or I2C touchscreens.
→ Direct Rendering Manager / Kernel Mode Setting (DRM / KMS): Implementation of DRM and KMS, switching from framebuffer (fbdev) legacy driver stack to enable hardware acceleration display outputs.
→ Wayland/Weston: Configuration of the modern Wayland display server protocol with the Weston reference compositor for tearing-free graphical user interface rendering on embedded memory-constrained system.
→ Input Subsystem (evdev): Direct communication with Linux kernel input subsystem through the use of evtest and other utilities like sysfs for debugging and decoding raw input events from capacitive and resistive touch devices.
→ Persistence Device Naming (udev & hwdb): Development of custom udev rules and hwdb entries for assigning unique device nodes (for example, /dev/input/touchscreen0) and hardware properties that will persist despite enumeration order during system boot.
→ libinput Advanced Calibration: Application of mathematics for calibrating a touchscreen input device by calculating and injecting 6 point affine transformation matrices for dealing with various hardware problems such as inversions, swap and skewing.
→ Qt5/Python Cross Compilation for ARMhf & AArch64: Setting up cross-compilation environment on the host machine to compile Qt5 and PyQt5 based GUI applications and deploy on target ARM-based boards.
→ systemd Kiosk Mode Boot Sequence: Developing custom systemd service units which boot system without running the default desktop manager and launching GUI application into full-screen Kiosk mode.
Target Audience
The technically advanced course connects hardware devices and the Linux operating system. Best suited for:
→ Junior Embedded Engineers & Computer Science/ Electronics Graduates: Professionals and learners aspiring to advance from the regular Linux distribution into the knowledge of Embedded Linux, GUI programming, and hardware integration.
→ IoT & Edge Devices Engineers: Professionals developing interactive HMIs and specialized “Kiosk” devices.
→ Firmware, Bare Metal & Hardware Engineers: Professionals shifting from RTOS to embedded Linux or hardware engineers who need to know about board support packages (BSPs), device tree overlays.
→ Advanced Hobbyists: Makers seeking professional expertise in compiling operating systems from source code.
Duration
→ 10 Live Online Session of 1 hour each.
→ 10 consecutive Sessions on 10 Working Days for Regular Programs.
→ 10 consecutive Sessions on 5 Weekends for Weekend Programs.
Pre-requisites
This is a system level course that will assume some familiarity with computing. Prior knowledge of embedded Linux will not be required.
Pre-requisites: The trainee must be familiar with Linux CLI and Tools including terminal navigation and commands such as ls, grep, sudo, chmod, ssh, etc. The trainee should have some basic programming experience with C/C++ or bash. Some high-level understanding of OS concepts such as kernel and user-space, bootloader, and file systems/partitions.
Course Delivery
Online: Live interactive sessions with real-time coding and Q&A.
In-person: Classroom sessions focused on hands-on practice and collaborative learning.
Hybrid: Combination of online lectures with in-person or virtual labs for practical application.
Training Methodology
Lectures: Detailed presentations on theoretical concepts and coding techniques.
Hands-On Labs: Practical programming exercises and labs to apply learned concepts.
Reading Assignments: Selection of books, documentation, and articles to supplement learning.
Videos: Access to video tutorials for visual learning of complex topics.
Expected Learning Outcomes
By the end of this training program, students will be able to:
→ Cross-compile and build a custom Embedded Linux distribution from scratch.
→ Understand and modify Device Trees to enable hardware peripherals.
→ Configure modern display servers (Wayland) for embedded devices.
→ Diagnose, configure, and calibrate input devices (touchscreens) manually at the OS level using libinput matrices.
→ Deploy a locked-down "kiosk" embedded device ready for production.
Deliverables
→ Upon Completing the Project, EmbLogic would issue Crtificate or Letter for the same