Embedded Linux Development (LFD450)

This course will give you the step-by-step framework for developing an embedded Linux product. You’ll learn the methods used to adapt the Linux kernel and user-space libraries and utilities to particular embedded environments, such as those in use in consumer electronics, military, medical, industrial, and auto industries.

$3150 Enroll Get A Quote

Course Overview

This course will teach you the tools and techniques necessary for developing embedded Linux devices.

Show More

In this course you’ll learn:

  • The Linux kernel architecture, emphasizing the essential points relevant to adapting the kernel to a custom embedded platform.
  • The techniques for right-sizing the system to meet project constraints
  • The multitude of resources available for constructing a cross development environment for embedded projects.
  • The options available for populating libraries and application user-spaces to meet the goals and constraints of embedded systems.
  • And more.

The information in this course will work with any major Linux distribution.

Schedule

Instructor-Led
1/27/2020 - 1/30/2020
AUSTIN
GuaranteedWith Next EnrollmentThis class will be guaranteed to run with next enrollment.
$3250 Add to cart Generate A Quote
Instructor-Led
3/9/2020 - 3/12/2020
ATLANTA GA
$3250 Add to cart Generate A Quote
Instructor-Led
4/20/2020 - 4/23/2020
AUSTIN
$3250 Add to cart Generate A Quote
Instructor-Led
6/1/2020 - 6/4/2020
ATLANTA
$3250 Add to cart Generate A Quote
If none of these fits your schedule, check out our Partner offerings >

Course Outline

  1. Introduction
    • Objectives
    • Who You Are
    • The Linux Foundation
    • Linux Foundation Training
    • Certification Programs and Digital Badging
    • Linux Distributions
    • Platforms
    • Preparing Your System
    • Things change in Linux
    • Documentation and Links
    • Course Registration
  2. Preliminaries
    • Linux Distributions
    • Virtual Machine Installation
    • Procedures
  3. How to Work in OSS Projects **
    • Overview on How to Contribute Properly
    • Stay Close to Mainline for Security and Quality
    • Study and Understand the Project DNA
    • Figure Out What Itch You Want to Scratch
    • Identify Maintainers and Their Work Flows and Methods
    • Get Early Input and Work in the Open
    • Contribute Incremental Bits, Not Large Code Dumps
    • Leave Your Ego at the Door: Don’t Be Thin-Skinned
    • Be Patient, Develop Long Term Relationships, Be Helpful
  4. Embedded and Real-Time Systems Concepts
    • Basic Concepts
    • Protection Motivations
    • Off the Shelf (OTS)
    • Embedded Caveats
    • Real Time Operating Systems
    • Real Time Linux
    • Custom Hardware Assistance
    • Resources
  5. Cross-Development Environments: Goals and Needs
    • Introduction
    • Why is it Hard?
    • Project Goal Considerations
    • Links to Additional Discussions
    • Labs
  6. Kbuild System
    • Introduction
    • Kbuild Makefiles
    • Kconfig Basics
    • Searching Kconfig
  7. Cross-Development Toolchain
    • The Compiler Triplet
    • Built-in Linux Distribution Cross Compiler
    • Linaro
    • CodeSourcery
    • crosstool-ng
    • Buildroot
    • OpenEmbedded
    • Yocto Project
    • Clang
    • Labs
  8. Basic Target Development Board Setup
    • Objectives of the Lab
    • Labs
  9. Booting the Target Development Board from uSD
    • Objectives of the Lab
    • Labs
  10. Booting a Target Development Board over Ethernet
    • An easier way to develop
    • Objectives of the Lab
    • Labs
  11. Boot loaders and U-Boot
    • Boot Code Stages
    • Some GPL Boot Loaders
    • Das U-Boot
    • U-Boot Command Line
    • U-Boot Environment
    • Labs
  12. Kernel Configuration, Compilation, Booting
    • Configuring the Kernel for the Development Board
    • Labs
  13. Device Drivers**
    • Types of Devices
    • Device Nodes
    • Character Drivers
    • An Example
    • Labs
  14. Device Trees
    • What are Device Trees?
    • What Device Trees Do and What They Do Not Do
    • Device Tree Syntax
    • Device Tree Walk Through
    • Device Tree Bindings
    • Device Tree support in Boot Loaders
    • Using Device Tree Data in Drivers
    • Coexistence and Conversion of Old Drivers
    • Labs
  15. Target Filesystem Packaging
    • Embedded Filesystem Goals
    • Directories: a Survey
    • Embedded Filesystem Types
  16. Build Target Root Filesystem
    • Objectives of the Lab
    • Labs
  17. Root Filesystem Choices
    • SysV init vs. BusyBox init
    • udev vs. BusyBox mdev
    • Systemd
    • C Library Choices
  18. Configuring uClibc
    • Configuring uClibc for NFS
    • Labs
  19. Another Alternate C-library: musl **
    • What is musl?
    • Configuring BuildRoot for musl
    • Labs
  20. Build BusyBox Utility Suite
    • Basic Workings
    • Integrated with Buildroot
    • Labs
  21. Kernel Monitoring and Debugging
    • Tracing and Profiling
    • Ftrace, Trace-Cmd, Kernelshark
    • Perf
    • Using perf
    • sysctl
    • SysRq Key and oops Messages
    • Kernel Debuggers
    • Labs
  22. Right-Sizing
    • Oft-Needed Embedded Components
    • Taking Inventory of Kernel Sizes
  23. Memory Technology Devices (Flash Memory Filesystems)
    • What are MTD Devices?
    • NAND vs. NOR vs. eMMC
    • Driver and User Modules
    • Flash Filesystems
    • Labs
  24. Compressed Filesystems
    • SquashFS
    • Deploying in an MTD Partition
    • Labs
  25. System Upgrades
    • When do we need to update?
    • Update strategies
    • Prebuilt upgrade systems
    • Labs
  26. Real-Time Extensions
    • Predictability and Preemption and Locks
    • PREEMPT_RT Project
    • Real-Time Checklist
  27. Closing and Evaluation Survey
    • Evaluation Survey

