Get in Touch

Course Outline

Fundamentals of Embedded Linux and Platform Overview

  • Introduction to Embedded Linux
    • Differences compared to desktop Linux
    • Use cases and constraints
  • Overview of the i.MX6 platform architecture
    • System on Chip (SoC) blocks and the boot process (ROM, SPL, U-Boot, kernel)
    • The concept of the Device Tree and its application to i.MX6
  • Hardware/Emulator setup: Board layout, interfaces, JTAG/serial connections, and SD/eMMC boot mechanisms

Build Environment and Yocto Project Basics

  • Introduction to the Yocto Project
    • Poky and BitBake
    • Layers
    • Metadata (recipes, bbfiles)
  • Setting up the host build environment
    • Prerequisites
    • Toolchains
    • Repository synchronization
  • Exploring the Yocto directory structure
    • meta
    • poky
    • meta-classes

Customizing Images and Adding Packages

  • Understanding layers
    • BSP layer
    • Board-specific layers
    • Application layer
  • Adding packages to the image
    • Writing a simple recipe
    • Integrating into the image
  • Customizing the image
    • Root file system (rootfs) size
    • Services
    • Kernel modules

Kernel, Device Tree, and Board Support on i.MX6

  • Kernel build workflow
    • Configuration
    • Cross-compilation
    • Modules
  • Device Tree
    • Formatting
    • Nodes
    • Overlays
    • Enabling peripherals on i.MX6
  • BSP specifics for i.MX6
    • Bootloader (U-Boot)
    • Board-specific patches
    • Memory layout

Troubleshooting and Optimization

  • Common build/boot failures and debugging methods
    • Serial console
    • U-Boot debugging
    • Kernel oops
    • Rootfs issues
  • Optimization tips
    • Image size reduction
    • Boot time improvement
    • Basics of power management (Overview only)

Wrap Up

  • Summary and Conclusion
  • Key takeaways
  • Next steps for participants (driver development, advanced BSP work)
  • Feedback and Q&A

Requirements

Participants are expected to have:

  • Strong proficiency in Embedded C or C++ programming (mandatory).
  • Fundamental familiarity with microcontrollers and embedded systems concepts, such as:
    • UART, I2C, SPI, GPIO.
    • Cross-compilation or toolchains (at least conceptual understanding).
  • Basic understanding of Linux from a user perspective (preferred, though not mandatory).
    Example: Ability to execute terminal commands like cd, ls, cp, mkdir, and chmod.

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

Target Audience

  • Embedded engineers who are proficient in Embedded C++ but are new to implementing Linux on embedded platforms.
  • Engineers responsible for working on Linux-based systems utilizing i.MX6 or i.MX9 hardware.
  • Team members preparing to build custom Linux images, configure kernels, manage Board Support Packages (BSPs), and deploy solutions on embedded boards.
 35 Hours

Number of participants


Price per participant

Testimonials (3)

Upcoming Courses

Related Categories