open-amp usage

309 views
Skip to first unread message

edwin...@gmail.com

unread,
Jul 28, 2016, 3:38:17 AM7/28/16
to open-amp
I just wanted check my understanding of the code provided in https://github.com/OpenAMP/open-amp.

All this code is meant to run on the remote processor application (not Linux)? And is to be used with the existing remoteproc/rpmsg drivers in current Linux kernels? And in the case of a Zynq-7000, specifically zynq_remoteproc?

I have FreeRTOS running with Linux in AMP configuration based on ug978. If I were to replace the remoteproc/rpmsg code in my FreeRTOS application with open-amp, would it be transparent to the Linux side (or would I have to modify something on the Linux side)? Are there any benefits to doing so right now?

Also, when I looked at open-amp in mid-2015, there was a document (from Mentor if I recall correctly) describing running an RTOS as the master and Linux as the slave. I no longer see this document and wondering if there are any current/planned developments into that kind of AMP configuration?

Thank you for your input.

Jiaying Liang

unread,
Jul 28, 2016, 12:33:36 PM7/28/16
to open...@googlegroups.com
Hello,

> -----Original Message-----
> From: open...@googlegroups.com [mailto:open...@googlegroups.com]
> On Behalf Of edwin...@gmail.com
> Sent: Thursday, July 28, 2016 12:38 AM
> To: open-amp
> Subject: [open-amp] open-amp usage
>
> I just wanted check my understanding of the code provided in
> https://github.com/OpenAMP/open-amp.
>
> All this code is meant to run on the remote processor application (not Linux)?
> And is to be used with the existing remoteproc/rpmsg drivers in current Linux
> kernels? And in the case of a Zynq-7000, specifically zynq_remoteproc?
[Wendy] Yes, it uses the zynq_remoteproc driver
>
> I have FreeRTOS running with Linux in AMP configuration based on ug978. If I
> were to replace the remoteproc/rpmsg code in my FreeRTOS application with
> open-amp, would it be transparent to the Linux side (or would I have to modify
> something on the Linux side)? Are there any benefits to doing so right now?
[Wendy] You don't need to modify anything on the Linux side, as OpenAMP implements
the Linux kernel virtio/rpmsg for RTOS/Baremetal.

OpenAMP implements the full vring and rpmsg. There is no much share buffer management
in the ug978 as it is just a demo to use the zynq remoteproc driver.

It is up to your application, with OpenAMP, you have richer features of vring/rpmsg, and you
can have community support. With ug978, the FreeRTOS side implementation is limited not
extendable but very simple.

>
> Also, when I looked at open-amp in mid-2015, there was a document (from
> Mentor if I recall correctly) describing running an RTOS as the master and Linux
> as the slave. I no longer see this document and wondering if there are any
> current/planned developments into that kind of AMP configuration?
[Wendy] The reason to remove the getting started guide to the repo is because it is tightly
Coupled to the specific version of PetaLinux as the first drop from Mentor is tested with that
version of PetaLinux. The OpenAMP reference guide is still in the
Repo: https://github.com/OpenAMP/open-amp/tree/master/docs
We have some vendor independent getting started document but need to improve.

If you are looking for new Zynq specific one, you can check here:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug1186-zynq-openamp-gsg.pdf

Best Regards,
Wendy

>
> Thank you for your input.
>
> --
> You received this message because you are subscribed to the Google Groups
> "open-amp" group.
> To unsubscribe from this group and stop receiving emails from it, send an email
> to open-amp+u...@googlegroups.com.
> To post to this group, send an email to open...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.


This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

Ed

unread,
Jul 28, 2016, 1:59:25 PM7/28/16
to open-amp
On Thursday, July 28, 2016 at 9:33:36 AM UTC-7, Jiaying Liang wrote:
OpenAMP implements the full vring and rpmsg. There is no much share buffer management
in the ug978 as it is just a demo to use the zynq remoteproc driver.  
It is up to your application, with OpenAMP, you have richer features of vring/rpmsg, and you
can have community support. With ug978, the FreeRTOS side  implementation is limited not
extendable but very simple.

