What we want to talk about is a brief topic, but I think an important one. In any instruction set architecture family like ARM, or MIPS, or PowerPC, or x86, x64, you have a wide variety of designs for systems on chip or microprocessor controller units, etc. to choose from. We're going to take a look at the ARM instruction set architecture and particular as an example, and consider what the options are that we would want for different types of applications, for example, for hard real-time mission-critical applications versus soft real-time or small-scale cyclic executive types of applications. The ARM family nicely differentiates those categories very well, so that's why I choose that as an example. For ARM, the most prevalently used ARM architectures are the M and the A series. The M series is really typically found in scaled-down types of solutions like the Texas Instruments Tiva, MCUs, NXP, Cypress, Silicon Labs. You may be familiar with some of these. The Cortex-M4 processors, particularly popular and useful. That's because of the basic design with features that are useful in this world, like DSP, as well as a JTAG for cross-development and debug, things like ETM, Embedded Trace Macrocell, and simple design with things that are really convenient for small-scale microprocessor solutions. A good example might be like in-lock braking or features under the hood of a car. This is where it's very successful. A real-time cyclic executive would be a nice approach with this. In other words, an RTOS or Linux may be kind of beyond this MCU. FreeRTOS can run one of these M series certainly. But you might just create a main loop with interrupt service routines, and within that loop, create a cyclic executive. Much like the sequencer we've been talking about, but just with a loop for main program, interrupts to synchronize to events, and basically functions that execute adding that specific sub rates of that main loop rate. This is efficient, easy to blend into control and signal processing type applications. This would be really what I would call scale-down real-time systems. Could be mission-critical, hard real-time. But in other words, a small number of services and very purpose-built for something like breaking control and monitoring system. The other end of the spectrum, this is more of the scale-up type of solution. This might be for anything from best-effort to SRT to even hard real-time for the M series. Scale up with the A series is more likely going to be for best-effort or SRT. We'll talk about why as we go on. But things like smartphones. So you're going to find the A series in smartphones and tablets. It has an architecture that's designed for high throughput with great average case performance. It, however, is much less deterministic because of things like the multi-tiered cache architecture. Because of this, you get higher throughput, but less deterministic behavior. But you get better scaling. For example, our Raspberry Pi 3B+, or maybe you're using the Raspberry Pi 4, has four A series cores on it. So quite scalable, quite capable. But as we know, the worst-case execution time can be a little bit more variable on a system like this. What is the middle ground between M series and A series? Well, it's R series with ARM. You can find that our series solutions like TI Hercules, that have great mission-critical features. Mission crit like lock-step, multi-instruction, single data execution. In other words, redundancy at the MCU level, predictable deterministic response supported by things like a tightly coupled memory instead of a cache hierarchy, and resilience and recovery fail-safe features built-in. ECC memory, which we talked about in course 3 in this series. Flash memory with data protection, which we also talked about in course 3. A hardware watchdog timer. Great for real-time critical services, as well as best-effort. As ARM claims, this was purpose-built for mission-critical real-time systems. The creation of a real-time system solution really starts at the hardware level and proper selection, sizing, and design of the microprocessor system, your PCB, printed circuit board, how are you going to integrate that, and then what kind of software you're going to run on top of that cyclic executive RTOS or Linux with real-time extensions. We've also, of course, talked about completely different alternatives like using FPGA state machines or ASIC-based coprocessors, which we'll also cover here in the end of this course for completeness. But that would be more of an advanced topic that goes beyond even the series of courses that we have here. But coprocessors do provide another alternative, more of a way of shifting the problem off of the main platform onto a coprocessor, either purpose-built FPGA state machine, ASIC, or some sort of DSP, or special purpose processing coprocessor. We'll talk about how to do that, why you might want to do that, but not really how to do that in this series of courses. Thank you very much.