Wind River Education Services Course Catalog

Wind River Education Services offers cost-effective training in various forms. Browse our course catalog below to plan and track a curriculum that will satisfy the training needs of your device software development engineers.

Wind River Linux User Space Programming

Buy Now

Course Description

Course Results

Products Supported

Who Should Attend

Course Format

Please see course datasheet for further details here Buy Now

Course Details Summary

  • Duration: 4 Days
  • Course Information: View
  • Format: Lectures and Labs
  • Type: Instructor-led
  • Price/Schedule: View

The Wind River® Linux User Space Programming course gives engineers the skills they need to develop complex applications for Linux-based devices, with an emphasis on the Wind River Linux and Wind River Workbench products.

After this course, participants will be able to perform the following:

  • Write applications that take advantage of advanced Linux features
  • Design, develop, build, and run applications in a target-host development environment
  • Effectively debug multi-threaded and multi-process applications
  • Configure, build, and manage Wind River Linux application projects
  • Prepare applications for integration with Wind River Linux–based devices
  • Wind River Linux 8
  • Wind River Workbench 4
  • The following target is available: QEMU simulated target (Intel® x86-64)
  • Developers who want to learn more about writing applications targeting Linux-based devices
  • Customers who have recently purchased or are considering purchasing Wind River Linux

Day 1

Introduction to Embedded Linux

  • Overview of Linux
  • Linux boot process
  • Linux user space
  • Cross development
  • Open source software licenses

Introduction to Wind River Linux

  • Overview of Wind River Linux
  • The Yocto Project
  • Wind River Linux platform
  • Software development models
  • LAB: Getting Started with the Wind River Linux Lab Environment

Wind River Workbench

  • Overview of Wind River Workbench
  • Projects and resources
  • Workspace
  • Perspectives
  • Working with projects
  • Source control management
  • LAB: Getting Started with Workbench
  • LAB: Working with Managed Build Projects
  • LAB: Working with Makefile Projects

Day 2

Target Management

  • Hardware targets
  • Cross development workflow
  • Deploying to hardware targets
  • Simulating a target with QEMU
  • LAB: Managing Simulating Targets in Workbench
  • LAB: Managing Simulating Targets from the Command Line

Application Development

  • Application development workflow
  • Migrating applications in a build environment
  • Application debugging
  • LAB: Building Applications from the Command Line
  • LAB: Building Applications in Workbench
  • LAB: Debugging Applications in Workbench
  • LAB: Debugging a Program Crash in Workbench
  • LAB: Using the Memory Analyzer
  • LAB: Using the CPU Profiler

Linux Processes and Threads

  • Processes
  • Process lifecycle
  • Threads
  • Thread lifecycle
  • Scheduling
  • LAB: Multitasking in a Linux application
  • LAB: Managing a Scheduler

Day 3

Memory Management

  • How memory is managed
  • Allocating and releasing memory
  • Mapping anonymous memory
  • Manipulating memory
  • Common memory problems
  • LAB: Allocating Memory
  • LAB: Sharing Memory
  • LAB: Tuning and Debugging Memory Allocation

File Input/Output

  • Overview of files in Linux
  • Basic I/O
  • Buffered I/O
  • Memory-mapped I/O
  • Exchanging binary data
  • LAB: Reading and Writing Data
  • LAB: Implementing Advanced File I/O
  • LAB: Working with Directories

Day 4

Inter-process Communication

  • Overview
  • Files
  • Pipes and FIFOs
  • Message queues
  • Shared memory
  • Sockets
  • Signals
  • Other IPC methods
  • LAB: Communicating with Pipes
  • LAB: Communicating with FIFOs
  • LAB: Communicating with Message Queues


  • Overview of concurrency
  • File locks
  • Semaphores
  • Mutexes
  • Futex
  • Condition variables
  • Deadlock
  • LAB: Synchronizing Threads


  • Overview of libraries
  • Static libraries
  • Shared libraries
  • Dynamically loaded libraries
  • Common libraries
  • Library tools
  • LAB: Creating Libraries
  • LAB: Working with Dynamically Loaded Libraries

Prerequisite Course

  • None

Prerequisite Skills

  • Basic understanding of embedded operating systems and debugging techniques
  • Functional knowledge of a Linux command-line environment
  • Basic understanding of makefiles and software build tools
  • One year of C or C++ programming experience on Linux/UNIX
  • This four-day, expert-led course consists of lectures and lab sessions.
  • Attendees use Wind River Linux 8 and Wind River Workbench 4 to gain experience with the topics presented.
  • Participants examine and exercise simulated network topologies in hands-on labs.
  • Participants receive individual guidance from an expert engineer who has extensive experience with Wind River technologies.