What are some examples of features that are missing from ug978 implementation?  What is share buffer management?

 
> Also, when I looked at open-amp in mid-2015, there was a document (from
> Mentor if I recall correctly) describing running an RTOS as the master and Linux
> as the slave.  I no longer see this document and wondering if there are any
> current/planned developments into that kind of AMP configuration?
[Wendy] The reason to remove the getting started guide to the repo is because it is tightly
Coupled to the specific version of PetaLinux as the first drop from Mentor is tested with that
version of PetaLinux. The OpenAMP reference guide is still in the
Repo: https://github.com/OpenAMP/open-amp/tree/master/docs
We have some vendor independent getting started document but need to improve.
 
If you are looking for new Zynq specific one, you can check here:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug1186-zynq-openamp-gsg.pdf

So is there anything currently in the pipeline for RTOS master/Linux slave documentation or reference implementation?

Thank you for your reply!

wendy...@xilinx.com

unread,
Jul 29, 2016, 12:51:10 PM7/29/16
to open-amp
Hello,


On Thursday, July 28, 2016 at 10:59:25 AM UTC-7, Ed wrote:
On Thursday, July 28, 2016 at 9:33:36 AM UTC-7, Jiaying Liang wrote:
OpenAMP implements the full vring and rpmsg. There is no much share buffer management
in the ug978 as it is just a demo to use the zynq remoteproc driver.  
It is up to your application, with OpenAMP, you have richer features of vring/rpmsg, and you
can have community support. With ug978, the FreeRTOS side  implementation is limited not
extendable but very simple.

What are some examples of features that are missing from ug978 implementation?  What is share buffer management?
Flow in ug978 is no longer officially supported. rpmsg uses vring to management the shared buffers. OpenAMP vring
implementation follows the virtio specification. ug978 doesn't have it.
besides, OpenAMP implements RPMSG and remoteproc, ug978 doesn't have this implementation, it just understand
the RPMSG format.


 
> Also, when I looked at open-amp in mid-2015, there was a document (from
> Mentor if I recall correctly) describing running an RTOS as the master and Linux
> as the slave.  I no longer see this document and wondering if there are any
> current/planned developments into that kind of AMP configuration?
[Wendy] The reason to remove the getting started guide to the repo is because it is tightly
Coupled to the specific version of PetaLinux as the first drop from Mentor is tested with that
version of PetaLinux. The OpenAMP reference guide is still in the
Repo: https://github.com/OpenAMP/open-amp/tree/master/docs
We have some vendor independent getting started document but need to improve.
 
If you are looking for new Zynq specific one, you can check here:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug1186-zynq-openamp-gsg.pdf

So is there anything currently in the pipeline for RTOS master/Linux slave documentation or reference implementation?
OpenAMP allows user to have RTOS as master. The current implementation in OpenAMP repo (from Mentor) can have
standalone as master and Linux as slave but it only works for old kernel 3.8 as it requires kernel patch and the kernel patch
hasn't been updated for newer kernel version.

There is suggestion from the community to decouple remoteproc from rpmsg, which allows RTOS/Linux boots independently.
This is in the road map.

Thanks,
Wendy

Edward Wingate

unread,
Aug 13, 2016, 1:29:25 AM8/13/16
to open...@googlegroups.com
On Fri, Jul 29, 2016 at 9:51 AM, <wendy...@xilinx.com> wrote:
> Flow in ug978 is no longer officially supported. rpmsg uses vring to
> management the shared buffers. OpenAMP vring
> implementation follows the virtio specification. ug978 doesn't have it.
> besides, OpenAMP implements RPMSG and remoteproc, ug978
> doesn't have this implementation, it just understand the RPMSG
> format.

Do you have suggestion for migrating from ug978 implementation to
OpenAMP? Should I use release 2016.04 of OpenAMP or is master much
better now? It seems I need to take the code under lib/ and remove
the machine specific files that don't apply to my system (Zynq), is
that the gist of it? I would be doing this in Xilinx SDK 2015.03.

Or alternatively, should I use the OpenAMP example application
templates that are in Xilinx SDK? What is relationship between the
OpenAMP application templates in Xilinx SDK and OpenAMP repo/releases?
The SDK templates don't seem to follow the code structure of the
OpenAMP repo (at least not in SDK 2015.03).

Thank you for your help and suggestions.

wendy...@xilinx.com

unread,
Aug 13, 2016, 1:42:42 AM8/13/16
to open-amp
Hi Ed,


