Turning open source into a multicore standard
Ideally, multi-OS deployments on multicore systems promise the best-of-both-worlds combination of (embedded) Linux functionality and RTOS performance. In practice, orchestrating an ideal collaboration between different OSs running on separate cores in an SoC is a tough job and can leave systems hobbled with worst-of-either-world execution. Available for some time in open source, the OpenAMP (Open Asymmetric Multi Processing) framework offers a solution. Yet, crowdsourcing something as delicate as a real-time heterogenous platform is a noble cause but can engender conflicts when participating developers find themselves forced to balance the common good with the specialized needs of their own applications. Not surprisingly, compatibility typically erodes with each new fork (see "Android") -- each meant to address one more unique use model. With its announcement of an OpenAMP standards working group, the Multicore Association (MCA) is looking to forestall compatibility issues and help ensure stability of this important framework over the long term.
Open source OpenAMP is a framework that defines consistent features for life cycle management, interprocess communication and resource sharing among processors on a single SoC -- augmenting mainline Linux's existing LCM and IPC capabilities for working with other Linux environments. Thus, OpenAMP enables a Linux "master" to bring up a "remote" processor running its own bare-metal or RTOS environment, which in turn establishes communications channels with the master.
(Courtesy of the Multicore Association)
The MCA's OpenAMP WG is meant to complement the open source work. In fact, Evensen notes that unlike other efforts that start with the APIs, this standardization approach starts with the available open source. As with most standards efforts, the WG starts with a loaded deck: Its efforts build on earlier collaborative development work between WG principals Xilinx and Mentor Graphics -- and specifically on Mentor Graphics's multicore framework. Bolstered by other contributors, the resulting OpenAMP open source definition is "solid," according to Tomas Evensen, WG chair and CTO of embedded software at Xilinx. Indeed, Evensen does not expect many changes in how the first set of standards are defined by his group.
At the same time, the MCA OpenAMP WG met for the first time on January 14 of this year and is still determining its roadmap. Besides gaining agreement on the APIs used in the open source implementation, the group will look to harmonize OpenAMP with other MCA standards such as those for communications and task management.
Beyond that, Evensen says the roadmap is replete with issues such as power management, resource sharing, and debug among many other features of importance to multicore developers. For example, Evensen points out that while Linux offers advanced power management, the problem remains of how a bare-metal processor would communicate power management resource requests to a Linux master. Also on the docket are other issues such as compliance and whether MCA will take on development and support of an MCA OpenAMP standard compliance suite or find a commercial partner.
Although multiple issues remain, the trend is inevitable: Multicore standards are sure to rise as critical enablers as multiOS multicore deployments take software developers into new territory.
"These things are getting more and more important as things get more complex," says Richard Barry, FreeRTOS founder. "Xilinx has shipped FreeRTOS with their embedded tools for its many core'd Ultrascale MPSoC for some time now, where FreeRTOS has support for all three available cores (ARM Cortex-A53 with native 64-bit support provided, ARM Cortex-R5, and Microblaze). It's a long long looooong way from our original birthplace."