· Linux overview
· Real time and embedded
· The kernel and its role
· Linux supported architectures
· Project overview
· Getting buildroot
· Quick start
· Configuration interfaces
· Using a predefined configuration
· The need for cross tool chains
· Tools naming convention
· Getting and installing a tools chain
· Cross building software
· Cross debugging
· uClibc
· Getting the sources
· The structure of source tree
· Configuring and building the kernel
· Compiling the kernel
· Kernel modules
· Configuring buildroot
· Integrating Additional packages into buildroot
· Overlays
· Working without device trees
· What is a device tree
· DTS and DTB
· Device tree integration into driver code.
· root-fs
· The syntax of DTS files
· Embedded Linux boot process
· Kernel boot parameters
· Bootloaders, U-Boot
· Buildroot configuring system components
· root-fs
· How does NFS aid the embedded development process
· Preparing NFS
· Mounting an NFS volume
· NFS daemons
· Exports file
· root-fs over NFS
· tftp
· DHCP
· librt overview
· Scheduling policies and priorities.
· CPU affinity
· Memory
· RT signals
· Asynchronous I/O
· POSIX IPC
· POSIX timers.
· Tips for improving user space RT performance.
· Command line tools for manipulating scheduling policy / priority, and CPU affinity
· RTOS memory issues and Linux.
· Linux hardware interaction
· Latency (kernel, interrupt, scheduler)
· Kernel preemption
· Linux hard real time extensions
· Applying the RT patch
· Threaded IRQ’s
· Voluntarily giving up CPU – cond_resched
· Controlling kernel preemption
· spinlocks and raw spinlocks.
· Priority inheritance
· Priority inversion
· Don’t do’s
· Project overview
· The Yocto project development environment
· Setting up a Yocto project
· Supported build hosts
· Build host packages
· Getting Yocto
· Example – Building an image and testing it on an emulator
· Development models
· Image development
· Receipes
· Summary
· Q&A
· Evaluation