Real-time embedded systems are special embedded systems that must meet certain real-time requirements. Typical examples of real-time embedded systems include autonomous driving systems, smart manufacturing systems, transportation control systems, etc. Due to the real-time constraints, special hardware architecture and software structure should be used during the development of a real-time embedded system, including the use of direct memory access (DMA), memory management policy, task scheduling, inter-task communication, etc. This course will introduce the important concepts and development techniques of real-time embedded systems, including the following major topics:
- Important concepts of real-time embedded systems, such as: hard real-time vs. software real-time constraints, periodic vs. aperiodic vs. sporadic events, event-driven vs. time-driven state transitions, preemptive vs. non-preemptive scheduling, etc.
- Introduction to unique features of real-time operating systems (RTOS) compared with general-purpose operating systems (GPOS), in terms of task scheduling, resource allocation, etc.
- Using the μC/OS-II and FreeRTOS to introduce the programming model of real-time embedded systems, including software structure, task assignment, inter-task synchronization and communication (e.g., semaphores, message queue), memory usage and management, and so on.
- Testing, debugging and performance bench-marking of real-time embedded systems.