multicore

Design multicore Zephyr systems with SMP, AMP, and IPC.

59|13|Updated Feb 7, 2026
One-click install
npx skills add https://github.com/beriberikix/zephyr-agent-skills --skill multicore
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: multicore
Source: https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/multicore
Command: npx skills add https://github.com/beriberikix/zephyr-agent-skills --skill multicore

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Engineers designing systems with multiple CPU cores need a structured approach to configure, coordinate, and secure cross-core execution and communication. This Skill provides a cohesive set of patterns for Zephyr SMP, AMP with OpenAMP/RPMsg, IPC patterns, and dynamic extension loading.

Core Features & Use Cases

  • SMP configuration and thread affinity for multi-core SoCs
  • OpenAMP/RPMsg-based cross-core communication between homogeneous or heterogeneous cores
  • IPC patterns for efficient data sharing and synchronization
  • LLEXT dynamic extensions to load modular functionality at runtime
  • Use Case: A dual-core MCU handling real-time control on Core 0 and image processing on Core 1 with secure extension loading

Quick Start

Configure SMP on a dual-core SoC by enabling CONFIG_SMP=y and CONFIG_MP_NUM_CPUS=2 in prj.conf. Set up an OpenAMP/RPMsg channel for cross-core messaging and choose an IPC pattern (e.g., mailboxes or shared memory) for data exchange. If dynamic extension loading is required, enable LLEXT (CONFIG_LLEXT=y) and provide an ELF extension path.

Frequently Asked Questions about multicore

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I configure Zephyr SMP on a dual-core SoC?

To configure Zephyr SMP on a dual-core SoC, enable CONFIG_SMP=y and CONFIG_MP_NUM_CPUS=2 in your prj.conf file. This activates symmetric multiprocessing and allocates two CPU cores for the system.

What is the best way to set up cross-core communication in Zephyr?

The best way to set up Zephyr cross-core communication is using OpenAMP and RPMsg channels. This enables efficient messaging between homogeneous or heterogeneous cores via established IPC patterns.

Can I load dynamic extensions at runtime on a multicore Zephyr system?

Yes, you can load dynamic extensions at runtime on multicore Zephyr by enabling LLEXT with CONFIG_LLEXT=y. You then provide an ELF extension path to load modular functionality onto the cores.

Does Zephyr support AMP for heterogeneous multicore SoCs?

Zephyr supports asymmetric multiprocessing (AMP) for heterogeneous multicore SoCs using OpenAMP and RPMsg. This allows separate cores to run different execution contexts while sharing data securely.

What IPC patterns are available for data sharing between Zephyr cores?

Available IPC patterns for Zephyr inter-core data sharing include mailboxes and shared memory configurations. These patterns synchronize data exchange efficiently across SMP and AMP multicore architectures.