UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
554 Views
Registered: ‎10-24-2018

Establishing independent applications on the APU and RPU for Zynq Ultrascale+ MPSoC

Jump to solution

 

I am working with the ZCU104 dev board and the context of my question is set with the following goals in mind:

  1. I would like to boot Linux on the APU using the Petalinux workflow.
  2. I would like to run a basic app like HelloWorld on Linux running on the APU.
  3. I would like to run a basic app on the RPU over Bare Metal.
  4. I'd like to boot all of the above from an SDCard, by which I assume I need to configure a FSBL which is configured accordingly.

Q1: I have read about OpenAMP, however I am not certain that it is what I am looking for to meet my goals of bringing up both the APU and RPU independently.  My desire is to create a design where the two are essentially two players in a distributed system with a shared communication pathway; but otherwise established for two completely different processing purposes.   I do not intend to create a design where the RPU is established for the handing-off of processes from the APU.  Is my assessment of OpenAMP correct, that it is used to make the RPU slave to the APU?  Any suggestions on best approach for my desired architecture?  I am currently assuming that if I can boot each processing unit independently, that I can then use shared memory to create a mechanism for communications.

Q2: Is my assumption correct that to boot such a system, I can simply create my two apps: the APU app targeted for Linux using my petalinux outputs, along with my RPU app targeted for a BSP generated from my custom hardware, and then wrap the correct set of files into a FSBL using the SDK?

Thanks ahead of time for any help in this matter.

0 Kudos
1 Solution

Accepted Solutions
Moderator
Moderator
509 Views
Registered: ‎10-06-2016

Re: Establishing independent applications on the APU and RPU for Zynq Ultrascale+ MPSoC

Jump to solution

Hi @treavor.glbert

I think that OpenAMP is what you are looking for, however your understanding is not completely accurate. When RPU is APU slave in OpenAMP only states that Linux running in the APU will be the master of the system (allocate shared memory, launch the RPU processor with the ELF file, establish communication... ). The RPU can be used for any processing purposes, you just load the ELF file.

You can work without OpenAMP but it will be more complicated for you. In overall your flow is fine but afterwards you need to work on the shared memory communication mechanism that is already available for you within OpenAMP (rpmsg). Also do not forget to avoid memory overlapping when linking and providing memory info to Linux ;)

Regards


Ibai
Don’t forget to reply, kudo, and accept as solution.
1 Reply
Moderator
Moderator
510 Views
Registered: ‎10-06-2016

Re: Establishing independent applications on the APU and RPU for Zynq Ultrascale+ MPSoC

Jump to solution

Hi @treavor.glbert

I think that OpenAMP is what you are looking for, however your understanding is not completely accurate. When RPU is APU slave in OpenAMP only states that Linux running in the APU will be the master of the system (allocate shared memory, launch the RPU processor with the ELF file, establish communication... ). The RPU can be used for any processing purposes, you just load the ELF file.

You can work without OpenAMP but it will be more complicated for you. In overall your flow is fine but afterwards you need to work on the shared memory communication mechanism that is already available for you within OpenAMP (rpmsg). Also do not forget to avoid memory overlapping when linking and providing memory info to Linux ;)

Regards


Ibai
Don’t forget to reply, kudo, and accept as solution.