Get in Touch
 Duration 35 hours

Course Outline

Embedded Linux Fundamentals & Platform Overview

  • Introduction to Embedded Linux
    • Key differences from desktop Linux
    • Typical use cases and operational constraints
  • Overview of i.MX6 platform architecture
    • SoC blocks and the boot process (ROM, SPL, U-Boot, kernel)
    • Device Tree concepts and their application to i.MX6
  • Hardware and Emulator setup, covering board layout, interfaces, JTAG/serial connections, and SD/eMMC boot mechanisms

Build Environment & Yocto Project Basics

  • Introduction to the Yocto Project
    • Poky and BitBake
    • The concept of layers
    • Metadata structure, including recipes and bbfiles
  • Setting up the host build environment
    • Prerequisites
    • Required toolchains
    • Repository synchronization
  • Exploring the Yocto directory structure
    • meta directory
    • poky directory
    • meta-classes directory

Customizing Images & Adding Packages

  • Understanding layer structures
    • BSP layer
    • Board-specific layers
    • Application layer
  • Incorporating packages into the image
    • Writing simple recipes
    • Integrating them into the image
  • Customizing the image configuration
    • Root filesystem size
    • System services
    • Kernel modules

Kernel, Device Tree & Board Support on i.MX6

  • Kernel build workflow
    • Configuration
    • Cross-compilation
    • Module management
  • Device Tree implementation
    • Formatting standards
    • Node definitions
    • Overlays
    • Enabling peripherals on i.MX6
  • BSP specifics for i.MX6
    • Bootloader (U-Boot) configuration
    • Board-specific patches
    • Memory layout

Troubleshooting and Optimization

  • Common build and boot failures and debugging techniques
    • Serial console analysis
    • U-Boot debugging
    • Kernel oops interpretation
    • Root filesystem issues
  • Optimization strategies
    • Reducing image size
    • Improving boot time
    • Basics of power management (Overview Only)

Wrap Up

  • Summary and Conclusion
  • Key take-aways
  • Next steps for participants, including driver development and advanced BSP work
  • Feedback and Q&A

Requirements

Participants are expected to possess the following:

  • Strong proficiency in Embedded C or C++ programming (mandatory)
  • Basic familiarity with microcontrollers and embedded system concepts, including:
    • UART, I2C, SPI, and GPIO interfaces
    • Cross-compilation and toolchains (conceptual understanding is sufficient)
  • Foundational understanding of Linux from a user perspective (preferred but not mandatory), such as the ability to utilize terminal commands like cd, ls, cp, mkdir, and chmod.

Note: Extensive Linux expertise is not required, as the course begins with the fundamentals of Embedded Linux.

Target Audience

  • Embedded engineers proficient in Embedded C++ who are new to deploying Linux on embedded platforms.
  • Engineers tasked with developing Linux-based systems on i.MX6 or i.MX9 hardware.
  • Team members preparing to build custom Linux images, configure kernels, manage BSPs, and deploy solutions on embedded boards.

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories