
Introduction to Linux
Acquire the skills necessary to develop real-time applications with embedded Linux.
Course Description
Introduction to Linux provides engineers with a fast, cost-effective way to acquire the skills necessary to develop real-time applications with embedded Linux.
Course Results
After this course, participants will be able to perform the following:
- Describe the role of Linux in embedded and real-time systems
- Take a requirement specification to a working application
- Design, develop, debug, build, and test real-time applications with Linux
- Use the Linux memory model effectively
- Design an application to make optimal use of inter-process communication, synchronization, timers, and file systems
- Describe features and protocol support for networking in Linux
- Deploy and manage an embedded Linux system
Products Supported
- Wind River® Workbench 3.0 for Linux
Who Should Attend
- Developers who work with Linux; Wind River Workbench; Wind River General Purpose Platform, Linux Edition; or Wind River Platform for Network Equipment, Linux Edition
- New project members on teams already using Linux
- Managers who want to get a quick understanding of Linux
- Senior engineers who want to evaluate Linux and/or Wind River Linux technology
Course Format
- This four-day expert-led course consists of lectures and lab sessions.
- Attendees use Wind River Linux 3.0 and Wind River Workbench 3.0 for Linux 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
Linux in Embedded Systems
- Linux introduction
- Leveraging open source
- The GPL and your IP
Developing Embedded Linux Applications
- Top considerations before starting Linux projects (Linux distributions; Linux development environment and tools)
- Root file system (introduction of Linux file systems)
The Role of the Root File System, File System Hierarchy, Busybox, Building/Acquiring a RootFS
- Linux kernel (Linux architecture; understanding the kernel version; kernel configuration tools; configuring the kernel)
- Booting your target (host preparation; Linux boot sequence; the role of the boot loader)
Day 2
Understanding Linux Memory Model
- Memory management in Linux (virtual memory model; how Linux uses the memory management unit (MMU))
- Kernel space review (kernel and scheduling policies; kernel modules; overview of device drivers; exception handling; interrupt handling; deferred functions—softirq, tasklet, bottom half)
- User space (Linux processes and threads)
Day 3
Understanding Linux Memory Model (cont’d)
- User space (daemons and servers; static libraries; shared libraries; dynamic linking library)
- Kernel to user space interface (I/O system; network interfaces; /proc and /sys file systems)
Using Linux in Your Application
- Inter-process communication (IPC) and synchronization (shared memory; semaphores; message queues; pipes; UNIX-domain sockets; signals)
- Linux timers (absolute time; user space timers and alarms; kernel space timers)
Day 4
Using Linux in Your Application (cont’d)
- File systems (file system buffers; journaling file systems; diskoriented file systems; flash file systems; network-based file systems)
- 2.4 vs. 2.6 kernel features
Networking in Linux
- Linux network stack and data flow
- Linux protocol support
- Getting connected options (web servers; web browsers; etc.)
Fielding and Managing an Embedded Linux System
- System initialization and maintenance
- Configuration and network setup
- Configuration and network setup
- Securing your target
Prerequisites
Prerequisite Course
- None
Prerequisite Skills
- Basic understanding of operating systems and debugging techniques
- Functional knowledge of Linux
- One year of C or C++ programming experience on Linux/UNIX