{"id":7728,"date":"2016-02-02T10:16:43","date_gmt":"2016-02-02T09:16:43","guid":{"rendered":"https:\/\/blogs.mentor.com\/colinwalls\/?p=7728"},"modified":"2026-03-26T16:47:59","modified_gmt":"2026-03-26T20:47:59","slug":"openamp-embedded-multicore-comes-of-age","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/embedded-software\/2016\/02\/02\/openamp-embedded-multicore-comes-of-age\/","title":{"rendered":"OpenAMP &#8211; embedded multicore comes of age"},"content":{"rendered":"<p>Multicore designs in embedded systems are now becoming mainstream as the cost-effective way to implement the complex functionality required in modern devices. There are essentially two multicore system architectures &#8211; <a href=\"https:\/\/blogs.mentor.com\/colinwalls\/blog\/2010\/06\/07\/amp-vs-smp\/\" target=\"_blank\" rel=\"noopener noreferrer\">AMP and SMP<\/a>. SMP [Symmetrical Multi-Processing] utilizes a number of identical CPUs, with a single operating system running on them all. All that is required is a special SMP version of the chosen OS. This is not problem for Linux and is also available for many RTOS products, like <a href=\"https:\/\/www.mentor.com\/embedded-software\/nucleus\/smp\" target=\"_blank\" rel=\"noopener noreferrer\">Nucleus<\/a>.<\/p>\n<p>For the most part, AMP [Asymmetrical Multi-Processing] has a wider application for embedded systems. And this is where new developments are progressing quickly &#8230;<!--more--><\/p>\n<p>Embedded systems with an AMP architecture are becoming more common. The attraction is that such a multicore system has a number of CPUs, which may be of a variety of architectures. Each processor runs its own operating system, which may be selected individually, or maybe no OS at all. These attributes enable the system to be built in a very optimal way &#8211; each CPU and its software are ideally suited to their assigned function.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-7729\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/51\/2016\/02\/amp.jpg\" alt=\"amp\" width=\"300\" height=\"412\" \/><\/p>\n<p>To date, AMP architectures have simply evolved organically, with developers choosing the software components they needed in a somewhat ad hoc manner. The Multicore Association has provided guidance and defined some standards, like MCAPI, which provides a standard inter-processor communications mechanism.<\/p>\n<p>An issue with AMP systems is overall control of the system, as each CPU is operating autonomously. Things like boot order and resource allocation are not managed in a consistent way. Issues like power management are a nightmare to marshal. Developers either have proprietary mechanisms or maybe use a hypervisor, which could be an excessive overhead.<\/p>\n<p>The recent introduction of <a href=\"http:\/\/www.embedded.com\/electronics-blogs\/systems-check\/4441293\/Turning-open-source-into-a-multicore-standard--\" target=\"_blank\" rel=\"noopener noreferrer\">OpenAMP<\/a> changes all that. OpenAMP is a framework for building an AMP system. It does not limit the developer\u2019s creativity in choosing CPUs and OSes, but does provide a standards-based approach to overall system design. Mentor Embedded, who have long led the way in multicore software development, has <a href=\"https:\/\/www.mentor.com\/embedded-software\/news\/mentor-embedded-multicore-openamp-industry-standard\" target=\"_blank\" rel=\"noopener noreferrer\">announced<\/a> the first commercial implementation of OpenAMP.<\/p>\n<p><a href=\"http:\/\/www.linkedin.com\/in\/colinwalls\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6579\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/linkedin.png\" alt=\"\" width=\"40\" height=\"40\" \/><\/a><a href=\"https:\/\/twitter.com\/colin_walls\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6583\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/twitter.png\" alt=\"\" width=\"40\" height=\"40\" \/><\/a><a href=\"https:\/\/www.facebook.com\/colinwalls.author\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6591\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/facebook.png\" alt=\"\" width=\"40\" height=\"40\" \/><\/a><a href=\"https:\/\/plus.google.com\/116301748426290440139\/posts?hl=en%3Fhl=en\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6587\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/google.png\" alt=\"\" width=\"40\" height=\"40\" \/><\/a><a href=\"http:\/\/www.slideshare.net\/ColinWalls\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6595\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/slideshare.jpg\" alt=\"\" width=\"41\" height=\"41\" \/><\/a><a href=\"http:\/\/blogs.mentor.com\/colinwalls\/\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-6599\" src=\"http:\/\/s3-blogs.mentor.com\/colinwalls\/files\/2014\/01\/wordpress.jpg\" alt=\"\" width=\"44\" height=\"44\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Multicore designs in embedded systems are now becoming mainstream as the cost-effective way to implement the complex functionality required in&#8230;<\/p>\n","protected":false},"author":71677,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[385,300,367,328,329,377,304,374,378,386],"industry":[],"product":[],"coauthors":[],"class_list":["post-7728","post","type-post","status-publish","format-standard","hentry","category-news","tag-amp","tag-embedded-software","tag-mcapi","tag-multi-core","tag-multi-os","tag-multicore","tag-nucleus","tag-nucleus-os","tag-nucleus-rtos","tag-smp"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/7728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/users\/71677"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/comments?post=7728"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/7728\/revisions"}],"predecessor-version":[{"id":10439,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/7728\/revisions\/10439"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/media?parent=7728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/categories?post=7728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/tags?post=7728"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/industry?post=7728"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/product?post=7728"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/coauthors?post=7728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}