Real-time embedded systems pervade many aspects of modern life ranging from household appliances, transportation and motion control systems, medical systems and devices, robotics, multimedia and mobile communications, video-games, energy generation/distribution/management, to aerospace and defense systems. This course has three complementary goals. One, it will cover the core concepts and principles underlying these systems, including resource management, scheduling, dependability and safety. Implications to multi-core platforms, SoCs, networks and communication buses will also be discussed. Mathematical models and analysis techniques will be presented. Two, the course will offer hands-on experience with implementing real-time embedded systems on realistic platforms. This will be facilitated by detailed discussions of hardware-software interfaces, concurrency and communications. Finally, application-level concepts such as signal processing, image processing, computer vision, sensor fusion and feedback control will complete an overview of the breadth and depth of real-time embedded systems. Knowledge of the C programming language, basic computer architecture and an assembly language will be assumed.
Principles of dependability (hardware) SoC issues Illustration of application domains such as transportation and energy systems Exposure to and understanding of commercially available tools and frameworks Hands-on lab projects provide students with direct experience on both the hardware and software commonly used in embedded system design. Knowledge of C, computer architecture and some assembly language programming introduces the various building blocks and underlying scientific and engineering principles behind embedded real-time systems. The course covers the integrated hardware and software aspects of embedded processor architectures, along with advanced topics such as real-time, resource/device and memory management. Students can expect to learn how to program with the embedded architecture that is ubiquitous in cell-phones, portable gaming devices, robots, PDAs, etc. Students will then go on to learn and apply real-time principles that are used to drive critical embedded systems like automobiles, avionics, medical equipment, the Mars rover, etc. Topics covered include embedded architectures (building up to modern 16/32/64-bit embedded processors); interaction with devices (buses, memory architectures, memory management, device drivers); concurrency (software and hardware interrupts, timers); real-time principles (multi-tasking, scheduling, synchronization); implementation trade-offs, profiling and code optimization (for performance and memory); embedded software (exception handling, loading, mode-switching, programming embedded systems). Through a series of laboratory exercises with state-of-the-art embedded processors and industry-strength development tools, students will acquire skills in the design/implementation/debugging of core embedded real-time functionality.