Appendices

  1. Kernel Architecture Preview
    • Linux and UNIX
    • Monolithic and Micro Kernels
    • Main Kernel Tasks
    • User-Space and Kernel-Space
  2. Kernel Source Tree Overview
    • Installation and Layout of the Kernel Source
    • Kernel Browsers
    • Kernel Configuration Files
    • Why is it Hard? Part 2
  3. Kernel Programming Preview
    • Coding Style
    • kernel-doc
    • Using Generic Kernel Routines and Methods
    • Error Numbers, Printing Kernel Output, syslogd
    • Task Structure
    • Memory Allocation
    • Transferring Data between User and Kernel Space
  4. Modules
    • What are Modules?
    • A Trivial Example
    • Compiling Modules
    • Modules vs Built-in
    • Module Utilities
    • Automatic Loading/Unloading of Modules
    • Module Usage Count
    • Module Licensing
    • Exporting Symbols
    • Resolving Symbols **
    • {D.11Labs

** These sections may be considered in part or in whole as optional. They contain either background reference material, specialized topics, or advanced subjects. The instructor may choose to cover or not cover them depending on classroom experience and time constraints.

Prerequisites

The course is primarily intended for experienced developers, programmers, and engineers who are interested in learning how to adapt Linux to an embedded system. You should be familiar with basic Linux utilities, know the C programming language, and be comfortable developing for Linux or UNIX. Pre-class preparation material will be provided before class.

Testimonials

“I really felt like it provided me with a solid understanding of what I need to know to get started with my embedded project.”  Oct 2019

“In-depth coverage of material that is directly applicable to current work.”  Oct 2019

“LDF450 was great. it was so informative!! My favorite is keeping the board so I can do more tinkering at home.”  Oct 2019

At a Glance

Delivery Method

Live (Classroom)

Includes

  • 4 days of Instructor-led class time
  • Hands-on Labs & Assignments
  • Resources & Course Manual
  • Certificate of Completion
  • Free Chromebook

Experience Level

   Intermediate

Course Rating

   

Pro-Tip

Training 5 or more individuals?
Get a Corporate Quote >

chromebook

Get training and a free Chromebook.

When you train with The Linux Foundation you’re already getting the best open source training straight from the source. And now, we are including a free Chromebook with the purchase of select Linux Foundation instructor-led training courses to help you get the most out of your training experience.

Learn More