Kira KV260
Getting Started
https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit/kv260-getting-started/getting-started.html
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/
https://www.xilinx.com/video/som/out-of-the-box-with-kria-kv260-up-and-running-in-under-an-hour.html
https://xilinx.github.io/kria-apps-docs/
Tips
- Working Petalinux or Ubuntu needs to be loaded first to update the firmware if latest image is not booting due to firmware mismatch
- DC power jack is not standard 5.5/2.1 mm but 5.5/2.5 mm
FPGA Device
https://docs.xilinx.com/v/u/en-US/zynq-ultrascale-plus-product-selection-guide
https://docs.xilinx.com/r/en-US/ds986-kv260-starter-kit/Summary
- Zynq UltraScale+ XCK26-SFVC784-2LV-C/I MPSoC (Custom-Built for K26 SOM)
- Equivalent of Zynq UltraScale+ XCZU5EV MPSoC
OS Image
Option A: Certified Ubuntu
https://ubuntu.com/download/amd-xilinx
Option B: PetaLinux
https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit/kv260-getting-started/setting-up-the-sd-card-image.html
Option C: PetaLinux for Vitis AI (DPU)
https://xilinx.github.io/Vitis-AI/docs/board_setup/board_setup_mpsoc.html
- Selection Criteria:
- Option C is firstly recommended if using Vitis AI
- Option A is the primary choice of Xilinx - Recommended if using pre-built applications on Xilinx App Store (e.g., Smart Camera)
- Option B is the official OS released by Xilinx - Recommended if customizing everything on processing system deeply
Shopping List
- DC barrel plug converter from 5.5/2.5 mm to 5.5/2.1 mm (power side)
- Inline power switch with 5.5/2.1 mm barrel connectors
- DC barrel plug converter from 5.5/2.1 mm to 5.5/2.5 mm (board side)
3D Printed Holder
https://www.thingiverse.com/thing:4886199
https://support.xilinx.com/s/question/0D52E00006hpR6wSAE/kv260-starter-kit-3d-printed-holder
OS Install (Option A: Ubuntu 22.04 LTS)
Login via USB/UART
- Baud rate = 115200
- Data bits = 8
- Stop bits = 1
- Flow control = None
- Parity = None
- Username = ubuntu
- Password = ubuntu
SSH becomes available after updating the password
Xilinx Settings
## Network Confirmation ping 8.8.8.8
## Update sudo apt update #sudo apt upgrade
## Package Installation sudo apt install net-tools
## Xilinx Development Environment #sudo snap install xlnx-config --classic sudo snap install xlnx-config --classic --channel=2.x
## Config sudo xlnx-config.sysinit
Boot Firmware Update (as needed)
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#Boot-FW-Update-Process
https://qiita.com/ikwzm/items/4e5e954eabc988bd78d5
https://qiita.com/ikwzm/items/67902c8e1446c13e8d81
sudo xmutil bootfw_status
Image A: Bootable Image B: Bootable Requested Boot Image: Image A Last Booted Image: Image A XilinxSom_QspiImage_v1.1_20210422 ImageA Revision Info: Not defined ImageB Revision Info: Not defined
## Backup Current Boot Firmware sudo dd if=/dev/mtd5 of=boot_image-a.bin bs=1024 #sudo dd if=/dev/mtd7 of=boot_image-b.bin bs=1024
## Download the latest boot firmware from Xilinx sudo xmutil bootfw_update -i BOOT_xilinx-k26-starterkit-v2022.1-09152304_update3.BIN
sudo xmutil bootfw_status
Image A: Bootable Image B: Non Bootable Requested Boot Image: Image B Last Booted Image: Image A XilinxSom_QspiImage_v1.1_20210422 ImageA Revision Info: Not defined ImageB Revision Info: XilinxSOM_BootFW_20220915
## Power off (not reboot) by pressing the RESET button or following command sudo systemctl poweroff
## [IMPORTANT] Validate successful boot against the new firmware !!! sudo xmutil bootfw_update -v
sudo xmutil bootfw_status
Image A: Bootable Image B: Bootable Requested Boot Image: Image B Last Booted Image: Image B XilinxSom_QspiImage_v1.1_20210422 ImageA Revision Info: Not defined ImageB Revision Info: XilinxSOM_BootFW_20220915
Check if the boot loader displayed on the boot screen is updated:
kv260_boot.log.gz
Xilinx Zynq MP First Stage Boot Loader Release 2022.1 Sep 16 2022 - 04:56:15 ...
Terminate GUI (as needed)
## CUI Only (as needed) sudo systemctl set-default multi-user.target
## Shutdown GNOME (as needed) sudo systemctl stop gdm
Kernel U-Boot (as needed)
sudo vi /etc/default/flash-kernel ====================================================== LINUX_KERNEL_CMDLINE="quiet splash cma=512M" LINUX_KERNEL_CMDLINE_DEFAULTS="" ======================================================
## Completing Update sudo flash-kernel
## Verifying Bootargs cat /proc/cmdline
Checking Device
[IMPORTANT] Device is not shown if DPU IP Core has not been downloaded to the FPGA chip !!!
xbutil examine
System Configuration OS Name : Linux Release : 5.15.0-1020-xilinx-zynqmp Version : #22-Ubuntu SMP Fri Feb 24 14:14:20 UTC 2023 Machine : aarch64 CPU Cores : 4 Memory : 3906 MB Distribution : Ubuntu 22.04.2 LTS GLIBC : 2.35 Model : ZynqMP SMK-K26 Rev1/B/A XRT Version : 2.13.0 Branch : Hash : Hash Date : 2022-09-15 17:01:20 ZOCL : 2.13.0, Devices present BDF : Shell Platform UUID Device ID Device Ready* [0000:00:00.0] : edge 0x0 user(inst=0) Yes * Devices that are not ready will have reduced functionality when using XRT tools
Smart Camera Application
[IMPORTANT] Smart Camera Application uses DPUCZDX8G_ISA1_B3136 DPU Architecture !!!
## Install Application sudo apt search xlnx-firmware-kv260 sudo apt install xlnx-firmware-kv260-smartcam
## Disable Desktop sudo xmutil desktop_disable #sudo xmutil desktop_enable
## Load Application sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp kv260-smartcam
## Docker Installation sudo apt install docker.io sudo docker pull xilinx/smartcam:2022.1 sudo docker images
## Launch Docker sudo docker run --env="DISPLAY" -h "xlnx-docker" --env="XDG_SESSION_TYPE" --net=host --privileged --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \ -v /tmp:/tmp -v /dev:/dev -v /sys:/sys -v /etc/vart.conf:/etc/vart.conf -v /lib/firmware/xilinx:/lib/firmware/xilinx -v /run:/run -it xilinx/smartcam:2022.1 bash
========================================== _ __ _ ____ ___ __ __ | |/ /_ __(_) __ _ / ___| / _ \| \/ | | ' /| __| |/ _ | \___ \| | | | |\/| | | . \| | | | (_| | ___) | |_| | | | | |_|\_\_| |_|\__ _| |____/ \___/|_| |_| ========================================== root@xlnx-docker:/#
## Checking Video Devices v4l2-ctl --list-devices
## Run Application with MIPI Camera (AR1335) #smartcam --mipi -W 1920 -H 1080 -r 30 --target dp smartcam --mipi -W 1920 -H 1080 -r 30 --target rtsp
## Run Application with USB Camera #smartcam --usb 1 -W 1920 -H 1080 -r 30 --target dp #smartcam --usb 1 -W 1920 -H 1080 -r 30 --target rtsp
## Open network stream via VLC rtsp://192.168.1.128:554/test
Customized Application (Including IP Core)
Put new application files in /lib/firmware/xilinx/
sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp [appname]
## Check if successfully loaded ## [appname]: loaded to slot 0
Easy Installation of DPUCZDX8G_ISA1_B4096 for Vitis AI
## Install Application with DPUCZDX8G_ISA1_B4096 sudo apt install xlnx-firmware-kv260-benchmark-b4096
## Load Application sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp kv260-benchmark-b4096
Vitis AI Installation
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/2072838191/Building+Vitis-AI+Sample+Applications+on+Certified+Ubuntu+20.04+LTS+for+Xilinx+Devices
https://www.xilinx.com/developer/articles/building-running-vitis-ai-on-kria-with-ubuntu.html
sudo apt -y update
sudo apt -y install libopencv-dev sudo apt -y install libgoogle-glog-dev
## For Ubuntu 22.04 sudo apt -y install vitis-ai-library sudo apt -y install libjson-c-dev
## Git Clone cd git clone https://github.com/Xilinx/Vitis-AI.git
## Version Selection cd Vitis-AI #git checkout tags/v1.3.2 #git checkout tags/v2.5 git checkout tags/v3.0
## Checking DPU Availability export DEBUG_DPU_CONTROLLER=1 show_dpu
WARNING: Logging before InitGoogleLogging() is written to STDERR I0608 07:18:30.595397 82819 dpu_controller.cpp:43] add factory method 02_xrt I0608 07:18:30.595608 82819 dpu_control_xrt.cpp:106] register the xrt edge dpu controller I0608 07:18:30.595679 82819 dpu_controller_dnndk.cpp:258] cancel register the dnndk dpu controller, because /dev/dpu is not opened I0608 07:18:30.704615 82819 dpu_control_xrt.cpp:51] xrt dpu cu is detected, kernel = DPUCZDX8G I0608 07:18:30.704684 82819 dpu_control_xrt.cpp:80] create DpuControllerXrtEdge for DPUCZDX8G I0608 07:18:30.704720 82819 dpu_control_xrt_edge.cpp:51] creating dpu controller: this=0xaaaacf2bd7c0 I0608 07:18:30.704747 82819 dpu_controller.cpp:54] create dpu controller via 02_xrt ret= 0xaaaacf2bd7c0 device_core_id=0 device= 0 core = 0 fingerprint = 0x101000016010406 batch = 1 full_cu_name=DPUCZDX8G:DPUCZDX8G_1 I0608 07:18:30.704823 82819 dpu_control_xrt_edge.cpp:58] destroying dpu controller: this=0xaaaacf2bd7c0
## Checking DPU Availability xdputil query
WARNING: Logging before InitGoogleLogging() is written to STDERR E0608 07:18:43.392241 82825 xdputil_query.cpp:182] Unsupported platform fingerprint: 0, cu_idx: 1 I0608 07:18:56.340873 82825 dpu_controller.cpp:43] add factory method 02_xrt I0608 07:18:56.340953 82825 dpu_control_xrt.cpp:106] register the xrt edge dpu controller I0608 07:18:56.341037 82825 dpu_controller_dnndk.cpp:258] cancel register the dnndk dpu controller, because /dev/dpu is not opened { "DPU IP Spec":{ "DPU Core Count":2, "IP version":"v4.0.0", "generation timestamp":"2022-05-11 13-30-00", "git commit id":"9bf4ccf", "git commit time":2022051113, "regmap":"1to1 version" }, "VAI Version":{ "libvart-runner.so":"Xilinx vart-runner Version: 2.5.0- 2022-07-20-17:13:58 ", "libvitis_ai_library-dpu_task.so":"Xilinx vitis_ai_library dpu_task Version: 2.5.0- 2022-07-15 16:21:46 [UTC] ", "libxir.so":"Xilinx xir Version: xir- 2022-07-20-17:06:45", "target_factory":"target-factory.2.5.0 d02dcb6041663dbc7ecbc0c6af9fafa087a789de" }, "kernels":[ { "DPU Arch":"DPUCZDX8G_ISA1_B3136", "DPU Frequency (MHz)":300, "IP Type":"DPU", "Load Parallel":2, "Load augmentation":"enable", "Load minus mean":"disable", "Save Parallel":2, "XRT Frequency (MHz)":300, "cu_addr":"0xa0010000", "cu_handle":"0xaaab0cc00900", "cu_idx":0, "cu_mask":2, "cu_name":"DPUCZDX8G:DPUCZDX8G_1", "device_id":0, "fingerprint":"0x101000016010406", "name":"DPU Core 0" }, { "DPU Arch":"", "cu_addr":"0xa0020000", "cu_handle":"0xaaab0cbaeb30", "cu_idx":1, "cu_mask":1, "cu_name":"pp_pipeline_accel:pp_pipeline_accel_1", "device_id":0, "fingerprint":"0x0", "name":"DPU Core 1" } ] }
Vitis AI Examples
See Vitis AI for running deep-learning libraries
OS Install (Option C: PetaLinux for Vitis AI 3.0.0)
Login via USB/UART
- Baud rate = 115200
- Data bits = 8
- Stop bits = 1
- Flow control = None
- Parity = None
- Username = petalinux
- Password = petalinux
- Username = root
- Password = root
SSH becomes available after updating the password
Xilinx Settings
## Root Login (as needed) sudo su -l root
## Network Confirmation ping 8.8.8.8
Vitis AI Examples
See Vitis AI for running deep-learning libraries
OS Install (Option B: PetaLinux)
Smart Camera Application
## Update Package (as needed) #sudo dnf update #sudo dnf clean all
## Install Application sudo xmutil getpkgs sudo dnf install packagegroup-kv260-smartcam.noarch
## Load Firmware sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp kv260-smartcam
## Run Application with AR1335 Camera sudo smartcam --mipi -W 1920 -H 1080 -r 30 --target dp
## Run Application with USB Camera sudo smartcam --usb 0 -W 1920 -H 1080 -r 30 --target dp
References
https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit.html
https://qiita.com/ikwzm
https://zenn.dev/ryuz88/articles/kv260_setup_memo_ubuntu22
https://www.hackster.io/hdcoe/running-yolov2-tiny-on-kv260-28f801
https://www.acri.c.titech.ac.jp/wordpress/archives/1242
Acknowledgments
Daiphys is a professional-service company for research and development of leading-edge technologies in science and engineering.
Get started accelerating your business through our deep expertise in R&D with AI, quantum computing, and space development; please get in touch with Daiphys today!
Daiphys Technologies LLC - https://www.daiphys.com/