Embedded Linux Development (LFD450)

Course Description

This instructor-led training will give you the step-by-step framework for developing an embedded Linux product. Starting with the cross-compiler, you’ll learn about setting up a development system, boot loaders, the kernel, drivers, device tree, & all the various software & decisions that is to be made while building a user space root filesystem, such as those in use in consumer electronics, military, medical, industrial, & auto industries. Hands-on labs with a RISC-V based emulated development target allow professionals to practice both coding & building the various parts of the system covered in class.

Prerequisites

The training is primarily intended for experienced developers, programmers, & 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, & be comfortable developing for Linux or UNIX. Pre-class preparation material will be provided before class.

Target Audience

This training is for experienced developers who need to develop an embedded Linux product from the ground up.

Learning Objectives

In this training you will learn about the Linux kernel architecture, emphasizing the essential points relevant to adapting the kernel to a custom embedded platform. The training also covers techniques for right-sizing systems to meet project constraints, the multitude of resources available for constructing a cross development environment for embedded projects, the options available for populating libraries & application user-spaces to meet the goals & constraints of embedded systems, & more.

Content Outline

- Objectives

- Who You Are

- The Linux Foundation

- Copyright & No Confidential Information

- Linux Foundation Training

- Certification Programs & Digital Badging

- Linux Distributions

- Platforms

- Preparing Your System

- Things change in Linux

- Documentation & Links

 

- Linux Distributions

- Virtual Machine Installation

- Procedures

- Labs

 

- Overview on How to Contribute Properly

- Know Where the Code is Coming From: DCO & CLA

- Stay Close to Mainline for Security & Quality

- Study & Understand the Project DNA

- Figure Out What Itch You Want to Scratch

- Identify Maintainers & Their Work Flows & Methods

- Get Early Input & 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

 

- Basic Concepts

- Protection Motivations

- Off the Shelf (OTS)

- Embedded Caveats

- Real Time Operating Systems

- Real Time Linux

- Custom Hardware Assistance

- Resources

 

- Introduction

- Why is it Hard?

- Project Goal Considerations

- Links to Additional Discussions

- Labs

 

- Introduction

- Kbuild Makefiles

- Kconfig Basics

- Searching Kconfig

 

- The Compiler Triplet

- Built-in Linux Distribution Cross Compiler

- Linaro

- CodeSourcery

- crosstool-ng

- Buildroot

- OpenEmbedded

- Yocto Project

- Clang

- Labs

 

- What is QEMU?

- Why use QEMU?

- Emulated Architectures

- Image Formats

- Labs

 

- Why do we use uSD cards?

- Getting SW onto a uSD card

- Booting from flash

- Why is using uSD cards a bad idea?

- Labs

 

- Using virtual Hardware

- An easier way to develop

- The Boot Sequence using TFTP & NFSroot

- Objectives of the Lab

- Labs

 

- Boot Code Stages

- Some GPL BIOSes

- Some GPL Boot Loaders

- Das U-Boot

- U-Boot Command Line

- U-Boot Environment

- Labs

 

- Configuring the Kernel for the Development Board

- Labs

 

- Types of Devices

- Device Nodes

- Character Drivers

- An Example

- Labs

 

- What are Device Trees?

- What Device Trees Do & 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 & Conversion of Old Drivers

- Labs

 

- Embedded Filesystem Goals

- Directories: a Survey

- Embedded Filesystem Types

 

- Objectives of the Lab

- Labs

 

- SysV init vs. BusyBox init

- udev vs. BusyBox mdev

- Systemd

- C Library Choices

- Labs

 

- Configuring uClibc for NFS

- Labs

 

- What is musl?

- Configuring BuildRoot for musl

- Labs

 

- Basic Workings

- Integrated with Buildroot

- Labs

 

- Tracing & Profiling

- Ftrace, Trace-Cmd, Kernelshark

- Perf

- Using perf

- sysctl

- SysRq Key

- oops Messages

- Kernel Debuggers

- debugfs

 

- Oft-Needed Embedded Components

- Taking Inventory of Kernel Sizes

 

- What are MTD Devices?

- NAND vs. NOR vs. eMMC

- Driver & User Modules

- Flash Filesystems

 

- SquashFS

- Deploying in an MTD Partition

- Labs

 

- When do we need to update?

- Update strategies

- Prebuilt upgrade systems

- Labs

 

- Predictability & Preemption & Locks

- PREEMPT RT Project

- Real-Time Checklist

 

- Evaluation Survey

- Linux & UNIX

- Monolithic & Micro Kernels

- Main Kernel Tasks

- User-Space & Kernel-Space

 

- Installation & Layout of the Kernel Source

- Kernel Browsers

- Kernel Configuration Files

- Why is it Hard? Part 2

 

- Coding Style

- kernel-doc

- Using Generic Kernel Routines & Methods

- Error Numbers, Printing Kernel Output, syslogd

- Task Structure

- Memory Allocation

- Transferring Data between User & Kernel Space

 

- What are Modules?

- A Trivial Example

- Compiling Modules

- Modules vs Built-in

- Module Utilities

- Automatic Module Loading

- Module Usage Count

- Module Licensing

- Exporting Symbols

- Resolving Symbols **

- Labs

 

- Objectives of the Lab

- Labs

 

- Objectives of the Lab

- Labs

 

- An easier way to develop

- The Boot Sequence using TFTP & NFSroot

- Objectives of the Lab

- Labs

 

FAQs

To attend the training session you should have an operational Desktops or Laptops with required specification along with good internet connection to access the labs. 

We would always recommend you to attend the live session to practice & clarify the doubts instantly & get more value from your investment. However, if due to some contingency if you have to skip the class Radiant Techlearning would help you with the recorded session of that particular day. However, those recorded sessions are not meant only for personal consumption & NOT for distribution or any commercial use.

 

Radiant Techlearning has a data center containing the Virtual Training environment for the purpose of professional’s hand-on-practice. 

Professionals can easily access these labs over Cloud with the help of remote desktop connection. 

Radiant virtual labs provides you the flexibility to learn from anywhere in the world & in any time zone.

 

The professionals will be enthralled as we engage them the real world & industry Oriented projects during the training program. These projects will improve your skills & knowledge & you will gain better experience. These real time projects, they will help you a lot in your future tasks & assignments.

 

Send a Message.


  • Enroll