Jump to content
  • 0

Creating XSA file for Petalinux



I'm a bit vague (I'm definitely a novice with FPGA tools, 30+ years as an embedded developer though) as to how the XSA file is used or generated.

I was able to work through the bare metal tutorial to generate the XSA file from Vivado and then import it to a Vitis environment and then generate the image and load it. All worked fine.

I now want to create a linux image for my board (it's Digilent's Arty-Z7 20, but that is actually immaterial). I would imagine I want an XSA file that not only describes the ARM processor and the LEDS (from the tutorial) but in fact has the IP for all of the devices, GPIO's etc... for the entire board. Am I correct in assuming that is not in the XSA file I generated for the tutorial? I had to actually create the instances of the ports and buttons for the LED's and buttons. I would think that the work do define all of the interfaces and whatever is a much more involved process.

My essential question is, where do I get this XSA file or am I making a wrong assumption here?

Thanks for any answers or advice in advance.


Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Hi @bloggins666,

You are correct that the Baremetal tutorial (https://digilent.com/reference/programmable-logic/guides/getting-started-with-ipi) XSA would only set up material for what is present in the Block Design; in this case the ARM processor, the 4 buttons, and the 4 LEDs.

If you wanted to have access to all of the I/O pins on the PL side (and maybe anything extra on the PS side that isn't in the default configuration), you would need to create the associated design in Vivado, generate the bitstream for it, and then export the XSA which you would then import into Petalinux.

Adding access to the most of the other GPIOs will be fairly trivial. Simply add the Arduino styled headers and RGB LEDs to the block design as done for the LEDs in first part of the Adding GPIO Peripherals step (https://digilent.com/reference/programmable-logic/guides/getting-started-with-ipi#add_gpio_peripherals_to_a_block_design). When right-clicking on each component in the Board tab to Connect Board Component, I would choose to create a new AXI GPIO IP (rather than an existing one). The second bit of that tutorial that shows how to manually assign pins is mostly there to show an alternate design flow within Vivado.

For connecting things like the HDMI ports, what I would personally do is to take the existing hardware design of the Arty Z7-20 HDMI input demo (https://digilent.com/reference/programmable-logic/arty-z7/demos/hdmi-input) and then add in the other GPIO pins like I described in the above paragraph.

Once the bitstream is generated and the .xsa is exported from Vivado, you'll be import it into Petalinux and create the BSP via petalinux-config if memory serves me. I've linked some additional resources on how this might be done in this post here:

Let me know if you have any questions.


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...