On Friday, August 12, 2016 at 10:29:25 PM UTC-7, Ed wrote:
On Fri, Jul 29, 2016 at 9:51 AM,  <wendy...@xilinx.com> wrote:
> Flow in ug978 is no longer officially supported. rpmsg uses vring to
> management the shared buffers. OpenAMP vring
> implementation follows the virtio specification. ug978 doesn't have it.
> besides, OpenAMP implements RPMSG and remoteproc, ug978
> doesn't have this implementation, it just understand the RPMSG
> format.

Do you have suggestion for migrating from ug978 implementation to
OpenAMP?  Should I use release 2016.04 of OpenAMP or is master much
better now?  It seems I need to take the code under lib/ and remove
the machine specific files that don't apply to my system (Zynq), is
that the gist of it?  I would be doing this in Xilinx SDK 2015.03.
If you are using Zynq, Xilinx add OpenAMP Zynq support in Xilinx SDK sice 2015.4
It is better to use a newer version of XSDK, you can download the 2016.2
from Xilinx webside
 

Or alternatively, should I use the OpenAMP example application
templates that are in Xilinx SDK?  What is relationship between the
OpenAMP application templates in Xilinx SDK and OpenAMP repo/releases?
 The SDK templates don't seem to follow the code structure of the
OpenAMP repo (at least not in SDK 2015.03).
Xilinx is trying to get the code in XSDK closer to the upstream OpenAMP.
However, at the moment, some code in XSDK is not upstreamed yet.
But it is in progress.

As you are using Zynq, you can get started with the OpenAMP examples in the Xilinx SDK
2016.2 is a better choice than 2015.3.

The 2016.04 OpenAMP repo, doesn't use libxil for Zynq, if you want to use other drivers for
Zynq peripherals, it is better to use the one in XSDK.

We are going to upstream the Zynq support in OpenAMP to use libxil.

Best Regards,
Wendy

Edward Wingate

unread,
Aug 13, 2016, 2:54:22 AM8/13/16
to open...@googlegroups.com
Wendy,

Thank you for this great information. I have existing applications
using SDK 2015.03 that I can't just upgrade immediately, but your
insights will help me navigate the migration to OpenAMP.

I have one more question... do you know whether the OpenAMP templates
in SDK 2016.4 are implemented in a BSP or in an application?

Thank you again.

Ed

Jiaying Liang

unread,
Aug 13, 2016, 3:05:53 AM8/13/16
to open...@googlegroups.com
Hi Ed,

> -----Original Message-----
> From: open...@googlegroups.com [mailto:open...@googlegroups.com]
> On Behalf Of Edward Wingate
> Sent: Friday, August 12, 2016 11:54 PM
> To: open...@googlegroups.com
> Subject: Re: [open-amp] open-amp usage
>
> Wendy,
>
> Thank you for this great information. I have existing applications using SDK
> 2015.03 that I can't just upgrade immediately, but your insights will help me
> navigate the migration to OpenAMP.
>
> I have one more question... do you know whether the OpenAMP templates in
> SDK 2016.4 are implemented in a BSP or in an application?
[Wendy] XSDK version is different to OpenAMP versions.
The latest XSDK version is 2016.2.
It is better for you to try the example with 2016.2 XSDK first.
Then, you can try to get the source code of the OpenAMP lib from the generated BSP and the demo app code from your created demo application. And merge them into your 2015.3 app.

I don't know how much your code relies on 2015.3 XSDK, it is still better to upgrade to 2016.2 XSDK.

Best Regards,
Wendy

Edward Wingate

unread,
Aug 13, 2016, 3:21:30 AM8/13/16
to open...@googlegroups.com
On Sat, Aug 13, 2016 at 12:05 AM, Jiaying Liang <wendy...@xilinx.com> wrote:
> Hi Ed,
>
> [Wendy] XSDK version is different to OpenAMP versions.
> The latest XSDK version is 2016.2.

Ah sorry, I did mean XSDK 2016.2. Got confused with OpenAMP release 2016.04

> It is better for you to try the example with 2016.2 XSDK first.
> Then, you can try to get the source code of the OpenAMP lib from the generated BSP
> and the demo app code from your created demo application. And merge them into your
> 2015.3 app.

Thank you, this sounds like the plan I will follow.

> I don't know how much your code relies on 2015.3 XSDK, it is still better to upgrade to 2016.2 XSDK.

My code doesn't rely on 2015.3 XSDK, but it just seems everytime I
upgrade XSDK, it breaks something in my application and needs to be
looked at. The breaks are usually minor, but I just need to set aside
time (that I don't have) to do the upgrade.
Reply all
Reply to author
Forward
0 new messages