Heterogeneous Multi-core Processing Overview
Introduction
Heterogeneous Multi-core Processing (HMP) on Toradex SoMs enables you to pair a high-performance application processor running Linux (Cortex-A) with one or more low-power real-time cores (Cortex-M or Cortex-R, for example). This architecture offloads time-critical or deterministic tasks (e.g., sensor handling, motor control) to the Cortex-M/Cortex-R cores. At the same time, the Cortex-A handles higher-level functions, typically running a fully featured OS (such as Embedded Linux, Torizon, Android, or QNX, among others), enabling both high throughput and real-time responsiveness.
HMP is also known as Asymmetric Multiprocessing (AMP), Asymmetric MCU Clustering, Dual-Core MCU, Domain-specific MCU Islands or Co-processor Offload.
Why Use Heterogeneous Multi-Core Processing
- Real-Time Performance: Run low-level tasks without the overhead of an operating system.
- Power Efficiency: While the Cortex-A cores remain in low-power mode, other cores, such as Cortex-M and Cortex-R, can perform tasks, improving the system's overall energy efficiency.
- Separation of Concerns: Split tasks based on complexity, run critical tasks independent of non-critical functions.
- Asynchronous Operation: Both cores can run in parallel, processing different tasks concurrently without interrupting each other.
Glossary
- SDK: Software development kit, usually provides libraries, headers and examples. Both NXP and TI have their own SDKs (MCUXpresso SDK and MCU+ SDK, respectively)
- U-Boot: The bootloader used on Toradex SoMs; supports commands to load binaries into the Cortex-M/R core, such as
ext4loadandrproc. - RTOS: Real Time Operating Systems are a type of operating system designed to guarantee deterministic, bounded response times for time-critical tasks.
- RemoteProc: Linux kernel framework to boot and control remote processors (Cortex-M/R) from the main CPU.
- RPMsg: IPC protocol built on top of RemoteProc for message-based communication between Linux and Cortex-M/R.
- Shared Memory: Memory region mapped into both domains for fast data exchange.
- JTAG: Hardware interface for debugging and programming embedded cores.
Common Use Cases
- Deterministic GPIO/LED control: RTOS owns the GPIO hardware and executes time-critical I/O, while Linux sends control commands via RPMsg, ensuring predictable response times under all system loads.
- Sensor acquisition on RTOS, processing on Linux: RTOS performs precise, periodic sensor sampling and shares data with Linux, which handles logging, visualization, analytics, and networking.
- Motor control with Linux-based HMI and networking: RTOS runs real-time control loops (PWM, PID, encoder feedback) while Linux provides user interfaces, connectivity, and system management.
- Split audio pipeline: RTOS captures and buffers audio with low latency, and Linux performs compression, storage, streaming, and higher-level DSP without risking audio dropouts.
- Safety watchdog and system supervision: RTOS monitors Linux health and system signals and can reset or isolate Linux to meet functional safety requirements.
- Secure key storage and cryptographic offload: RTOS owns cryptographic hardware and private keys, exposing secure services to Linux without allowing direct access to secrets.
Getting Started With HMP
- NXP-based modules: Setting Up MCUXpresso SDK and Toolchain
- TI-based modules: Setting Up MCU+ SDK and Toolchain
Having Trouble?
Please check out our Community Forum for additional support.