Course Outline

Introduction

  • History of Unix/Linux
  • Free Software
  • Unix Philosophy

HOST PLAYGROUND

  • Play with GNU/Linux
    • architecture
    • shell
    • permissions
    • FHS (file hierarchy standard)
    • hard/soft links
    • real/effective uid/gid
    • scheduler
    • process/task/thread
    • IPC simple/advanced
      • pipes
      • signals
      • message queues
      • semaphores
      • shared memory
      • sockets
      • select/poll
    • IPC techniques to avoid
  • Host Linux setup
    • Yocto/ELDK (cross/target tools, libraries, packages)
    • Terminal Emulation
    • Servers (DHCP, tftp, NFS)

TARGET PLAYGROUND

  • files needed to run something on board
    • JTAG/BDI config
    • u-boot (checkout, config, build)
    • kernel (checkout, config, build)
    • rootfs
    • flat device tree
  • build/execute what's applicable from above on the target board
  • various rootfs
    • CRAMFS
    • ramdisk
    • MTD
    • JFFS2
    • roEXT2
    • ubi
  • build/execute what's applicable from above on the target board
  • comparison of root file systems
  • debugging
    • simple tools
    • local/remote
    • user/kernel
    • gdb
    • gdbserver
    • JTAG/BDI (optional)
  • profiling
    • gprof
    • gcov
    • oprofile

REAL-TIME

  • prerequisites
    • interrupts
    • reentrant code
  • real-time Linux
    • explicit/implicit preemption points
    • real-time preemption patch
    • fully preemptive kernel
    • hard real-time extensions
  • Adeos/Xenomai
    • adeos patch
    • xenomai
    • patch/config/build kernel
    • run it on board

SW RELEASE

  • administration
  • development
  • how to reproduce an SW release?

MISC

  • getopt
  • endianess
  • cheat-sheets

Except where otherwise noted content on this course outline is licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Requirements

  • 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 or fear to learn the above… 
  35 Hours
 

Testimonials (1)

Related Courses

The Yocto Project - An Overview - hands-on

  28 Hours

Related Categories