Wind River Linux User Space Programming
Develop complex applications for Linux-based devices, with an emphasis on the Wind River Linux and Wind River Workbench products.
Course Description
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.
Course Results
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
Products Supported
- Wind River Linux 8
- Wind River Workbench 4
- The following target is available: QEMU simulated target (Intel® x86-64)
Who Should Attend
- 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
Course Format
- 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.
Syllabus
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
Synchronization
- Overview of concurrency
- File locks
- Semaphores
- Mutexes
- Futex
- Condition variables
- Deadlock
- LAB: Synchronizing Threads
Libraries
- Overview of libraries
- Static libraries
- Shared libraries
- Dynamically loaded libraries
- Common libraries
- Library tools
- LAB: Creating Libraries
- LAB: Working with Dynamically Loaded Libraries
Prerequisites
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
Related Courses
Buy Now
COURSE DETAILS SUMMARY
- Duration: 4 Days
- Course Information: View
- Format: Lectures and Labs
- Type: Instructor-led