{"id":"c395fcdb-6026-4e5b-91f4-9425c482c9cd","shortId":"HWeVt9","kind":"skill","title":"multicore","tagline":"Developing for multicore systems in Zephyr RTOS. Covers Symmetric Multiprocessing (SMP), Asymmetric Multiprocessing (AMP) with OpenAMP/RPMsg, inter-processor communication (IPC) patterns, and Linkable Extensions (LLEXT). Trigger when designing for SoCs with multiple homogeneous o","description":"# Zephyr Multicore Development\n\nLeverage multiple CPU cores to increase performance, isolate critical tasks, and integrate heterogeneous systems.\n\n## Core Workflows\n\n### 1. SMP Configuration\nRun the Zephyr kernel and your threads across multiple identical cores.\n- **Reference**: **[smp_configuration.md](references/smp_configuration.md)**\n- **Key Tools**: `CONFIG_SMP`, `k_spinlock`, Thread Affinity.\n\n### 2. OpenAMP & RPMsg\nCommunicate between heterogeneous cores (e.g., A-series and M-series) using standard protocols.\n- **Reference**: **[openamp_rpmsg.md](references/openamp_rpmsg.md)**\n- **Key Tools**: `CONFIG_OPENAMP`, message vrings, Resource Tables.\n\n### 3. IPC Patterns\nImplement efficient data exchange between cores using high-level services or low-level mailboxes.\n- **Reference**: **[ipc_patterns.md](references/ipc_patterns.md)**\n- **Key Tools**: `IPC Service`, IPM drivers, Shared Memory.\n\n### 4. LLEXT (Linkable Extensions)\nDynamically load and run binary modules at runtime without a full firmware update.\n- **Reference**: **[llext_basics.md](references/llext_basics.md)**\n- **Key Tools**: `CONFIG_LLEXT`, dynamic ELF loading, Symbol Export.\n\n## Quick Start (SMP prj.conf)\n```kconfig\n# Enable SMP for dual-core SoCs\nCONFIG_SMP=y\nCONFIG_MP_NUM_CPUS=2\n```\n```c\n// Using spinlocks for cross-core sync\nstruct k_spinlock lock;\nk_spinlock_key_t key = k_spin_lock(&lock);\n// ... critical section ...\nk_spin_unlock(&lock, key);\n```\n\n## Professional Patterns (Architecture Design)\n- **Linux Bridging**: Use OpenAMP/RPMsg to bridge Zephyr real-time logic with a Linux application controller.\n- **Core Isolation**: Pin high-frequency interrupts (e.g., motor control) to Core 1 and keep the main application on Core 0 to prevent jitter.\n- **Zero-Copy Transfers**: Use shared memory regions for large data (video/audio) and only pass meta-data via IPC channels to minimize overhead.\n\n## Automation Tools\n- **[smp_config_check.py](scripts/smp_config_check.py)**: Validate SMP-related Kconfig consistency in `prj.conf`.\n\n## Examples & Templates\n- **[rpmsg_channel_contract.md](assets/rpmsg_channel_contract.md)**: Starter channel contract for RPMsg endpoint design.\n\n## Validation Checklist\n- [ ] SMP builds run with expected CPU count and no cross-core race regressions.\n- [ ] OpenAMP/RPMsg endpoint exchange passes bidirectional message tests.\n- [ ] IPC latency and throughput remain within target budget under load.\n- [ ] LLEXT module load/unload path resolves symbols and handles failure cases safely.\n\n## Resources\n\n- **[References](references/)**:\n  - `smp_configuration.md`: Configuration and spinlocks.\n  - `openamp_rpmsg.md`: AMP and Linux interoperability.\n  - `ipc_patterns.md`: Mailboxes and high-level IPC services.\n  - `llext_basics.md`: Dynamic code loading.\n- **[Scripts](scripts/)**:\n  - `smp_config_check.py`: SMP config consistency checker.\n- **[Assets](assets/)**:\n  - `rpmsg_channel_contract.md`: RPMsg interface contract template.","tags":["multicore","zephyr","agent","skills","beriberikix","agent-skills","agentic-coding","zephyr-rtos"],"capabilities":["skill","source-beriberikix","skill-multicore","topic-agent-skills","topic-agentic-coding","topic-zephyr-rtos"],"categories":["zephyr-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/beriberikix/zephyr-agent-skills/multicore","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add beriberikix/zephyr-agent-skills","source_repo":"https://github.com/beriberikix/zephyr-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.462","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 25 github stars · SKILL.md body (2,955 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T07:01:42.462Z","embedding":null,"createdAt":"2026-04-18T23:04:59.156Z","updatedAt":"2026-04-24T07:01:42.462Z","lastSeenAt":"2026-04-24T07:01:42.462Z","tsv":"'0':257 '1':56,249 '2':81,188 '3':110 '4':140 'a-seri':89 'across':66 'affin':80 'amp':15,360 'applic':235,254 'architectur':219 'asset':383,384 'assets/rpmsg_channel_contract.md':300 'asymmetr':13 'autom':285 'bidirect':328 'binari':148 'bridg':222,226 'budget':338 'build':311 'c':189 'case':350 'channel':281,302 'checker':382 'checklist':309 'code':374 'communic':21,84 'config':75,104,162,181,184,380 'configur':58,356 'consist':294,381 'contract':303,388 'control':236,246 'copi':263 'core':43,54,69,87,118,179,195,237,248,256,321 'count':316 'cover':9 'cpu':42,315 'cpus':187 'critic':48,210 'cross':194,320 'cross-cor':193,319 'data':115,271,278 'design':30,220,307 'develop':2,39 'driver':137 'dual':178 'dual-cor':177 'dynam':144,164,373 'e.g':88,244 'effici':114 'elf':165 'enabl':174 'endpoint':306,325 'exampl':297 'exchang':116,326 'expect':314 'export':168 'extens':26,143 'failur':349 'firmwar':155 'frequenc':242 'full':154 'handl':348 'heterogen':52,86 'high':121,241,368 'high-frequ':240 'high-level':120,367 'homogen':35 'ident':68 'implement':113 'increas':45 'integr':51 'inter':19 'inter-processor':18 'interfac':387 'interoper':363 'interrupt':243 'ipc':22,111,134,280,331,370 'ipc_patterns.md':130,364 'ipm':136 'isol':47,238 'jitter':260 'k':77,198,201,206,212 'kconfig':173,293 'keep':251 'kernel':62 'key':73,102,132,160,203,205,216 'larg':270 'latenc':332 'level':122,127,369 'leverag':40 'linkabl':25,142 'linux':221,234,362 'llext':27,141,163,341 'llext_basics.md':158,372 'load':145,166,340,375 'load/unload':343 'lock':200,208,209,215 'logic':231 'low':126 'low-level':125 'm':94 'm-seri':93 'mailbox':128,365 'main':253 'memori':139,267 'messag':106,329 'meta':277 'meta-data':276 'minim':283 'modul':149,342 'motor':245 'mp':185 'multicor':1,4,38 'multipl':34,41,67 'multiprocess':11,14 'num':186 'o':36 'openamp':82,105 'openamp/rpmsg':17,224,324 'openamp_rpmsg.md':100,359 'overhead':284 'pass':275,327 'path':344 'pattern':23,112,218 'perform':46 'pin':239 'prevent':259 'prj.conf':172,296 'processor':20 'profession':217 'protocol':98 'quick':169 'race':322 'real':229 'real-tim':228 'refer':70,99,129,157,353,354 'references/ipc_patterns.md':131 'references/llext_basics.md':159 'references/openamp_rpmsg.md':101 'references/smp_configuration.md':72 'region':268 'regress':323 'relat':292 'remain':335 'resolv':345 'resourc':108,352 'rpmsg':83,305,386 'rpmsg_channel_contract.md':299,385 'rtos':8 'run':59,147,312 'runtim':151 'safe':351 'script':376,377 'scripts/smp_config_check.py':288 'section':211 'seri':91,95 'servic':123,135,371 'share':138,266 'skill' 'skill-multicore' 'smp':12,57,76,171,175,182,291,310,379 'smp-relat':290 'smp_config_check.py':287,378 'smp_configuration.md':71,355 'soc':32,180 'source-beriberikix' 'spin':207,213 'spinlock':78,191,199,202,358 'standard':97 'start':170 'starter':301 'struct':197 'symbol':167,346 'symmetr':10 'sync':196 'system':5,53 'tabl':109 'target':337 'task':49 'templat':298,389 'test':330 'thread':65,79 'throughput':334 'time':230 'tool':74,103,133,161,286 'topic-agent-skills' 'topic-agentic-coding' 'topic-zephyr-rtos' 'transfer':264 'trigger':28 'unlock':214 'updat':156 'use':96,119,190,223,265 'valid':289,308 'via':279 'video/audio':272 'vring':107 'within':336 'without':152 'workflow':55 'y':183 'zephyr':7,37,61,227 'zero':262 'zero-copi':261","prices":[{"id":"f4656ed5-72fb-4a19-bade-8c19f2eae061","listingId":"c395fcdb-6026-4e5b-91f4-9425c482c9cd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"beriberikix","category":"zephyr-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:04:59.156Z"}],"sources":[{"listingId":"c395fcdb-6026-4e5b-91f4-9425c482c9cd","source":"github","sourceId":"beriberikix/zephyr-agent-skills/multicore","sourceUrl":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/multicore","isPrimary":false,"firstSeenAt":"2026-04-18T23:04:59.156Z","lastSeenAt":"2026-04-24T07:01:42.462Z"}],"details":{"listingId":"c395fcdb-6026-4e5b-91f4-9425c482c9cd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"beriberikix","slug":"multicore","github":{"repo":"beriberikix/zephyr-agent-skills","stars":25,"topics":["agent-skills","agentic-coding","zephyr-rtos"],"license":"apache-2.0","html_url":"https://github.com/beriberikix/zephyr-agent-skills","pushed_at":"2026-04-20T21:40:18Z","description":"A complete catalog of Agent Skills (agentskills.io) for Zephyr RTOS development.","skill_md_sha":"bca4987f2b2380ac851c26cfc9f0f16c877c7b78","skill_md_path":"skills/multicore/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/multicore"},"layout":"multi","source":"github","category":"zephyr-agent-skills","frontmatter":{"name":"multicore","description":"Developing for multicore systems in Zephyr RTOS. Covers Symmetric Multiprocessing (SMP), Asymmetric Multiprocessing (AMP) with OpenAMP/RPMsg, inter-processor communication (IPC) patterns, and Linkable Extensions (LLEXT). Trigger when designing for SoCs with multiple homogeneous or heterogeneous cores."},"skills_sh_url":"https://skills.sh/beriberikix/zephyr-agent-skills/multicore"},"updatedAt":"2026-04-24T07:01:42.462Z"}}