openamp kick off - github pagesopenamp.github.io/docs/2016.04/openamp_kickoff.pdf · openamp kick...

20
XILINX INTERNAL . OpenAMP Kick Off

Upload: lethuan

Post on 22-Apr-2018

228 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

OpenAMP Kick Off

Page 2: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Overview of OpenAMP Governance: 30 Minutes

OpenAMP vs OpenAMP MCA Working Group: 15 Minutes

Introduction to OpenAMP project and current capabilities: 15

Minutes

Overview of Identified Gaps in OpenAMP and Evolving

OpenAMP: 25Minutes

NXP OpenAMP modification: 15 Minutes

What’s in the Next Release: 5Minutes

Total Meeting Time: 120 Minutes

Page 2

Agenda

Page 3: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

OpenAMP Maintenance:

– http://openamp.github.io/docs/CONTRIBUTING.md

Notes:

– OpenAMP next release: 2016.04

Gaps:

– OpenAMP and Linux kernel upstream

• There is currently no plan to line up with Linux kernel

• There is an maintainer ship gap about the rpmsg/remoteproc in kernel needs to

pick up.

Page 3

OpenAMP Maintenance

Page 4: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

An Open Source project

– Today driven by Mentor Graphics and Xilinx

• Also used by Micrium, NXP

– Based on existing open source technologies in Linux

– Clean-room implementation for non-Linux kernel code

OpenAMP today

– Multiple licenses (GPL for Linux kernel, BSD for rest)

– Shared memory protocol – virtio

– Lifecycle APIs – remoteproc

– Messaging – rpmsg

– Proxy technologies to emulate Linux processes

– More in future

Page 4

What is OpenAMP?

Page 5: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

OpenAMP Software Simplifies Deployment of

Heterogeneous Systems

A53 A53 A53 A53 R5 R5 MB MB MB MB

Linux

System Wide Applications

Bare

MetalVxWorks

Free

RTOSuC-

OSII Nucleus

Bare

Metal

Bare

Metal

Bare

Metal

Bare

Metal

Provides a Layer for Applications

– Standard API’s that allow applications to be

ported across processors and operating

systems

System Development

– Provides a wide rage of capabilities needed to

deploy applications across asymmetric

computing elements

Inter-OS & Inter Processor

Communication

– Send messages back and forth

OS Management

– Provides booting/rebooting of processors

OpenAMP SW

Page 6: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

RT Process – Make AMP Look Like Linux

Use standard Linux process concept to manage other OS

– Compile application meant to run on RTOS linking to RTOS and OpenAMP libraries

– Put application executable (ELF file) in the Linux file system

– Boot Linux as normal on main processors

– Start application through special OpenAMP launch program, runs in supervisor mode

– Handles select system(i.e. open/close/read/write/…) calls through RPC

– Terminate RT process like any other process

RTProc 2

Proxy

Linux

Core nCore 2Core 1Core 0

printf(“Hello\n”); open(“conf.dat”,RD);

RTProc2 (BM/Exec) RTProc1 (RTOS)

AMP Framework (rpmsg)

File System Serial Port

“Regular”

Process

RTProc 1

Proxy

Page 6

Page 7: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Management and messaging frameworks are two key components

The management framework is named remoteproc

The messaging framework is named rpmsg

Current OpenAMP Structure

Linux

Code/Data

Bare metal

Code/DataLinux Kernel

remoteproc rpmsg

Application

Buffer memory

Ring BuffersBare Metal

remoteprocrpmsg

Application

Page 7

Memory

Page 8: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

OpenAMP Gaps

Page 8

Page 9: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Messaging

Routing

Publish Subscribe

Job Scheduling

Persistence

Dispatch

Serialization

Zero Copy

Page 9

Landscape Overview

OpenAMP Project

ISV Ecosystem Products

Page 10: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Maximal Leverage of Hardware Capabilities

– Processor capabilities

– IPI, mailbox, DMA data movers

– Variety of Coherent and Non-Coherent Interconnects

Flexibility Across Broad Range of Use Cases

– Life-cycle and Discovery Options (Master-Slave, Registered Peer-to-Peer, …)

– Messaging and add-ons (RPC, Pub-Sub, etc.)

– Filesystem, Block Device, Network interfaces, and more…

Consistency and Portability

– Across threads and processes (Linux, RTOS, and Baremetal)

– Across Xen/KVM guests (Linux, RTOS, and Baremetal)

– Across processors (A53, R5, MicroBlaze)

– Across interconnects (AXI, PCIe, and more)

Page 10

OpenAMP Needs

Page 11: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Targets a narrow problem domain

– Strictly master-slave, no peer-to-peer; Linux is master only

– Linux support oriented towards kernel clients; not user-space applications

– Remoteproc/rpmsg only; cannot support MCAPI, XenBus/XenStore, etc.

Lack of consistent API

– Raw device/ioctl interface in user-space Linux

