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: 
Participant benmishoe
Participant
183 Views
Registered: ‎10-19-2012

choosing target hardware in SDK for linux

Jump to solution

I have a ZCU102 dev board running Linux.  I'm working on some experiments and noticed something interesting (to me at least).  In SDK, if I choose the 'standalone' OS platform, then I can choose which processor (a53_0/1/2/3) to target for my application.  But if I choose Linux, I'm left with the generic psu_coretxa53 (i.e. I can't choose 0/1/2/3).  In my mind I was picturing running Linux on one of the A53s, and some baremetal apps on another A53.  Is this possible?  Why does the individual processor choice disappear when I choose linux as my OS?  Thanks in advance!

0 Kudos
1 Solution

Accepted Solutions
Moderator
Moderator
88 Views
Registered: ‎03-25-2019

Re: choosing target hardware in SDK for linux

Jump to solution

Hi @benmishoe,

Choosing Linux as OS Platform, withing SDK, will lead you to create a Linux "Application" (This is different from building Linux kernel).
So, for your first question "But if I choose Linux, I'm left with the generic psu_coretxa53 (i.e. I can't choose 0/1/2/3).", this is because a Linux Application depends only on which processor type/architecture it will be run on. Linux Kernel Scheduler then will choose on which core (of the available cores on the kernel resources) it will run that application.
It's true that you still could specify which cores will run your application, but this is another story, and this is done through either launching your application through a special utility or by adding some special code in your application and this has nothing related to compilation configuration and thus you don't have to specify on which core your application will run when creating a new Linux Application project.

 

On the other hand, regarding your second question "In my mind I was picturing running Linux on one of the A53s, and some baremetal apps on another A53. Is this possible?":

This is what it is called "unsupervised AMP" solution. Although this kind of solution is supported in the Zynq-7000 (check XAPP1078, XAPP1078_Latest_Information and this), Unsupervised AMP on the Zynq UltraScale+ MPSoC APU is neither supported by Xilinx nor recommended to do due to the significant amount of effort and complexity you would face. Please check Unsupervised_AMP_Wiki_Page for further details on the challenges you could face with an Unsupervised AMP system.

However, there are other different ways to run Linux and a BareMetal application all together on Zynq UltraScale+ MPSoC platform, such as:
- Running the baremetal application on RPU and using OpenAMP framework to communicate with Linux running on the APU. Check UG1186, OpenAMP_Wiki_Page and this Design example.
- Using an Hypervisor such as Xen to run both Linux and the BareMetal application on APU. Check WP474, Xen_Wiki_Page, and Building_Xen_Hypervisor_Wiki_Page.
- ...

Which system architecture to choose depends really from your specification,  Chaptre3 of the UG1228, is a good guide to help you to choose the best one from the existing solutions for Zynq UltraScale+ MPSoC platform

Best regards,
Abdallah
-------------------------------------------------------------------------------
Please don't forget to reply, kudo and accept as a solution
0 Kudos
4 Replies
Xilinx Employee
Xilinx Employee
140 Views
Registered: ‎10-30-2017

Re: choosing target hardware in SDK for linux

Jump to solution

Hi @benmishoe ,

The behavior is excepted only. when you select OS Platform as Linux then Processor type only shows different processors available (Micro balze and Ps7_cortexa9, psu_cortexa53). Please refer this Wiki page on how to debug Linux applications in SDK on ZCU102 board: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841623/How+to+debug+Linux+Application+in+SDK+2017.4

 

Best Regards,
Srikanth
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.

0 Kudos
Participant benmishoe
Participant
124 Views
Registered: ‎10-19-2012

Re: choosing target hardware in SDK for linux

Jump to solution

Hi @savula ,

The heart of my question was, how can I target Linux to a specific processor (i.e. 0/1/2/3) since I am not given the choice to do so?  Thanks...

0 Kudos
Moderator
Moderator
106 Views
Registered: ‎10-06-2016

Re: choosing target hardware in SDK for linux

Jump to solution

Hi @benmishoe,

When you compile a Linux application there is no control about which core the application will be running, is the Linux kernel which schedules all the processes on the available cores, so the concept is quite different to the standalone application development.

If you goal is to use certain standalone application on one core while the other one are running Linux the approach would be the following. You need to configure you Linux to run on certain CPUs (there are different ways but the best way would be through device-tree) and then target your standalone on the other CPU. You also would need to ensure resource partitioning to not overlap memory or have conflicts due to concurrent access to the peripherals....

Regards


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos
Moderator
Moderator
89 Views
Registered: ‎03-25-2019

Re: choosing target hardware in SDK for linux

Jump to solution

Hi @benmishoe,

Choosing Linux as OS Platform, withing SDK, will lead you to create a Linux "Application" (This is different from building Linux kernel).
So, for your first question "But if I choose Linux, I'm left with the generic psu_coretxa53 (i.e. I can't choose 0/1/2/3).", this is because a Linux Application depends only on which processor type/architecture it will be run on. Linux Kernel Scheduler then will choose on which core (of the available cores on the kernel resources) it will run that application.
It's true that you still could specify which cores will run your application, but this is another story, and this is done through either launching your application through a special utility or by adding some special code in your application and this has nothing related to compilation configuration and thus you don't have to specify on which core your application will run when creating a new Linux Application project.

 

On the other hand, regarding your second question "In my mind I was picturing running Linux on one of the A53s, and some baremetal apps on another A53. Is this possible?":

This is what it is called "unsupervised AMP" solution. Although this kind of solution is supported in the Zynq-7000 (check XAPP1078, XAPP1078_Latest_Information and this), Unsupervised AMP on the Zynq UltraScale+ MPSoC APU is neither supported by Xilinx nor recommended to do due to the significant amount of effort and complexity you would face. Please check Unsupervised_AMP_Wiki_Page for further details on the challenges you could face with an Unsupervised AMP system.

However, there are other different ways to run Linux and a BareMetal application all together on Zynq UltraScale+ MPSoC platform, such as:
- Running the baremetal application on RPU and using OpenAMP framework to communicate with Linux running on the APU. Check UG1186, OpenAMP_Wiki_Page and this Design example.
- Using an Hypervisor such as Xen to run both Linux and the BareMetal application on APU. Check WP474, Xen_Wiki_Page, and Building_Xen_Hypervisor_Wiki_Page.
- ...

Which system architecture to choose depends really from your specification,  Chaptre3 of the UG1228, is a good guide to help you to choose the best one from the existing solutions for Zynq UltraScale+ MPSoC platform

Best regards,
Abdallah
-------------------------------------------------------------------------------
Please don't forget to reply, kudo and accept as a solution
0 Kudos