openamp kick off - github pagesopenamp.github.io/docs/2016.04/openamp_kickoff.pdf · openamp kick...
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/1.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/2.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/3.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/4.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/5.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/6.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/7.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/8.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/9.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/10.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/11.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/12.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/13.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/14.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/15.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/16.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/17.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/18.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/19.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051509/5adc74ac7f8b9a9d4d8bd004/html5/thumbnails/20.jpg)
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