Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmable-logic:guides:using-github-releases [2022/08/08 16:45] – remove known version that linker script bug appears in - it's in more than just 2020.1 Arthur Brown | programmable-logic:guides:using-github-releases [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ~~TechArticle~~ | ||
| + | ====== Using a Digilent FPGA Github Demo's Releases (2020.1) ====== | ||
| + | <WRAP round important> | ||
| + | ==Warning== | ||
| + | This page is for internal use only. It is intended to be embedded within other wiki pages and does not provide the full context necessary to use these steps | ||
| + | </ | ||
| + | |||
| + | ===== Hardware Only Release (Before Programming) ===== | ||
| + | **Note:** //This workflow is common across many Digilent FPGA demos. Screenshots may not match the demo you are working with.// | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | First, download and extract the ' | ||
| + | ---- | ||
| + | --> Open a Vivado Project from a Release # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | |||
| + | <WRAP group> | ||
| + | <WRAP column half> | ||
| + | In Vivado' | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | --> Build a Vivado Project # | ||
| + | <WRAP group> | ||
| + | Note that if your project already has a generated bitstream, as indicated by the status in the top right corner of the window reading " | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | {{section> | ||
| + | </ | ||
| + | <-- | ||
| + | ===== Hardware Only Release (Programming) ===== | ||
| + | --> Program a Bitstream onto an FPGA Board # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | ===== Baremetal Release (Before Programming, | ||
| + | |||
| + | **Note:** //This workflow is common across many Digilent FPGA demos. Screenshots may not match the demo you are working with.// | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | First, download the ' | ||
| + | |||
| + | The hardware (-hw) archive contains the Vivado project used to build the hardware platform for this demo. The project can be opened, modified, and used to update the hardware platform later if so desired, but this is optional. The software archive contains the software sources, hardware description file (XSA), and a set of scripts that can be used to rebuild the workspace. | ||
| + | |||
| + | Both files should be extracted. | ||
| + | |||
| + | **Note:** //You may notice " | ||
| + | |||
| + | ---- | ||
| + | |||
| + | --> Recreate a Vitis Workspace from Source # | ||
| + | <WRAP group> | ||
| + | **Important: | ||
| + | |||
| + | {{page> | ||
| + | |||
| + | <WRAP group> <WRAP column half> | ||
| + | With Vitis open, in the menu bar at the top of the window, use the **Xilinx -> XSCT Console** option to launch the Xilinx Software Command-line Tool. | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> <WRAP column half> | ||
| + | In the XSCT Console, if you used the software archive' | ||
| + | < | ||
| + | |||
| + | If you did not use the ws folder, find the path to the extracted archive, and enter the commands below. Note that all slashes in the path must be forward slashes ("/" | ||
| + | < | ||
| + | |||
| + | The checkout process may some time, though not more than a few minutes, as the projects are recreated and built. When complete, the " | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | ===== Baremetal Release (Before Programming) ===== | ||
| + | |||
| + | **Note:** //This workflow is common across many Digilent FPGA demos. Screenshots may not match the demo you are working with.// | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | First, download the ' | ||
| + | |||
| + | **Note:** //Unlike with Vivado XPR archives, do NOT extract the Vitis project archive (' | ||
| + | ---- | ||
| + | --> Import Vitis Projects from a Release # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | |||
| + | <WRAP group> <WRAP column half> | ||
| + | With Vitis open, click the **Import Project** button to import projects from a //Vitis project exported zip file//, then navigate to and select the IDE zip file you downloaded. | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> <WRAP column half> | ||
| + | Make sure each project in the archive is checked, then click **Finish** to import them into your workspace. | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | --> Build a Vitis Application # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | ===== Baremetal Release (No Build) ===== | ||
| + | |||
| + | **Note:** //This workflow is common across many Digilent FPGA demos. Screenshots may not match the demo you are working with.// | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | First, download the ' | ||
| + | |||
| + | **Note:** //Unlike with Vivado XPR archives, do NOT extract the Vitis project archive (' | ||
| + | ---- | ||
| + | --> Import Vitis Projects from a Release # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | |||
| + | <WRAP group> <WRAP column half> | ||
| + | With Vitis open, click the **Import Project** button to import projects from a //Vitis project exported zip file//, then navigate to and select the IDE zip file you downloaded. | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> <WRAP column half> | ||
| + | Make sure each project in the archive is checked, then click **Finish** to import them into your workspace. | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | ===== Baremetal Release (Programming) ===== | ||
| + | --> Launch a Vitis Application # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | ===== Baremetal Update Specification ===== | ||
| + | In order to modify and switch out the hardware platform for a baremetal demo, you should first open the Vivado project from the release. Extract the previously downloaded ' | ||
| + | ---- | ||
| + | --> Open a Block Design Project in Vivado # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | |||
| + | <WRAP group> <WRAP column half> | ||
| + | In Vivado' | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> <WRAP column half> | ||
| + | The project' | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | Making changes to the design is out of the scope of this particular document. More information on how to use IP Integrator to create or modify a project can be found through [[programmable-logic: | ||
| + | ---- | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Build a Vivado Project # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Export a Hardware Platform # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Update a Hardware Platform in Vitis # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | ===== Petalinux Release (Before Programming) ===== | ||
| + | **Note:** //This workflow is common across many Digilent Petalinux demos. Screenshots may not match the demo you are working with.// | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | First, download the ' | ||
| + | ---- | ||
| + | --> Open a Petalinux Project from a Release # | ||
| + | <WRAP group> | ||
| + | Open a terminal and run the following commands. The install path is / | ||
| + | < | ||
| + | source < | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> | ||
| + | <WRAP column half> | ||
| + | In the same terminal navigate to the desired project folder and create the Petalinux project using the ' | ||
| + | < | ||
| + | cd < | ||
| + | petalinux-create -t project -s < | ||
| + | </ | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | --> Build a Petalinux Project # | ||
| + | <WRAP group> | ||
| + | In order to rebuild the project without changing anything in the configuration, | ||
| + | |||
| + | **Note:** //If the Petalinux environment is not set up it will not recognize the petalinux-* commands.// | ||
| + | |||
| + | The root folder will contain the following folders and file: components, project-spec, | ||
| + | < | ||
| + | petalinux-build | ||
| + | </ | ||
| + | |||
| + | After the build completion, the Boot.bin has to be explicitly built in order to have a Second Stage Boot Loader (SSBL) from Petalinux. This can be obtained by executing the command below from the root folder. | ||
| + | |||
| + | **Note:** //< | ||
| + | |||
| + | < | ||
| + | petalinux-package --boot --force --fsbl images/ | ||
| + | </ | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | ===== Petalinux Release (Programming) ===== | ||
| + | --> Booting Petalinux on a Zynq Board # | ||
| + | <WRAP group> | ||
| + | Copy the **BOOT.BIN, boot.scr, image.ub** files from the //< | ||
| + | |||
| + | **Note:** //Some projects might contain an extra file,// **uEnv.txt**//, | ||
| + | |||
| + | Boot up the board and set up your preferred serial console to listen on the serial port using the default baud rate of 115200. On the console, you should be able to see the boot-up sequence of the board starting from U-Boot (SSBL) up to the login prompt of Linux. | ||
| + | |||
| + | **Note:** //The default login username and password is// **root: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||
| + | ===== Petalinux Configurations ===== | ||
| + | |||
| + | **Note:** //This a brief summary of what Petalinux can do. For more details please refer to the [[https:// | ||
| + | |||
| + | There are some components that can be modified in Petalinux in order to customize your Linux environment. These include the user space application, | ||
| + | |||
| + | **Note:** //By using petalinux-config -c < | ||
| + | |||
| + | ---- | ||
| + | --> Making Hardware Changes and Adding Them to Petalinux # | ||
| + | <WRAP group> | ||
| + | In order to modify and switch out the hardware platform for a baremetal demo, you should first open the Vivado project from the release. Extract the previously downloaded ' | ||
| + | ---- | ||
| + | --> Open a Block Design Project in Vivado # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | |||
| + | <WRAP group> <WRAP column half> | ||
| + | In Vivado' | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group> <WRAP column half> | ||
| + | The project' | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | Making changes to the design is out of the scope of this particular document. More information on how to use IP Integrator to create or modify a project can be found through [[programmable-logic: | ||
| + | ---- | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Build a Vivado Project # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Export a Hardware Platform # | ||
| + | <WRAP group> | ||
| + | {{page> | ||
| + | </ | ||
| + | <-- | ||
| + | --> Importing the New Hardware # | ||
| + | <WRAP group> | ||
| + | <WRAP column half> | ||
| + | In order to import the new hardware description to Petalinux, the following command must be executed. This will prompt a configuration window where all the new Zynq generic changes for the new hardware will be visible. | ||
| + | < | ||
| + | petalinux-config --get-hw-description=< | ||
| + | </ | ||
| + | Other changes which can be configured from this window are: boot-flow, default password, FPGA reconfiguration, | ||
| + | < | ||
| + | petalinux-config | ||
| + | </ | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||
| + | </ | ||
| + | <-- | ||
| + | --> Configuring U-boot # | ||
| + | <WRAP group>< | ||
| + | When first importing the hardware, some U-boot customization is generated by the import feature. U-boot customization includes drivers for boot mediums, file system support, boot console arguments, network support, and many more. In order to bring up the configuration window, the following command must be executed. | ||
| + | < | ||
| + | petalinux-config -c u-boot | ||
| + | </ | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||
| + | --> Configuring the Kernel # | ||
| + | <WRAP group>< | ||
| + | When first importing the hardware, some kernel customization is generated by the import feature, which usually includes supported drivers for PL IPs. U-boot customization includes drivers for drivers, logging levels, debugging flags, and many more. In order to bring up the configuration window, the following command must be executed: | ||
| + | < | ||
| + | petalinux-config -c kernel | ||
| + | </ | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||
| + | --> Configuring the RootFS # | ||
| + | <WRAP group>< | ||
| + | The packages which will be built into the rootfs need to be added manually by the user. The default package manager for Petalinux currently is RPM and any additional packages which the user wants to add need to be built using Petalinux. In order to bring up the configuration window, the following command must be executed: | ||
| + | < | ||
| + | petalinux-config -c kernel | ||
| + | </ | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||
| + | --> Changes to the Device Tree # | ||
| + | <WRAP group> | ||
| + | When first building the project by executing // | ||
| + | |||
| + | **Note:** //Changes to the device tree components will have to be done by referring to the already existing nodes in the auto-generated device trees.// | ||
| + | ---- | ||
| + | </ | ||
| + | <-- | ||
| + | <WRAP round important> | ||
| + | ==Warning== | ||
| + | After configuring some of the previous settings might be lost. This is a known issue in Petalinux 2019.2 and 2020.1; more information about the workaround can be found here: [[https:// | ||
| + | </ | ||
| + | ---- | ||
| + | ===== Baremetal Release Workaround (Before programming) ===== | ||
| + | --> Apply Fix for Vitis 2020.1 Bug # | ||
| + | <WRAP round important> | ||
| + | Due to a bug in the 2020.1 version of Xilinx' | ||
| + | </ | ||
| + | <WRAP group>< | ||
| + | After importing the project, open the **.sprj** file. In the System Project Settings, select a platform by clicking on the **'' | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <WRAP group>< | ||
| + | Right click on the **.prj** file and select **Properties**. In the opened window, go into **C/C++ Build** and select **Settings**, | ||
| + | |||
| + | The project is now imported correctly. | ||
| + | </ | ||
| + | {{: | ||
| + | </ | ||
| + | ---- | ||
| + | <-- | ||

