Update cookies preferences

Real-Time Embedded Systems: Design Principles and Engineering Practices [Paperback / softback]

(Associate Professor of Computer Science and Software Engineering, Behrend College, Penn State University, Erie, PA, USA.)
  • Format: Paperback / softback, 686 pages, height x width: 235x191 mm, weight: 1450 g, Contains 1 Digital (delivered electronically)
  • Pub. Date: 18-Feb-2015
  • Publisher: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • ISBN-10: 0128015071
  • ISBN-13: 9780128015070
Other books in subject:
  • Paperback / softback
  • Price: 93,24 €
  • This book is not in stock. Book will arrive in about 2-4 weeks. Please allow another 2 weeks for shipping outside Estonia.
  • Quantity:
  • Add to basket
  • Delivery time 4-6 weeks
  • Add to Wishlist
  • Format: Paperback / softback, 686 pages, height x width: 235x191 mm, weight: 1450 g, Contains 1 Digital (delivered electronically)
  • Pub. Date: 18-Feb-2015
  • Publisher: Newnes (an imprint of Butterworth-Heinemann Ltd )
  • ISBN-10: 0128015071
  • ISBN-13: 9780128015070
Other books in subject:

This book integrates new ideas and topics from real time systems, embedded systems, and software engineering to give a complete picture of the whole process of developing software for real-time embedded applications. You will not only gain a thorough understanding of concepts related to microprocessors, interrupts, and system boot process, appreciating the importance of real-time modeling and scheduling, but you will also learn software engineering practices such as model documentation, model analysis, design patterns, and standard conformance.

This book is split into four parts to help you learn the key concept of embedded systems; Part one introduces the development process, and includes two chapters on microprocessors and interrupts---fundamental topics for software engineers; Part two is dedicated to modeling techniques for real-time systems; Part three looks at the design of software architectures and Part four covers software implementations, with a focus on POSIX-compliant operating systems.

With this book you will learn:

  • The pros and cons of different architectures for embedded systems
  • POSIX real-time extensions, and how to develop POSIX-compliant real time applications
  • How to use real-time UML to document system designs with timing constraints
  • The challenges and concepts related to cross-development
  • Multitasking design and inter-task communication techniques (shared memory objects, message queues, pipes, signals)
  • How to use kernel objects (e.g. Semaphores, Mutex, Condition variables) to address resource sharing issues in RTOS applications
  • The philosophy underpinning the notion of "resource manager" and how to implement a virtual file system using a resource manager
  • The key principles of real-time scheduling and several key algorithms
  • Coverage of the latest UML standard (UML 2.4)
  • Over 20 design patterns which represent the best practices for reuse in a wide range of real-time embedded systems
  • Example codes which have been tested in QNX---a real-time operating system widely adopted in industry

Reviews

"...does an excellent job of covering the details no one talks about, like ELF/COFF files and link sections (e.g., .bss)...I recommend it...youll get some really worthwhile ideas." --Embedded

More info

