I Concurrent Programming Concepts
2 A Case Study: Vision Control
2.1.1 Accessing the I/O Registers
2.1.3 Direct Memory Access (DMA)
2.2 Input/Output Operations and the Operating System
2.2.2 Input/Output Abstraction in Linux
2.3 Acquiring Images from a Camera Device
2.3.1 Synchronous Read from a Camera Device
2.3.3 Handling Data Streaming from the Camera Device
2.5 Finding the Center Coordinates of a Circular Shape
3 Real-Time Concurrent Programming Principles
3.4 Process Life Cycle and Process State Diagram
4.2 Formal Definition of Deadlock
4.3 Reasoning about Deadlock: The Resource Allocation Graph
4.7 Deadlock Detection and Recovery
5 Interprocess Communication Based on Shared Variables
5.1 Race Conditions and Critical Regions
5.2 Hardware-Assisted Lock Variables
5.3 Software-Based Mutual Exclusion
5.4 From Active to Passive Wait
6 Interprocess Communication Based on Message Passing
6.5 Message Structure and Contents
6.6 Producer–Consumer Problem with Message Passing
7 Interprocess Communication Primitives in POSIX/Linux
7.2 Interprocess Communication among Threads
7.2.1 Mutexes and Condition Variables
7.3 Interprocess Communication among Processes
8 Interprocess Communication Primitives in FreeRTOS
8.1 FreeRTOS Threads and Processes
8.3 Counting, Binary, and Mutual Exclusion Semaphores
10 Lock and Wait-Free Communication
10.1 Basic Principles and Definitions
10.3 Application to the Readers/Writer Problem
II Real-Time Scheduling Analysis
11 Real-Time Scheduling Based on the Cyclic Executive
11.1 Scheduling and Process Models
11.3 Choice of Major and Minor Cycle Length
11.4 Tasks with Large Period or Execution Time
12 Real-Time, Task-Based Scheduling
12.1 Fixed and Variable Task Priority
12.1.2 Variable Priority in General Purpose Operating Systems
12.2.1 Proof of Rate Monotonic Optimality
12.3 The Earliest Deadline First Scheduler
13 Schedulability Analysis Based on Utilization
13.2 Sufficient Schedulability Test for Rate Monotonic
13.3 Schedulability Test for EDF
14 Schedulability Analysis Based on Response Time Analysis
14.2 Computing the Worst-Case Execution Time
14.3 Aperiodic and Sporadic Tasks
15 Task Interactions and Blocking
15.1 The Priority Inversion Problem
15.2 The Priority Inheritance Protocol
15.3 The Priority Ceiling Protocol
15.4 Schedulability Analysis and Examples
16 Self-Suspension and Schedulability Analysis
16.1 Self-Suspension and the Critical Instant Theorem
16.2 Self-Suspension and Task Interaction
16.3 Extension of the Response Time Analysis Method
17 Internal Structure of FreeRTOS
17.1 Task Scheduler/Context Switch
17.2 Synchronization Primitives
17.3 Porting FreeRTOS to a New Architecture
18 Internal Structures and Operating Principles of Linux Real-Time Extensions
18.3 The PREEMPT_RT Linux Patch
18.3.1 Practical Considerations
19.1 An Object Oriented Interface to Threads and Other IPC Mechanisms
19.1.2 FreeRTOS Implementation
19.2 A Sample Multiplatform Application
20 Control Theory and Digital Signal Processing Primer
20.1 Case Study 1: Controlling the Liquid Level in a Tank
20.1.1 The Use of Differential Equations to Describe the Dynamics of the System
20.1.2 Introducing an Integral Gain
20.1.3 Using Transfer Functions in the Laplace Domain
20.1.4 Deriving System Properties from Its Transfer Function
20.1.5 Implementing a Transfer Function
20.2 Case Study 2: Implementing a Digital low-pass Filter
20.2.1 Harmonics and the Fourier Transform
20.2.3 The Choice of the Sampling Period
20.2.4 Building the Digital Low-Pass Filter
18.223.107.85