Get in Touch

Course Outline

Introduction

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

HOST PLAYGROUND

  • Explore GNU/Linux
    • Architecture
    • Shell operations
    • Permissions
    • FHS (File Hierarchy Standard)
    • Hard/Soft links
    • Real/Effective UID/GID
    • Scheduler
    • Process/Task/Thread management
    • IPC (Inter-Process Communication) - 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 required to run software on the board
    • JTAG/BDI configuration
    • U-boot (checkout, config, build)
    • Kernel (checkout, config, build)
    • Root filesystem
    • Flat Device Tree
  • Build and execute applicable components on the target board.
  • Various root filesystems
    • CRAMFS
    • Ramdisk
    • MTD
    • JFFS2
    • RoEXT2
    • UBI
  • Build and execute applicable components on the target board.
  • Comparison of root filesystems.
  • Debugging
    • Simple tools
    • Local/Remote debugging
    • User/Kernel debugging
    • 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
    • Apply patch/config/build kernel
    • Run it on the board.

SW RELEASE

  • Administration
  • Development processes
  • How to reproduce a software release?

MISC

  • Getopt
  • Endianness
  • 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.
  • ...or willingness to learn the above.
 35 Hours

Number of participants


Price per participant

Testimonials (3)

Upcoming Courses

Related Categories