Learn the software practices to develop real-time embedded applications
Preface xv
Acknowledgments xix
Dedication xxi
Acronyms xxiii
Part I: Introduction 1(128)
Chapter 1 Introduction to Embedded and Real-Time Systems
3(12)
1.1 Embedded Systems
3(2)
1.2 Real-Time Systems
5(3)
1.2.1 Soft Real-Time Systems
5(1)
1.2.2 Hard Real-Time Systems
6(1)
1.2.3 Spectrum of Real-Time Systems
7(1)
1.3 Case Study: Radar System
8(5)
Problems
13(2)
Chapter 2 Cross-Platform Development
15(26)
2.1 Cross-Platform Development Process
16(1)
2.2 Hardware Architecture
17(1)
2.3 Software Development
18(7)
2.3.1 Software Design
18(1)
2.3.2 System Programming Language C/C++
18(7)
2.3.3 Test Hardware-Independent Modules
25(1)
2.4 Build Target Images
25(13)
2.4.1 Cross-Development Toolchain
25(3)
2.4.2 Executable and Linking Format
28(6)
2.4.3 Memory Mapping
34(2)
2.4.4 Case Study: Building a QNX Image
36(2)
2.5 Transfer Executable File Object to Target
38(1)
2.6 Integrated Testing on Target
39(1)
2.7 System Production
39(1)
Problems
40(1)
Chapter 3 Microprocessor Primer
41(44)
3.1 Introduction to Microprocessors
42(6)
3.1.1 Commonly Used Microprocessors
42(2)
3.1.2 Microprocessor Characteristics
44(4)
3.2 Microchip PIC18F8720
48(10)
3.2.1 Memory Organization
48(4)
3.2.2 Word Write Mode
52(2)
3.2.3 Byte Select Mode
54(3)
3.2.4 Byte Write Mode
57(1)
3.3 Intel 8086
58(10)
3.3.1 Memory Organization
60(1)
3.3.2 Separate I/O Address Space
61(3)
3.3.3 Memory Address Space
64(1)
3.3.4 Wait States
65(3)
3.4 Intel Pentium
68(9)
3.4.1 Bus State Transition
71(4)
3.4.2 Memory Organization
75(2)
3.5 ARM926EJ-S
77(4)
3.5.1 TCM Interface
78(3)
Problems
81(4)
Chapter 4 Interrupts
85(34)
4.1 Introduction to Interrupts
86(1)
4.2 External Interrupts
86(9)
4.2.1 Nonvectored Interrupting
87(1)
4.2.2 PIC and Vectored Interrupting
88(7)
4.3 Software Interrupts
95(1)
4.4 Internal Interrupts
96(1)
4.5 Design Patterns for ISRs
97(7)
4.5.1 General ISR Design Pattern
97(1)
4.5.2 ISR with a Server Task
98(1)
4.5.3 ISR Chaining
99(1)
4.5.4 ISR Cascading
100(1)
4.5.5 Data Sharing with ISRs
101(3)
4.6 Interrupt Response Time
104(1)
4.7 Case Study: x86
105(6)
4.7.1 Hardware Interrupts
108(2)
4.7.2 Put It All Together
110(1)
4.8 Case Study: ARM Processor
111(6)
4.8.1 Hardware Interrupts
113(2)
4.8.2 Put It All Together
115(2)
Problems
117(2)
Chapter 5 Embedded System Boot Process
119(10)
5.1 System Bootloader
119(1)
5.2 System Boot Process
120(3)
5.2.1 Load Embedded Software
120(2)
5.2.2 Prepare Embedded Software for Execution
122(1)
5.3 Case Study: AT91SAM9G45 Boot Process
123(1)
5.4 Load ELF Objects Embedded Within an OS Image
124(1)
5.5 Case Study: Boot Process of QNX-based Embedded Systems
125(2)
Problems
127(2)
Part II: Real-Time System Modeling 129(172)
Chapter 6 Fundamental UML Structural Modeling
131(54)
6.1 Unified Modeling Language
132(1)
6.2 Class Diagram and Class Modeling
133(33)
6.2.1 Class
136(5)
6.2.2 Instance-Level Relationships
141(15)
6.2.3 Dependency Relationships
156(5)
6.2.4 Generalization
161(5)
6.3 Class Modeling Principles
166(11)
6.3.1 Model Evolution
166(1)
6.3.2 Subclassing
167(3)
6.3.3 Minimum Information Redundancy
170(3)
6.3.4 Refactoring
173(4)
6.4 Object Diagram
177(1)
6.5 Package Diagram
177(6)
6.5.1 Package Import
179(1)
6.5.2 Package Merge
180(3)
Problems
183(2)
Chapter 7 Architecture Modeling in UML
185(18)
7.1 Levels of Architectural Abstraction
185(1)
7.2 UML Structure Diagram
186(6)
7.3 Modeling Components
192(3)
7.4 Modeling Subsystems
195(4)
7.4.1 Class Diagram Versus Subsystem Diagram
197(2)
7.5 Modeling a Complete System
199(1)
7.6 Deployment Diagram
200(1)
Problems
201(2)
Chapter 8 Fundamental UML Behavioral Modeling
203(20)
8.1 Use Case Diagram and Use Case Modeling
203(7)
8.1.1 Use Case Diagram
203(4)
8.1.2 Use Case Descriptions
207(2)
8.1.3 Use Case Levels
209(1)
8.2 Sequence Diagram
210(4)
8.3 Activity Diagram
214(7)
Problems
221(2)
Chapter 9 Modeling Stateful Behaviors in UML
223(24)
9.1 Basics of a State Machine Diagram
223(7)
9.1.1 States
224(1)
9.1.2 Transitions and Events
224(2)
9.1.3 Pseudostates
226(2)
9.1.4 A Network Protocol Modeled by State Machines
228(2)
9.2 Composite States
230(4)
9.2.1 Entry Point, Exit Point, and History
230(3)
9.2.2 Concurrency
233(1)
9.3 Inheritance of State Behavior
234(2)
9.4 Stateful Object Timing Diagrams
236(1)
9.5 Example: Modeling Stateful Behavior of a Radar System
237(8)
9.5.1 Modeling the Transceiver
239(2)
9.5.2 Modeling the Link Driver
241(2)
9.5.3 Modeling the Command Messenger
243(2)
Problems
245(2)
Chapter 10 Real-Time UML: General Resource Modeling
247(24)
10.1 Real-Time UML Profile
247(4)
10.1.1 Meta Modeling, UML Stereotypes, and Tags
248(3)
10.2 Resource Modeling
251(9)
10.2.1 UML Core Resource Model
252(2)
10.2.2 Action and Action Execution
254(1)
10.2.3 UML Stereotypes for Protected Resources
255(2)
10.2.4 Resource Usage
257(2)
10.2.5 Resource-Client Graph
259(1)
10.3 Time Modeling
260(6)
10.3.1 The Notion of Time
260(1)
10.3.2 Timing Mechanisms
261(3)
10.3.3 Time Modeling Stereotypes
264(2)
10.4 Concurrency Modeling
266(4)
Problems
270(1)
Chapter 11 Real-Time UML: Model Analysis
271(30)
11.1 Elicitation of Timing Constraints
271(4)
11.2 RT-UML Profile Schedulability Modeling Subprofile
275(11)
11.2.1 RT-UML Profile Metaconcepts for Schedulability Analysis
275(6)
11.2.2 Schedulability Stereotypes
281(3)
11.2.3 Using the Schedulability Subprofile
284(2)
11.3 RT-UML Profile Performance Modeling Subprofile
286(10)
11.3.1 RT-UML Profile Metaconcepts for Performance Analysis
286(3)
11.3.2 Performance Stereotypes
289(2)
11.3.3 Using the Performance Subprofile
291(5)
Problems
296(5)
Part III: Real-Time System Design 301(170)
Chapter 12 Software Architectures for Real-Time Embedded Systems
303(36)
12.1 Real-Time Tasks
304(6)
12.1.1 Worst-Case Task Execution Time
304(2)
12.1.2 Task Specification
306(1)
12.1.3 Task Timing Diagrams
306(3)
12.1.4 Worst-Case Response Time
309(1)
12.1.5 Task Implementation
310(1)
12.2 Round-Robin Architecture
310(14)
12.2.1 Case Study: Body Thermometer
310(10)
12.2.2 General Round-Robin Architecture
320(2)
12.2.3 Worst-Case Event Response Time
322(2)
12.3 Round Robin with Interrupts
324(9)
12.3.1 Case Study: The Simon Game
324(4)
12.3.2 General Architecture
328(3)
12.3.3 Worst-Case Event Response Time
331(2)
12.4 Queue-Based Architecture
333(4)
12.4.1 Nonpreemptive FIFO Queue
334(1)
12.4.2 Nonpreemptive Priority Queue
335(2)
Problems
337(2)
Chapter 13 POSIX and RTOS
339(30)
13.1 Introduction to POSIX
339(12)
13.1.1 POSIX Processes and Threads
340(2)
13.1.2 POSIX Real-Time Extensions
342(8)
13.1.3 POSIX Compliance and Conformance
350(1)
13.2 Task Statics and Dynamics
351(4)
13.2.1 General Task Structure
351(2)
13.2.2 Task State Transition
353(2)
13.3 Real-Time OSs
355(3)
13.4 POSIX Real-Time Scheduling Policies
358(6)
13.4.1 FIFO Scheduling Policy
359(1)
13.4.2 Round-Robin Scheduling Policy
360(1)
13.4.3 Sporadic Server Scheduling Policy
361(3)
13.5 Other Real-Time Scheduling Policies
364(4)
13.5.1 Minimum Laxity First
364(1)
13.5.2 Earliest Deadline First
365(1)
13.5.3 Scheduling with Deadline-Monotonic Assignment
366(1)
13.5.4 Scheduling with Rate-Monotonic Assignment
367(1)
Problems
368(1)
Chapter 14 Multitasking
369(30)
14.1 Introduction to Multitasking
369(1)
14.2 Multitask Design
370(11)
14.2.1 Task Identification
371(4)
14.2.2 Task Transformation
375(5)
14.2.3 Task Parameter Estimation
380(1)
14.3 Multitask Resource Sharing
381(5)
14.3.1 Resource Deadlocks
383(1)
14.3.2 Priority Inversion
384(2)
14.4 Addressing Resource Deadlocks
386(4)
14.4.1 Deadlock Prevention
386(1)
14.4.2 Deadlock Detection
387(1)
14.4.3 Deadlock Avoidance
388(2)
14.5 Addressing Priority Inversion
390(7)
14.5.1 Priority Inheritance Protocol
391(1)
14.5.2 Highest Locker Protocol
392(2)
14.5.3 Priority Ceiling Protocol
394(3)
Problems
397(2)
Chapter 15 Real-Time Scheduling: Clock-Driven Approach
399(20)
15.1 Introduction to Cyclic Scheduling
399(3)
15.1.1 Assumptions
400(1)
15.1.2 Preemptable Aperiodic Jobs
401(1)
15.2 Ad-hoc Clock-Driven Scheduling
402(3)
15.2.1 Ad-hoc Clock-Driven Scheduler
403(1)
15.2.2 Execution Overhead
404(1)
15.3 Frame-Based Scheduling
405(7)
15.3.1 Constraints on Frame Size
405(4)
15.3.2 Robust Frame-Based Schedule
409(2)
15.3.3 Frame-Based Scheduler
411(1)
15.4 Scheduling Aperiodic Jobs
412(2)
15.5 Task Splitting
414(3)
Problems
417(2)
Chapter 16 Real-Time Scheduling: Rate-Monotonic Approach
419(30)
16.1 Priority Assignment
419(2)
16.2 RMA Principle
421(3)
16.3 Rate-Monotonic Analysis
424(2)
16.4 Completion-Time Test
426(3)
16.5 Period Transformation
429(5)
16.6 Generalized Schedulability Analysis
434(11)
16.6.1 Tasks with Blocking Time
434(4)
16.6.2 Tasks with Earlier Deadlines
438(2)
16.6.3 Example
440(4)
16.6.4 Tasks with Equal Priorities
444(1)
Problems
445(4)
Chapter 17 Real-Time Scheduling: Sporadic Server
449(22)
17.1 Sporadic Tasks
449(1)
17.2 Sporadic Server
450(6)
17.2.1 Task Design for Sporadic Servers
451(1)
17.2.2 Acceptance Test
452(4)
17.3 A Naive Sporadic Server
456(2)
17.3.1 Task Design
457(1)
17.3.2 Acceptance Test
457(1)
17.4 A Fixed-Priority Sporadic Server
458(7)
17.5 A Dynamic-Priority Sporadic Server
465(3)
Problems
468(3)
Part IV: Implementation Patterns 471(178)
Chapter 18 Resource Sharing
473(54)
18.1 Shared Variables
473(4)
18.2 Shared Memory
477(6)
18.2.1 Mapping File Objects
478(3)
18.2.2 Shared Memory Objects
481(2)
18.3 Semaphore
483(16)
18.3.1 Task Synchronization
485(2)
18.3.2 Flow Control
487(1)
18.3.3 Resource Protection
488(2)
18.3.4 POSIX Functions for Semaphores
490(1)
18.3.5 Semaphore Examples
491(8)
18.4 Mutex
499(8)
18.4.1 Mutex Usage Pattern
500(3)
18.4.2 POSIX Functions for Mutexes
503(1)
18.4.3 An Example of Using a Mutex
504(3)
18.5 Condition Variable
507(18)
18.5.1 Barrier Synchronization
509(5)
18.5.2 Producer-Consumer Pattern
514(5)
18.5.3 Read-Write Locks
519(6)
Problems
525(2)
Chapter 19 Intertask Communication: Message Queue
527(22)
19.1 Introduction to Message Queues
527(1)
19.2 Message Queue Statics and Dynamics
528(3)
19.3 Message Queue Usage Patterns
531(7)
19.3.1 Unidirectional Communication
532(1)
19.3.2 Acked-Unidirectional Communication
533(1)
19.3.3 Bidirectional Communication
534(2)
19.3.4 Client-Server Communication
536(2)
19.4 POSIX Functions for Message Queues
538(3)
19.5 An Example of Using Message Queues
541(6)
Problems
547(2)
Chapter 20 Intertask Communication: Pipe
549(16)
20.1 Introduction to Pipes
549(1)
20.2 Pipe Statics and Dynamics
550(2)
20.3 Pipe Usage Patterns
552(1)
20.4 POSIX Functions for Pipes
553(5)
20.4.1 Multiple Writers and Readers
555(2)
20.4.2 POSIX Select Operation on Pipes
557(1)
20.5 An Example of Using Pipes
558(5)
Problems
563(2)
Chapter 21 Intertask Communication: Signaling
565(42)
21.1 Introduction to POSIX Signals
565(2)
21.2 Signal Handling
567(1)
21.3 Signal Vector Table and Handlers
568(1)
21.4 POSIX Signal Functions
569(1)
21.5 QNX Implementation of POSIX Signals
570(7)
21.5.1 Example: Handling Signals in Different Processes
570(3)
21.5.2 Example: Controlling a Task Server
573(4)
21.6 Spinlocks and Interrupt Events from ISRs
577(10)
21.6.1 POSIX Spinlocks
577(1)
21.6.2 QNX Event Structure
577(1)
21.6.3 Interrupt Handling in QNX Applications
578(1)
21.6.4 Example: Interrupt Events from ISRs
579(8)
21.7 QNX Pulses
587(18)
21.7.1 QNX Synchronous Message Passing
587(4)
21.7.2 QNX Asynchronous Pulsing Mechanism
591(2)
21.7.3 Hierarchical Messaging Pattern
593(1)
21.7.4 Priority Inheritance by Message Receivers
594(1)
21.7.5 Example: A Simple Timer Manager
594(11)
Problems
605(2)
Chapter 22 Software Timer Management
607(18)
22.1 Hardware Timer and Software Timer
607(3)
22.2 Software Timer Manager
610(2)
22.2.1 Chain a Dedicated Timer ISR
611(1)
22.2.2 Use an OS Timer
612(1)
22.3 Timing Wheels
612(6)
22.3.1 Precision Error
615(2)
22.3.2 Timers with Wide Ranges
617(1)
22.4 Hierarchical Timing Wheels
618(6)
22.4.1 Reference Context and Timer Management
619(1)
22.4.2 Implementation
620(4)
Problems
624(1)
Chapter 23 QNX Resource Management
625(24)
23.1 Introduction to QNX Resource Management
625(1)
23.2 Resource Manager Architecture
626(4)
23.2.1 Control Structure
628(1)
23.2.2 Key Data Structures
629(1)
23.3 Example 1: Calculator as a Resource Manager
630(12)
23.3.1 Superstructure
630(2)
23.3.2 Handle Messages from Clients
632(7)
23.3.3 Register to Process Manager
639(1)
23.3.4 Use Resource Manager
640(2)
23.4 Example 2: Device Drivers
642(6)
23.4.1 Joysticks
642(1)
23.4.2 LEDs
643(2)
23.4.3 Polling-Based Input Event Detection
645(3)
Problems
648(1)
References 649(4)
Index 653
Dr. Xiaocong (Simon) Fan is an Associate Professor of Computer Science and Software Engineering at Pennsylvania State University. He received his Ph.D. in Software Engineering from Nanjing University, China. He has been an active researcher in the fields of Multi-Agent Systems, Formal Methods in Software Engineering, and Advanced Decision-Support Systems. He is a key architect of several intelligent agent systems, including RCAST and SMMall. Dr. Fan is a Senior Member of IEEE.