{"id":17648064,"url":"https://github.com/gpanders/vitis_example","last_synced_at":"2026-02-28T17:03:53.182Z","repository":{"id":102162683,"uuid":"238718367","full_name":"gpanders/vitis_example","owner":"gpanders","description":"Example project for Xilinx Vitis","archived":false,"fork":false,"pushed_at":"2020-02-26T04:44:43.000Z","size":48,"stargazers_count":5,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-05T09:52:00.396Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Tcl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gpanders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-06T15:20:07.000Z","updated_at":"2023-08-23T16:04:00.000Z","dependencies_parsed_at":"2023-07-11T17:15:52.060Z","dependency_job_id":null,"html_url":"https://github.com/gpanders/vitis_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpanders%2Fvitis_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpanders%2Fvitis_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpanders%2Fvitis_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpanders%2Fvitis_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gpanders","download_url":"https://codeload.github.com/gpanders/vitis_example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246290583,"owners_count":20753724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-23T11:16:10.802Z","updated_at":"2026-02-28T17:03:48.099Z","avatar_url":"https://github.com/gpanders.png","language":"Tcl","funding_links":[],"categories":[],"sub_categories":[],"readme":"Vitis Example\n=============\n\nGetting Started\n---------------\n\n1.  [Install Vitis][vitis]\n\n2.  [Install Xilinx Run Time (XRT)][xrt]\n\n3.  [Install PetaLinux][petalinux]\n\n4.  Source the setup files for Vitis, XRT, and PetaLinux\n    \n        source /opt/Xilinx/Vitis/2019.2/settings64.sh\n        source /opt/Xilinx/petalinux/2019.2/settings.sh\n        source /opt/xilinx/xrt/setup.sh\n    \n    The paths may be different on your machine. Adjust accordingly.\n\n5.  Run `make run` to build project and start software emulation\n\n6.  Once the QEMU VM starts up, login with username `root` and password `root`,\n    then run the following commands to launch software emulation:\n    \n        mount /dev/mmcblk0p1 /mnt\n        cd /mnt\n        ./init.sh\n    \n    Use `reboot` to shutdown the VM.\n\nDetails\n-------\n\nTake a look at the [`Makefile`](/Makefile) to see exactly what's being done at\neach step.\n\nBefore we can run software emulation, we must first build all of the required\ncomponents. These components are:\n\n*  The host executable\n*  The `xclbin` file\n    *   Xilinx kernel objects (`.xo` files)\n        *   Xilinx platform file (`.xpfm`)\n            *   Linux software components\n                *   Xilinx shell archive (`.xsa`)\n\nThe Xilinx shell archive is the output from Vivado and represents the hardware\n(fabric) component of the design. This is built by running the Tcl script found\nat [scripts/create_xsa.tcl](scripts/create_xsa.tcl).\n\nThe XSA file is used by PetaLinux to generate the Linux software components;\nnamely, the Linux kernel, root filesystem (sysroot), and device tree blob\n(combined together into `image.ub`), U-Boot (`u-boot.elf`), the ARM Trusted\nFirmware (`bl31.elf`), the first stage bootloader (`fsbl.elf`) and the PMU\nfirmware (`pmufw.elf`). The sysroot is compressed into an initramfs in the\n`image.ub` file as well as a compressed tar file (`rootfs.tar.gz`).\n\nThe software components are copied into the `build/boot` directory and the\nsysroot is extracted into `build/sysroot`. From here, the software components\nand the XSA file are used to generate the Xilinx platform file. This is done\nusing the script at [scripts/create_platform.tcl](scripts/create_platform.tcl).\n\nOnce the platform file is created, `v++` is invoked to compile the kernel\nsources (found under the `kernel/` directory) into Xilinx kernel objects (`.xo`\nfiles). Once compiled, the Xilinx kernel object files are linked (again using\n`v++`) into an `xclbin` file. All of these are placed under the\n`build/$TARGET/` directory (where `$TARGET` is one of `sw_emu`, `hw_emu`, or\n`hw`).\n\nThe host executable depends only on the sysroot generated by PetaLinux. Once\nthe sysroot is extracted to `build/sysroot/` the host executable is compiled\n(using the Makefile found at [`src/host/Makefile`](src/host/Makefile)) and\ncopied to `build/$TARGET/host`.\n\nWhen `v++` links the Xilinx object files into the `xclbin` file, it also\ncreates a `_vimage` directory. This directory contains the files used to\ngenerate a virtual SD card image containing the host executable, the Linux\nsoftware components, and the generated `xclbin` file. This image is used by\nQEMU to emulate the target device and perform software or hardware emulation.\n\nThe list of files to be copied onto the virtual SD card image is found at\n`_vimage/emulation/sd_card.manifest`. By default, this file _does not_ contain\nthe host executable, the `xrt.ini` file (configuration file specifying\nemulation parameters), or the correct path to the `xclbin` file. The `sdcard`\nMakefile target corrects this by modifying the `sd_card.manifest` file to\nprovide the correct path to the `xclbin` file as well as appending the host\nexecutable and the `xrt.ini` file.\n\nFinally, invoking `make run` will use Xilinx's `launch_emulator` script to\nstart the QEMU virtual machine using the virtual SD card image.\n\n[vitis]: https://www.xilinx.com/html_docs/xilinx2019_2/vitis_doc/Chunk1858803630.html#ariaid-title2\n[xrt]: https://www.xilinx.com/html_docs/xilinx2019_2/vitis_doc/Chunk1858803630.html#ariaid-title3\n[petalinux]: https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpanders%2Fvitis_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpanders%2Fvitis_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpanders%2Fvitis_example/lists"}