Embedded Linux Systems Architecture

Embedded Linux Systems Architecture

title-1

Course Objectives

To provide an understanding of the essentials of embedded GNU/Linux, how the bits and pieces fit together. What components are needed to build an embedded GNU/Linux system, where to get them from and how to configure/build/install them? Where to get help from? What about those software licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and develop your own embedded GNU/Linux systems after completing this training successfully.

Description

This five day training class uses hands-on exercises combined with instruction to illustrate the concepts of embedded GNU/Linux. It is designed to bring you quickly up to speed. The philosophy, concepts and commands necessary to make effective use of GNU/Linux are described through a combination of theory and on-the-job training. Don’t reinvent the wheel, but learn from an experienced trainer and take home a working knowledge of GNU/Linux and the ability to use it effectively in your own embedded development project.

Prerequisites

  • Basic familiarity with using a GNU/Linux system (e.g. Ubuntu) as an end user in user space 
  • Basic familiarity with a command line shell 
  • Basic knowledge of user space/application development with GNU/Linux 
  • Basic knowledge concerning embedded processors and development boards 
  • Basic C programming knowledge 
  • …and/or no fear to learn the above… 

Who should attend?

Managers, project managers, software-, hardware-, development-, systems engineers, testers, administrators, technicians and other parties interested in the technology, who want to understand as quickly as possible how Embedded GNU/Linux works. You must use GNU/Linux or you have to luxury to decide whether it makes sense to use it or not. Maybe you already tried to use Embedded GNU/Linux, but are not quite sure that you did everything the right way. You currently use a different operating system and want to figure out whether GNU/Linux might be better and/or cheaper.

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish, worldwide.

  • on-site - instructor driven*) 
  • on-line - instructor driven**) 
  • on-site/on-line combination - instructor driven*)**) 

During the training we’ll provide laptops*), boards*)**), workbooks (in English)*)**), remote access to servers and boards**), screen-sharing**), audio-bridge**).

Check out our training delivery options to see how we can present/customise our material to your specific needs. Feel free to contact us for further inquiries.

Course Outline

Introduction

  • History of Unix/Linux
  • Licensing
  • Standards
  • Working with Free Software
  • Spelunking
  • Unix Philosophy

Host playground

  • architecture
  • shell
  • FHS (file hierarchy standard)
    • Devices, Daemon, Booting, Program Sections, Static/Shared Libraries
  • permissions
    • Access Control, Changing Permissions, umask
  • hard/soft links
  • real/effective uid/gid

Process/IPC

  • Intro
    • What's an OS?
    • What's a scheduler?
    • Linux: scheduler, priorities, scheduling classes
    • process/task/thread
    • errno
    • fork
    • Process termination
    • Process states
    • Zombies
    • More about Processes
  • IPC simple
    • shell redirection, shelling out, tmpfiles
  • IPC Generic
    • Message passing vs. shared memory
  • Advanced IPC
    • pipes
    • signals
    • interrupted system calls
    • message queues
    • semaphores
    • shared memory
    • sockets
    • select/poll
  • IPC techniques to avoid

Embedded Specifics

  • Intro
  • Portability
  • Build
    • Cross/Native toolchain
    Toolchains
  • C-Libraries
    • glibc, uclibc, eglibc, others
    • reduce shared lib size

Eval Board

  • Booting
    • How does LInux boot on a PC?
    • How is an Embedded System different?
  • Booting the target
    • Boot sequence, SD card and partitions

Stuff Needed

  • Host
    • Toolkit
      • The Yocto Project
      • Install Yocto SDK
    • SD card
    • screen
    • minicom
    • tftp server
    • Root file systems
    • Nfs server
  • Target
    • U-Boot
      • Das U-Boot
      • Scripting
      • Fancy stuff
        • Spash Screen
        • U-Boot environment from Linux
        • Post mortem
        • Automatic SW update
        • How to contribute?
      • Get/Configure/Build/Install
      • Commands
    • Flat device tree
      • What is a flat device tree?
      • Device tree compiler
      • Examples/Documentation
    • Linux kernel
      • Get
      • Kbuild
      • Multi Platfrom Support
      • Configure/Build/Install
      • Get/configure/build install
      • What is uImage?
      • Build fdt
      • In-tree kernel modules

Rool File Systems

  • Available root file systems
  • prepare minimal-dev rootfs
  • tftp server
  • rootfs on ramdisk
  • mtd
  • rootfs on jffs2
  • mtdparts
  • rootfs on cramfs
  • rootfs on ro ext2
  • build/execute what's applicable from above on the target board
  • rootfs comparison

Customizations

  • System hangs
  • pseudo tty
  • getty
  • runlevel
  • static ip
  • mount nfs
  • ssh server

User Space Debugging

  • Debugging Intro
    • What's a bug?
    • Types of bugs
    • Debugging strategy
  • Simple tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Advanced tools
  • What’s a debugger?
  • gdb
    • host gdb
    • target gdb
    • gdb remote debugging
    • gdb remote debugging with GUI

User Space Profiling/Tracing

  • Profiling/Tracing tools
    • strace
    • system timers
    • gprof
    • gcov
    • code optimization
    • oprofile
    • perf
  • top an friends
    • top
    • latencytop
    • powertop
    • powerdebug
  • crash

Real-time

  • prerequisites
    • Kernel vs. User Space
    • interrupts
    • reentrant code
  • Real-time Intro
    • What is Real-time
    • Determinism
  • Real-time Linux
    • Hypervison
    • Dual kernel
    • Fully preemtive kernel
    • 0 Vanilla Linux kernel
    • 1 explicit preemption points
    • 2 implicit preemption points
    • 3 real-time preemption patch
    • fully preemptive kernel
    • hard real-time extensions
  • Adeos/Xenomai
    • adeos patch
    • xenomai
    • patch/config/build kernel
    • run it on board
  • Real-time myths
    • must be fast
    • rate monotonic
    • universal methodology
    • scheduling theory
    • RTOS vs. Linux
    • New hardware
    • Dual kernel vs. Preempt-rt
    • Future outlook Dual kernel
    • Future outlook Preempt-rt

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.