– BareMetal interfaces do not carry into user-space Linux

Structural problems

– Zynq/ZynqMP code splattered all over; includes standalone library code, etc.

– Not modular/composible

– Not self-test capable

Page 11

Current OpenAMP Design Gaps

Page 12: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Inclusive, not exclusive

– Provide a toolkit, not enforce a policy

– Support multiple usage models: master-slave, hierarchical, peer-to-peer, …

– Support multiple APIs, Protocols, and Platform architectures

Focus on user-space applications, not kernel

– Use existing kernel infrastructure for user-space I/O; follow design patterns of DPDK/ODP/…

– Avoid need for pushing new kernel ABIs upstream (rpmsg device/sockets/…)

Support linux-generic target

– User-space inter process/thread comms using VirtIO (SHM rings, futex for kick/notify)

– Replaces Zynq/ZynqMP as primary target; allow removal of extraneous baremetal code from OpenAMP

– Necessary for self-contained self-tests within the OpenAMP code base

Composable components

– Build out reusable and pluggable components with well-defined class based interfaces

– Components configured and selected through Autoconf/Cmake like mechanisms??

How to manage shared devices. E.g. timer, interrupt controller, and so on

– Will need to be put in the documentation on this constraint

Page 12

Evolving OpenAMP

Page 13: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Page 13

OpenAMP Components

• MCAPI, MRAPI, MTAPI, …

• Baremetal RPMSG APIs

• DPDK PMD, ODP PktIO, …

• TCF? CF? Others?

• …

APIs

• Virtio Protocols (Rpmsg, block, plan9, serial, VirGL, …)

• Registry Protocols (SHM, DBUS, …)

• Other Protocols (TCF?) …Protocols

• Memory rings (SPSC, SPMC, MPSC, MPMP)

• Virtio

• Unix sockets; TCP/IP (ZMQ? Other?)

• …

Channels

• Shared Memory (Raw physical memory, Linux-SHM. hugepages, CMA, dma-buf, …)

• Events/Notifications (pipe, futex, WFE/SEV, Mailbox/IPI, …)

• Control (power mgmt., heartbeat, …)

Platform Support

Page 14: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Page 14

Evolving OpenAMP Architecture (Available)

OpenAMPPorting Layers

+ linux user-space

virtio rpmsg remoteproc proxy

Page 15: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Page 15

Evolving OpenAMP Architecture (Next)

libMetal(OS Adaptation)

Linux Generic (bare metal) RTOS

UIO

Lib

Sysfs

Lib

Hu

ge

TL

BF

S

VF

IO

Atomics Locks Shmem I/O Mem Bus Device IRQ DMA …

OpenAMPPlatform

Zynq ZynqMP-R5 ZynqMP-A53 MicroBlaze …

Commercial AMP Solution Space

(Mentor, WindRiver, Enea, …)

virtio rpmsg remoteproc proxy

Page 16: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Release Branch will be created by March,only bug fixes will go in.

OpenAMP source code restruct

– Obsolete what’s not belong to OpenAMP library, such as the OpenAMP app dependent libraries.

– Clean Zynq/ZynqMP dependent code from the library

– Easier for non-master-slave model

– A more centralized place for platform specific implementation

– Easier to add support for more compilers

OpenAMP on Linux Userspace (Not in)

– Easier for Linux user applications to use OpenAMP

– Easier for Users to try OpenAMP on Linux

– One step forward to application focus, don’t need to worry if the communication parties on the same system or not

– Easier for upstreaming

LibMetal (Not in)

– Legal review

Test suites?

– The existing basic applications demos: function test suite, echo_test, matrix multiplication, and rpc demo

– Welcome contributions

Support flat binary format in remoteproc

Linux kernel changes: sysfs for messaging

Post features for Oct release by the end of March

Page 16

What’s going into Next Release (By the end of

April)

Page 17: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Post features for Oct release by the end of March

Features in roadmap:

– Libmetal (2016.10)

– Linux userspace support (2016.10)

– 64bit address space support

– Support flat binary format in remoteproc

– Linux kernel changes: sysfs for messaging

Page 17

OpenAMP Roadmap

Page 18: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Page 18

OpenAMP over Linux processes

A B

rpmsg

virtioremote

proc

rpmsg

virtioremote

proc

Unix Socket

Page 19: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Page 19

OpenAMP Between Linux process and Another

processor

A B

rpmsg

virtioremote

proc

rpmsg

virtioremote

proc

IPI

Page 20: OpenAMP Kick Off - GitHub Pagesopenamp.github.io/docs/2016.04/OpenAMP_kickoff.pdf · OpenAMP Kick Off. XILINX INTERNAL. ... E.g. timer, interrupt controller, and so on ... –Easier

XILINX INTERNAL.

Notes:

– NXP introduces introruce queueing rpmsg APIs

– Another option from Cyril: in the callback, can transfer buffer ownership to

application

Page 20

NXP OpenAMP Modification