Real-Time Embedded Systems: Design Principles and Engineering Practices
Xiaocong FanThis 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