Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page properties
hiddentrue
idComments

Design Name is always "TE Series Name" + Design name, for example "TE0720 Projektname"

This  history table is only for template style documentation which describes changes on style

DateVersionChangesAuthor
2022-01-251.0
  • Initial release
jh





Scroll Only


HTML
<style>
.wiki-content .columnLayout .cell.aside {
width: 0%;
}</style>



 

Overview

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

This tutorial guides you from initaltest_board reference design for TE0802 SoM to custom extensible vitis platfom and then shows how to implement and run basic VADD example on 2cg board No. 1. 

Page properties
hiddentrue
idComments

Notes :

  • short overview description of the tutorial

Key Features

Page properties
hiddentrue
idComments

Notes :

  • Add basic key features, of this tutorial,


Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Excerpt
  • Xilinx 2021.2 tools, Vivado 2021.2.1
  • Vitis AI 2.0
  • Vitis custom extensible platform for cg02_1gb board
  • Vector addition on cg02_1gb board

Requirements

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Scroll Title
title-alignmentcenter


TypeNameVersionNote
HWTE0802 board--






Diverse CableUSB, Power...----
Virtual MaschineOracle, VMWare or MS WSL--optional
OSLinuxXilinx Supported OS running on VM or native
Reference DesignTE0802-test_board-vivado_2021.2-*.zipbuild 20 or higher to match Vivado 2021.2.1Tutorial was created and tested with:
  • TE0802-test_board-vivado_2021.2-build_20_20221208094356.zip
  • board No. 02: TE0802-02-2AEU2-A, with device xczu2cg-sfvc784-1-e with ISSI DDR4L 1GB memory
SWVitis2021.2--
SWVivado2021.2.1Vivado patch to 2021.2.1 is required by reference design package build 20 or higher
SWPetalinux2021.2--
SWPutty----
Repo

Vitis-AI

2.0https://github.com/Xilinx/Vitis-AI/tree/2.0



Page properties
hiddentrue
idComments

General Chapter Vitis AI Prepare Development Environment is included

Excerpt Include
PD:Vitis AI Prepare Development Environment
PD:Vitis AI Prepare Development Environment
nopaneltrue

Page properties
hiddentrue
idComments
end of chapter "Prepare Development Environment2

Prepare Reference Design for Extensible Custom Platform

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Update Vivado Project for Extensible Platform

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Note

Trenz Electronic Scripts allows posibility change some setup via enviroment variables, which depends on the used OS and PC performace.

To improve performance on multicore CPU add global envirment on line 64:
export TE_RUNNING_JOBS=10

to  /etc/bash.bashrc or local to design_basic_settings.sh

For othervariables see also:

Project Delivery - Xilinx devices#EnvironmentVariables

In Ubuntu terminal, source paths to Vitis and Vivado tools by

Code Block
languagebash
$ source /tools/Xilinx/Vitis/2021.2/settings64.sh

Download TE0802 test_board Linux Design file (see Reference Design download link on chapter TE0802 Vitis AI Tutorial) with pre-build files to

 ~/Downloads/TE0802-test_board-vivado_2021.2-build_20_20221107115647.zip 

This TE0802test_board ZIP file contains bring-up scripts for creation of Petalinux for range of boards in zipped directory named “test_board”.

Unzip the file to directory:
~/work/TE0802_02_240

Note
All supported boards are identified in file: ~/work/TE0802_02_240/test_board/board_files/TE0802_board_files.csv

We will select board No. 02 with name TE0802-02-2AEU2-A, with device xczu2cg-sfvc784-1-e with ISSI DDR4L 1GB memory. We will use default clock 240 MHz.
That is why we name the package TE0802_02_240 and proposed to unzip the TE0802-test_board Linux Design files:

TE0802-test_board-vivado_2021.2-build_20_20221208094356.zip

into the directory:
~/work/TE0802_02_240

In Ubuntu terminal, change directory to the test_board directory:

Code Block
languagebash
$ cd ~/work/TE0802_02_240/test_board

Setup thetest_board directory files for a Linux host machine.
In Ubuntu terminal, execute:

Code Block
languagebash
$ chmod ugo+rwx ./console/base_sh/*.sh
$ chmod ugo+rwx ./_create_linux_setup.sh
$ ./_create_linux_setup.sh

Select option (0) to open Selection Guide and press Enter

Select board variant 1 from the selection guide, press enter and agree selection

Scroll Title
title-alignmentcenter

board No. 02: TE0802-02-2AEU2-A, with device xczu2cg-sfvc784-1-e with ISSI DDR4L 1GB is selected.

Create Vivado Project by typing 2

Scroll Title
title-alignmentcenter

Vivado project for board No. 02:  TE0802-02-2AEU2-A, with device xczu2cg-sfvc784-1-e with ISSI DDR4L 1GB memory will be generated.

Note

Selection Guide automatically modified ./design_basic_settings.sh with correct variant, so other provided bash files to recreate or open Vivado project again can be used later also.

In case of using selection guide, variant can be selected also manually:

Expand
titleClick here to see how you set variant manually

Select option (2) to create maximum setup of CMD-Files and exit the script (by typing any key).

It moves main design bash scripts to the top of thetest_board directory. Set these files as executable, from the Ubuntu terminal:

Code Block
languagebash
$ chmod ugo+rwx *.sh

In text editor, open file
~/work/TE0802_02_240/test_board/design_basic_settings.sh

On line 63, change
export PARTNUMBER=LAST_ID
to
export PARTNUMBER=1

Note
To improve performance on multicore CPU add on line 64:
export TE_RUNNING_JOBS=10

Vivado will be utilizing up to 10 parallel logical processor cores with this setup (instead of the default of 2 parallel logical processor cores).

Save the modified file.

This modification will guide the Trenz TE0802-test_board Linux Design scripts to generate Vivado HW for the board 01 with name TE0802-01-2AE31KA, with device xczu2cg-sfvc784-1-e on TE0706-03 carrier board.

In Ubuntu terminal, change directory to
~/work/TE0802_02_240/test_board

The Vivado tool will be opened and Trenz Electronic HW project for the TE0802-test_board Linux Design, part 01 will be generated  by running this script:

Code Block
languagebash
$ ./vivado_create_project_guimode.sh



The Vivado tool will be opened and Trenz Electronic HW project for the TE0802-test_board Linux Design, part 01 will be generated.

Scroll Title
title-alignmentcenter

In Vivado window Sources, click on zusys_wrapper and next on zusys.bd to open the HW diagram in IP integrator:

Scroll Title
title-alignmentcenter

It is possible to display diagram in separate window by clicking on float icon in upper right corner of the diagram.

Scroll Title
title-alignmentcenter

Zynq Ultrascale+ block is configured for the Trenz TE0802-test_board Linux Design on the TE0706-03 carrier board.

This is starting point for the standard PetaLinux system supported by Trenz with steps for generation of the PetaLinux system. Parameters of this system and compilation steps are described on Trenz Wiki pages:
TE0802 Test Board - Public Docs - Trenz Electronic Wiki (trenz-electronic.de)

Follow steps described in these wiki pages if you would like to create fixed, not extensible Vitis platform.

The Extensible Vitis platform generation steps are described in next paragraphs.

Create Extensible Vitis platform

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

To implement hardware this tutorial offers two alternatives: Fast Track or Manual Track:

Fast Track

Block Design of the Vivado project must be opened for this step. Copy following TCL Code to the TCL comand console of Vivado:

Code Block
languageruby
titleTCL Script to prepare Extensible Vitits Platform
collapsetrue
#activate extensible platform
set_property platform.extensible true [current_project]
save_bd_design

set_property PFM_NAME [string map {part0 zusys} [string map {trenz.biz trenz} [current_board_part]]] [get_files zusys.bd]
set_property platform.design_intent.embedded {true} [current_project]
set_property platform.design_intent.datacenter {false} [current_project]
set_property platform.design_intent.server_managed {false} [current_project]
set_property platform.design_intent.external_host {false} [current_project]
set_property platform.default_output_type {sd_card} [current_project]
set_property platform.uses_pr {false} [current_project]
save_bd_design
 
#add clocking wizard
startgroup
create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0
endgroup

#clocking wizard config
set_property location {3 984 -112} [get_bd_cells clk_wiz_0]
set_property -dict [list CONFIG.CLKOUT2_USED {true} CONFIG.CLKOUT3_USED {true} CONFIG.CLKOUT4_USED {true} CONFIG.CLKOUT2_REQUESTED_OUT_FREQ {200.000} CONFIG.CLKOUT3_REQUESTED_OUT_FREQ {400.000} CONFIG.CLKOUT4_REQUESTED_OUT_FREQ {240.000} CONFIG.RESET_TYPE {ACTIVE_LOW} CONFIG.MMCM_CLKOUT1_DIVIDE {6} CONFIG.MMCM_CLKOUT2_DIVIDE {3} CONFIG.MMCM_CLKOUT3_DIVIDE {5} CONFIG.NUM_OUT_CLKS {4} CONFIG.RESET_PORT {resetn} CONFIG.CLKOUT2_JITTER {102.086} CONFIG.CLKOUT2_PHASE_ERROR {87.180} CONFIG.CLKOUT3_JITTER {90.074} CONFIG.CLKOUT3_PHASE_ERROR {87.180} CONFIG.CLKOUT4_JITTER {98.767} CONFIG.CLKOUT4_PHASE_ERROR {87.180}] [get_bd_cells clk_wiz_0]
#connect clocking wizard inputs
connect_bd_net [get_bd_pins clk_wiz_0/clk_in1] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0]
connect_bd_net [get_bd_pins clk_wiz_0/resetn] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0]
save_bd_design

#add reset cores

startgroup
create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 proc_sys_reset_0
endgroup

#add reset cores
set_property name proc_sys_reset_1 [get_bd_cells proc_sys_reset_0]
save_bd_design
set_property location {4 1445 -656} [get_bd_cells proc_sys_reset_1]
copy_bd_objs /  [get_bd_cells {proc_sys_reset_1}]
set_property location {4 1472 -490} [get_bd_cells proc_sys_reset_2]
copy_bd_objs /  [get_bd_cells {proc_sys_reset_2}]
set_property location {4 1430 -299} [get_bd_cells proc_sys_reset_3]
copy_bd_objs /  [get_bd_cells {proc_sys_reset_3}]
set_property location {4 1445 -101} [get_bd_cells proc_sys_reset_4]

#connect reset cores
connect_bd_net [get_bd_pins clk_wiz_0/clk_out1] [get_bd_pins proc_sys_reset_1/slowest_sync_clk]
connect_bd_net [get_bd_pins clk_wiz_0/clk_out2] [get_bd_pins proc_sys_reset_2/slowest_sync_clk]
connect_bd_net [get_bd_pins clk_wiz_0/clk_out3] [get_bd_pins proc_sys_reset_3/slowest_sync_clk]
connect_bd_net [get_bd_pins clk_wiz_0/clk_out4] [get_bd_pins proc_sys_reset_4/slowest_sync_clk]
startgroup
connect_bd_net [get_bd_pins proc_sys_reset_3/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0]
connect_bd_net [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] [get_bd_pins proc_sys_reset_2/ext_reset_in]
connect_bd_net [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] [get_bd_pins proc_sys_reset_1/ext_reset_in]
connect_bd_net [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] [get_bd_pins proc_sys_reset_4/ext_reset_in]
endgroup
set_property PFM.CLOCK {clk_out1 {id "4" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "4" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "5" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "4" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "5" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "6" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "4" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "5" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "6" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "7" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property pfm_name zusys [get_files {zusys.bd}]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "5" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "6" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "7" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "5" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "6" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "7" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "2" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "6" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "7" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "2" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "3" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "7" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "2" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "3" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "4" is_default "false" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
set_property PFM.CLOCK {clk_out1 {id "1" is_default "false" proc_sys_reset "/proc_sys_reset_1" status "fixed" freq_hz "100000000"} clk_out2 {id "2" is_default "false" proc_sys_reset "/proc_sys_reset_2" status "fixed" freq_hz "200000000"} clk_out3 {id "3" is_default "false" proc_sys_reset "/proc_sys_reset_3" status "fixed" freq_hz "400000000"} clk_out4 {id "4" is_default "true" proc_sys_reset "/proc_sys_reset_4" status "fixed" freq_hz "240000000"}} [get_bd_cells /clk_wiz_0]
save_bd_design
startgroup
connect_bd_net [get_bd_pins proc_sys_reset_4/dcm_locked] [get_bd_pins clk_wiz_0/locked]
connect_bd_net [get_bd_pins clk_wiz_0/locked] [get_bd_pins proc_sys_reset_2/dcm_locked]
connect_bd_net [get_bd_pins clk_wiz_0/locked] [get_bd_pins proc_sys_reset_1/dcm_locked]
connect_bd_net [get_bd_pins clk_wiz_0/locked] [get_bd_pins proc_sys_reset_3/dcm_locked]
endgroup
save_bd_design

#add interrupt core
startgroup
create_bd_cell -type ip -vlnv xilinx.com:ip:axi_intc:4.1 axi_intc_0
endgroup

#config interrupt core
set_property -dict [list CONFIG.C_KIND_OF_INTR.VALUE_SRC USER] [get_bd_cells axi_intc_0]
set_property -dict [list CONFIG.C_KIND_OF_INTR {0x00000000} CONFIG.C_IRQ_CONNECTION {1}] [get_bd_cells axi_intc_0]

#connect interrupt core
connect_bd_net [get_bd_pins axi_intc_0/s_axi_aclk] [get_bd_pins clk_wiz_0/clk_out4]
connect_bd_net [get_bd_pins axi_intc_0/s_axi_aresetn] [get_bd_pins proc_sys_reset_4/peripheral_aresetn]
disconnect_bd_net /zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_lpd_aclk]
connect_bd_net [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_lpd_aclk] [get_bd_pins clk_wiz_0/clk_out4]
apply_bd_automation -rule xilinx.com:bd_rule:axi4 -config { Clk_master {/clk_wiz_0/clk_out4 (240 MHz)} Clk_slave {/clk_wiz_0/clk_out4 (240 MHz)} Clk_xbar {/clk_wiz_0/clk_out4 (240 MHz)} Master {/zynq_ultra_ps_e_0/M_AXI_HPM0_LPD} Slave {/axi_intc_0/s_axi} ddr_seg {Auto} intc_ip {New AXI Interconnect} master_apm {0}}  [get_bd_intf_pins axi_intc_0/s_axi]
startgroup
set_property -dict [list CONFIG.PSU__USE__IRQ0 {1}] [get_bd_cells zynq_ultra_ps_e_0]
endgroup
connect_bd_net [get_bd_pins zynq_ultra_ps_e_0/pl_ps_irq0] [get_bd_pins axi_intc_0/irq]
set_property PFM.IRQ {intr { id 0 range 32 }} [get_bd_cells /axi_intc_0]

update_compile_order -fileset sources_1
disconnect_bd_net /proc_sys_reset_4_peripheral_aresetn [get_bd_pins ps8_0_axi_periph/S00_ARESETN]
disconnect_bd_net /proc_sys_reset_4_peripheral_aresetn [get_bd_pins ps8_0_axi_periph/M00_ARESETN]
startgroup
connect_bd_net [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins proc_sys_reset_4/interconnect_aresetn]
connect_bd_net [get_bd_pins proc_sys_reset_4/interconnect_aresetn] [get_bd_pins ps8_0_axi_periph/S00_ARESETN]
endgroup

set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HPC" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "HPC1" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "HPC1" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "HPC1" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "HP1" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "HPC1" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "HP1" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "HP2" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M_AXI_HPM0_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M_AXI_HPM1_FPD {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HPC0_FPD {memport "S_AXI_HP" sptag "HPC0" memory "" is_range "false"} S_AXI_HPC1_FPD {memport "S_AXI_HP" sptag "HPC1" memory "" is_range "false"} S_AXI_HP0_FPD {memport "S_AXI_HP" sptag "HP0" memory "" is_range "false"} S_AXI_HP1_FPD {memport "S_AXI_HP" sptag "HP1" memory "" is_range "false"} S_AXI_HP2_FPD {memport "S_AXI_HP" sptag "HP2" memory "" is_range "false"} S_AXI_HP3_FPD {memport "S_AXI_HP" sptag "HP3" memory "" is_range "false"}} [get_bd_cells /zynq_ultra_ps_e_0]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M03_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M03_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M04_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M03_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M04_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M05_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M03_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M04_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M05_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M06_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
set_property PFM.AXI_PORT {M01_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M02_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M03_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M04_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M05_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M06_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"} M07_AXI {memport "M_AXI_GP" sptag "" memory "" is_range "false"}} [get_bd_cells /ps8_0_axi_periph]
save_bd_design

#save
save_bd_design
 
#save project XPR name
global proj_xpr
set proj_xpr [current_project]
append proj_xpr .xpr
 
#close project
close_project
 
# reopen project
open_project $proj_xpr
 
# open block design
open_bd_design [current_project].srcs/sources_1/bd/zusys/zusys.bd
 
#validate
#validate_bd_design

This script modifies the Initial platform Block design into the Extensible platform Block design and also defines define Platform Setup configuration.

In Vivado, open the design explorer and Platform description.
The fast track result is identical to the manually performed modifications described in next sections. In Vivado, save block design by clicking on icon “Save Block Design”.

Scroll Title
title-alignmentcenter

Continue the design path with Validate Design.

Manual Track

In Vivado project, click in Flow Navigator on Settings. In opened Settings window, select General in Project Settings, select Project is an extensible Vitis platform. Click on OK.

Scroll Title
title-alignmentcenter

IP Integrator of project set up as an extensible Vitis platform has an additional Platform Setup window.

Add multiple clocks and processor system reset IPs
In IP Integrator Diagram Window, right click, select Add IP and add Clocking Wizard IP clk_wiz_0. Double-click on the IP to Re-customize IP window.  Select Output Clocks panel. Select four clocks with frequency 100, 200, 400 and 240 MHz.
100 MHz clock will serve as low speed clock.
200 MHz and 400 MHz clock will serve as clock for possible AI engine.
240 MHz clock will serve as the default extensible platform clock. By default, Vitis will compile HW IPs with this default clock. 

Set reset type from the default Active High to Active Low

Scroll Title
title-alignmentcenter

Clik on OK to close the Re-customize IP window.

Disconnect clock network driven by output pl_clk0 of zynq_ultra_ps_e_0 from pl_clk0 and connect the complete clock network to output clk_out4 of clk_wiz_0. It will be driven by 240 MHz clock.

Connect input resetn of clk_wiz_0 with output pl_resetn0 of zynq_ultra_ps_e_0.
Connect input clk_in1 of clk_wiz_0 with output pl_clk0 of zynq_ultra_ps_e_0.

Scroll Title
title-alignmentcenter

Add and connect Processor System Reset blocks for each generated clock.

Add four Processor System reser blocks and rename them proc_sys_reset_1,  proc_sys_reset_2, proc_sys_reset_3 and  proc_sys_reset_4.
Connect input slowest_sync_clk of proc_sys_reset_1 to clk_out1 of clk_wiz_0.
Connect input slowest_sync_clk of proc_sys_reset_2 to clk_out2 of clk_wiz_0.
Connect input slowest_sync_clk of proc_sys_reset_3 to clk_out3 of clk_wiz_0.
Connect input slowest_sync_clk of proc_sys_reset_4 to clk_out4 of clk_wiz_0.
Connect inputs ext_reset_in of proc_sys_reset_1, proc_sys_reset_2 proc_sys_reset_3 and proc_sys_reset_4 tooutput pl_resetn0 of zynq_ultra_ps_e_0.
Connect inputs dcm_locked of proc_sys_reset_1, proc_sys_reset_2 proc_sys_reset_3 and proc_sys_reset_4 tooutput locked of clk_wiz_0.

Scroll Title
title-alignmentcenter

Platform Setup - clocks

Open Platform Setup window of IP Integrator to define Clocks. In Settings, select Clock.

In “Enabled” column select all four defined clocks clk_out1, clk_out2, clk_out3, clk_out4 of clk_wiz_0 block.

In “ID” column keep the default Clock ID: 1, 2, 3, 4

In “Is Default” column, select clk_out4 (with ID=4) as the default clock.  One and only one clock must be selected as default clock.

Scroll Title
title-alignmentcenter

Add, customize and connect the AXI Interrupt Controller
Add AXI Interrupt Controller IP axi_intc_0.
Double-click on axi_intc_0 to re-customize it.

In “Processor Interrupt Type and Connection” section select the “Interrupt Output Connection” from “Bus” to “Single”.

In “Peripherial Interrupt Type” section, change the “Interrupts Types Edge or Level” from AUTO to MANUAL.  Change the corresponding value from 0xFFFFFFFF to 0x00000000.

Click on OK to accept these changes.

Note
This re-configuration is manually setting all interrupts as level interrupts. With this setting, the PetaLinux automatically creates correct description of the interrupt controller in the device tree.
The Vitis extensible flow generates HW IP blocks with level interrupts.


Note
In case of user defined edge interrupts, the corresponding interrupt description will be added in an customised, interrupt controller description section of the user-defined device tree file
~/work/TE0802_02_240/test_board/os/petalinux/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
For the default extensible TE0802_02_240_pfm platform it is not needed.


Scroll Title
title-alignmentcenter

Connect interrupt controller clock input s_axi_aclk of axi_intc_0 to clock output dlk_out4 of clk_wiz_0. It is the default, 240 MHz clock of the extensible platform.

Connect interrupt controller input s_axi_aresetn of axi_intc_0 to output peripheral_aresetn[0:0] of proc_sys_reset_4 . It is the reset block for default, 240 MHz clock of the extensible platform.

Scroll Title
title-alignmentcenter

Use the Run Connection Automation wizard to connect the axi lite interface of interrupt controller axi_intc_0 to zynq_ultra_ps_e_0. It is available in green line in top of the Diagram window.

In Run Connection Automaton window, click OK.

Scroll Title
title-alignmentcenter

New AXI interconnect ps_8_axi_periph is created and related connections are generated.

Scroll Title
title-alignmentcenter

Vitis extensible design flow will be expanding the AXI interconnect ps_8_axi_periph for interfacing and configuration of registers of generated HW IP blocks with the default extensible platform clock 240 MHz.

Modify the automatically generated reset network of AXI interconnect ps_8_axi_periph IP.

Disconnect input S00_ARESETN of ps_8_axi_periph from the network driven by output peripherial_aresetn[0:0] of proc_sys_reset_4 block.

Connect input S00_ARESETN of ps_8_axi_periph block with output interconnect_aresetn[0:0] of proc_sys_reset_4 block.

Disconnect input M00_ARESETN of ps_8_axi_periph block from the network driven by output peripherial_aresetn[0:0] of proc_sys_reset_4 block.

Connect input M00_ARESETN of ps_8_axi_periph to output interconnect_aresetn[0:0] of proc_sys_reset_4 block.

This modification will make the reset structure of the AXI interconnect ps_8_axi_periph block identical to the future extensions generated by the Vitis extensible design flow.

Scroll Title
title-alignmentcenter

Double-click on zynq_ultra_ps_e_0 to re-customize it by enabling of an interrupt input pl_ps_irq0[0:0]. Click OK.

Scroll Title
title-alignmentcenter

Connect the interrupt input pl_ps_irq0[0:0] of zynq_ultra_ps_e_0 block with output irq of axi_intc_0 block.

Scroll Title
title-alignmentcenter

In Platform Setup, select “Interrupt” and enable intr in the “Enabled” column.

Scroll Title
title-alignmentcenter

In Platform Setup, select AXI Port for zynq_ultra_ps_e_0:

Select M_AXI_HPM0_FPD and M_AXI_HPM1_FPD in column “Enabled”.

Select S_AXI_HPC0_FPD and S_AXI_HPC1_FPD in column “Enabled”.

For S_AXI_HPC0_FPD, change S_AXI_HPC to S_AXI_HP in column “Memport”.

For S_AXI_HPC1_FPD, change S_AXI_HPC to S_AXI_HP in column “Memport”.

Select S_AXI_HP0_FPD, S_AXI_HP1_FPD, S_AXI_HP2_FPD, S_AXI_HP3_FPD in column “Enabled”.

Type into the “sptag” column the names for these 6 interfaces so that they can be selected by v++ configuration during linking phase. HPC0HPC1HP0HP1HP2HP3

Scroll Title
title-alignmentcenter

In “Platform Setup”, select AXI Ports for ps8_0_axi_periph:

Select M01_AXI, M02_AXI, M03_AXI, M04_AXI, M05_AXI, M06_AXI and M07_AXI in column “Enabled”.

Scroll Title
title-alignmentcenter

The modifications of the default design for the extensible platform are completed, now.

In Vivado, save block design by clicking on icon “Save Block Design”.

Continue the design path with Validate Design.

Validate Design

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Results of HW creation via Manual Track or Fast Track are identical.

Open diagram by clicking on zusys.bd if not already open.
In Diagram window, validate design by clicking on “Validate Design” icon.

Scroll Title
title-alignmentcenter

Received Critical Messages window indicates that input intr[0:0] of axi_intc_0 is not connected. This is expected. The Vitis extensible design flow will connect this input to interrupt outputs from generated HW IPs.

 Click OK.

Warning

Known Issue: Sometimes an error in validation process may occur reporting create_pfm function is not known. Workaroud is to close vivado tool and reopen again to correclty load platform export API.


Note
You can generate pdf of the block diagram by clicking to any place in diagram window and selecting “Save as PDF File”. Use the offered default file name:
~/work/TE0802_02_240/test_board/vivado/zusys.pdf

Compile Created HW and Custom SW with Trenz Scripts

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

In Vivado Tcl Console, type following script and execute it by Enter. It will take some time to compile HW. HW design and to export the corresponding standard XSA package with included bitstream.

Code Block
languagetext
TE::hw_build_design -export_prebuilt

An archive for standard non-extensible system is created:
~/work/TE0802_02_240/test_board/vivado/test_board_2cg_1e_4gb.xsa

In Vivado Tcl Console, type the following script and execute it by Enter. It will take some time to compile.

Code Block
languagetext
TE::sw_run_vitis -all

After the script controlling SW compilation is finished, the Vitis SDK GUI is opened.

Close the Vitis “Welcome” page.
Compile the two included SW projects.
Standalone custom Vitis platform has been created and compiled. 

The standalonecustom Vitis platform includes Trenz Electronic custom first stage boot loader in folder zynqmp_fsbl. It includes SW extension specific for the Trenz board initialisation.

This custom zynqmp_fsbl project has been compiled into executable file fsbl.elf.  It is located in: ~/work/TE0802_02_240/test_board/prebuilt/software/2cg_4gb/fsbl.elf

This customised first stage boot loader is needed for the Vitis extensible platform.
We have used the standard Trenz scripts to generate it for next use in the extensible platform.

Exit the opened Vitis SDK project.

In Vivado top menu select File->Close Project to close project. Click OK.

In Vivado top menu select File->Exit to close Vivado. Click OK.

The exported Vitis Extensible Hardware platform named test_board_2cg_1e_4gb.xsa can be found in the vivado folder.

Copy Created Custom First Stage Boot Loader

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Up to now,test_board directory has been used for all development.
~/work/TE0802_02_240/test_board

Create new folders:
~/work/TE0802_02_240/test_board_pfm/pfm/boot
~/work/TE0802_02_240/test_board_pfm/pfm/sd_dir

Copy the recently created custom first stage boot loader executable file from
~/work/TE0802_02_240/test_board/prebuilt/software/2cg_1e_4gb/fsbl.elf
to
~/work/TE0802_02_240/test_board_pfm/pfm/boot/fsbl.elf

Building Platform OS and SDK

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Configuration of the Default Trenz Petalinux for the Vitis Extensible Platform

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Change directory to the default Trenz Petalinux folder
~/work/TE0802_02_240/test_board/os/petalinux

Source Vitis and Petalinux scripts to set environment for access to Vitis and PetaLinux tools.

Code Block
languagebash
$ source /tools/Xilinx/Vitis/2021.2/settings64.sh
$ source ~/petalinux/2021.2/settings.sh

Configure petalinux with the test_board_2cg_1e_4gb.xsa for the extensible design flow by executing:

Code Block
languagebash
$ petalinux-config --get-hw-description=~/work/TE0802_02_240/test_board/vivado


Scroll Title
title-alignmentcenter

Select Exit->Yes to close this window.

Customize Root File System, Kernel, Device Tree and U-boot

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

In text editor, append definition of 32 interrupts by this text:

Code Block
languageruby
&amba {	zyxclmm_drm {
		compatible = "xlnx,zocl";
		status = "okay";
		reg = <0x0 0xA0000000 0x0 0x10000>;
		interrupt-parent = <&axi_intc_0>;
		interrupts = <0  4>, <1  4>, <2  4>, <3  4>,
			     <4  4>, <5  4>, <6  4>, <7  4>,
			     <8  4>, <9  4>, <10 4>, <11 4>,
			     <12 4>, <13 4>, <14 4>, <15 4>,
			     <16 4>, <17 4>, <18 4>, <19 4>,
			     <20 4>, <21 4>, <22 4>, <23 4>,
			     <24 4>, <25 4>, <26 4>, <27 4>,
			     <28 4>, <29 4>, <30 4>, <31 4>;
	};
};

to the system-user.dtsi file located in folder:
~/work/TE0802_02_240/test_board/os/petalinux/project-spec/meta-user/recipes-bsp/device-tree/files/

Download the Vitis-AI 2.0 repository.
In browser, open page:

https://github.com/Xilinx/Vitis-AI/tree/2.0

Clik on green Code button and download Vitis-AI-2.0.zip file.
Unzip Vitis-AI-2.0.zip file to directory ~/Downloads/Vitis-AI.

Copy ~/Downloads/Vitis-AI to  ~/vitis_ai_2_0 

Delete Vitis-AI-2.0.zip, delete ~/Downloads/Vitis-AI, clean trash.

The directory ~/vitis_ai_2_0 contains the Vitis-AI 2.0 framework, now.

To install the Vitis-AI 2.0 version of shared libraries into rootfs (when generating system image by PetaLinux) we have to copy recepies recipes-vitis-ai to the Petalinux project :

Copy  
~/vitis_ai_2_0/tools/Vitis-AI-Recipes/recipes-vitis-ai

to

~/work/TE0802_02_240/test_board/os/petalinux/project-spec/meta-user/

In text editor, append these lines:

Code Block
languagetext
CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv
CONFIG_packagegroup-petalinux-opencv-dev
CONFIG_dnf
CONFIG_e2fsprogs-resize2fs
CONFIG_parted
CONFIG_resize-part
CONFIG_packagegroup-petalinux-vitisai
CONFIG_packagegroup-petalinux-self-hosted
CONFIG_cmake
CONFIG_packagegroup-petalinux-vitisai-dev
CONFIG_mesa-megadriver
CONFIG_packagegroup-petalinux-x11
CONFIG_packagegroup-petalinux-v4lutils
CONFIG_packagegroup-petalinux-matchbox
CONFIG_vitis-ai-library
CONFIG_vitis-ai-library-dev
CONFIG_vitis-ai-library-dbg

to the user-rootfsconfig file:
~/work/TE0802_02_240/test_board/os/petalinux/project-spec/meta-user/conf/user-rootfsconfig

xrt, xrt-dev and zocl  are required for Vitis acceleration flow.
dnf is for package management.
parted, e2fsprogs-resize2fs and resize-part can be used for ext4 partition resize.

Other included packages serve for natively building Vitis AI applications on target board and for running Vitis-AI demo applications with GUI.

The last three packages will enable use of the Vitis-AI 2.0 recepies for installation of the correspoding Vitis-AI 2.0 libraries into rootfs of PetaLinux.

Enable all required packages in Petalinux configuration, from the Ubuntu terminal:

Code Block
languagebash
$ petalinux-config -c rootfs

Select all user packages by typing “y”.All packages will have to have an asterisk.

Still in the RootFS configuration window, go to root directory by select Exit once.

Enable OpenSSH and Disable Dropbear

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Dropbear is the default SSH tool in Vitis Base Embedded Platform. If OpenSSH is used to replace Dropbear, the system could achieve faster data transmission speed over ssh. Created Vitis extensible platform applications may use remote display feature. Using of OpenSSH can improve the display experience.

Go to Image Features.
Disable ssh-server-dropbear and enable ssh-server-openssh and click Exit.

Go to Filesystem Packages->misc->packagegroup-core-ssh-dropbear and disable packagegroup-core-ssh-dropbear.

Go to Filesystem Packages level by Exit twice.

Go to console->network->openssh and enable openssh, openssh-sftp-server, openssh-sshd, openssh-scp.

Go to root level by selection of Exit four times.

Enable Package Management

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Package management feature can allow the board to install and upgrade software packages on the fly.

In rootfs config go to Image Features and enable package-management and debug_tweaks option
Click OK, Exit twice and select Yes to save the changes.

Disable CPU IDLE in Kernel Config

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

CPU IDLE would cause processors get into IDLE state (WFI) when the processor is not in use. When JTAG is connected, the hardware server on host machine talks to the processor regularly. If it talks to a processor in IDLE status, the system will hang because of incomplete AXI transactions.

So, it is recommended to disable the CPU IDLE feature during project development phase.

It can be re-enabled after the design has completed to save power in final products.

Launch kernel config:

Code Block
languagebash
$ petalinux-config -c kernel

Ensure the following items are TURNED OFF by entering 'n' in the [ ] menu selection:

CPU Power Management->CPU Idle->CPU idle PM support

CPU Power Management->CPU Frequency scaling->CPU Frequency scaling

Exit and Yes to Save changes.

Add EXT4 rootfs Support

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Let PetaLinux generate EXT4 rootfs. In terminal, execute:

Code Block
languagebash
$ petalinux-config

Go to Image Packaging Configuration.
Enter into Root File System Type

Select Root File System Type  EXT4

Change the “Device node” of SD device from the default value
/dev/mmcblk0p2

to new value required for the TE0802 boards on TE0706-03 carrier:
/dev/mmcblk1p2

Exit and Yes to save changes.

Let Linux Use EXT4 rootfs During Boot

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

The setting of which rootfs to use during boot is controlled by bootargs. We would change bootargs settings to allow Linux to boot from EXT4 partition.

In terminal, execute:

Code Block
languagebash
$ petalinux-config

Change DTG settings->Kernel Bootargs->generate boot args automatically to NO.

Update User Set Kernel Bootargs to:
earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk1p2 rw rootwait cma=512M

Click OK, Exit three times and Save.

Build PetaLinux Image

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

In terminal, build the PetaLinux project by executing:

Code Block
languagebash
$ petalinux-build

The PetaLinux image files will be generated in the directory:
~/work/TE0802_02_240/test_board/os/petalinux/images/linux

Generation of PetaLinux takes some time and requires Ethernet connection and sufficient free disk space.

Create Petalinux SDK 

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

The SDK is used by Vitis tool to cross compile applications for newly created platfom.

In terminal, execute:

Code Block
languagebash
$ petalinux-build --sdk

The generated sysroot package sdk.sh will be located in directory
~/work/TE0802_02_240/test_board/os/petalinux/images/linux
 
Generation of SDK package takes some time and requires sufficient free disk space.
Time needed for these two steps depends also on number of allocated processor cores.

Copy Files for Extensible Platform

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Copy these four files:

Scroll Title
title-alignmentcenter


FilesFromTo
bl31.elf
pmufw.elf
system.dtb
u-boot-dtb.elf
~/work/TE0802_02_240/test_board/os/petalinux/images/linux~/work/TE0802_02_240/test_board_pfm/pfm/boot


Rename the copied file u-boot-dtb.elf to u-boot.elf

The directory
~/work/TE0802_02_240/test_board_pfm/pfm/boot
contains these five files:

  1. bl31.elf
  2. fsbl.elf
  3. pmufw.elf
  4. system.dtb
  5. u-boot.elf

Copy files:

Scroll Title
title-alignmentcenter


FilesFrom To
boot.scr
system.dtb
~/work/TE0802_02_240/test_board/os/petalinux/images/linux~/work/TE0802_02_240/test_board_pfm/pfm/sd_dir


Copy file:

Scroll Title
title-alignmentcenter


FileFromTo
init.sh~/work/TE0802_02_240/test_board/misc/sd~/work/TE0802_02_240/test_board_pfm/pfm/sd_dir



Note

init.sh is an place-holder for user defined bash code to be executed after the boot:

Code Block
languagebash
#!/bin/sh
normal="\e[39m"
lightred="\e[91m"
lightgreen="\e[92m"
green="\e[32m"
yellow="\e[33m"
cyan="\e[36m"
red="\e[31m"
magenta="\e[95m"

echo -ne $lightred
echo Load SD Init Script
echo -ne $cyan
echo User bash Code can be inserted here and put init.sh on SD
echo -ne $normal


Create Extensible Platform zip File

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Create new directory tree:
~/work/TE0802_02_240_move/test_board/os/petalinux/images
~/work/TE0802_02_240_move/test_board/Vivado
~/work/TE0802_02_240_move/test_board_pfm/pfm/boot ~/work/TE0802_02_240_move/test_board_pfm/pfm/sd_dir

Copy all files from the directory:

Scroll Title
title-alignmentcenter


FilesSourceDestination
all~/work/TE0802_02_240/test_board/os/petalinux/images~/work/TE0802_02_240_move/test_board/os/petalinux/images
all~/work/TE0802_02_240/test_board_pfm/pfm/boot~/work/TE0802_02_240_move/test_board_pfm/pfm/boot
all~/work/TE0802_02_240/test_board_pfm/pfm/sd_dir~/work/TE0802_02_240_move/test_board_pfm/pfm/sd_dir
test_board_2cg_1e_4gb.xsa~/work/TE0802_02_240/test_board/Vivado/test_board_2cg_1e_4gb.xsa~/work/TE0802_02_240_move/test_board/Vivado/test_board_2cg_1e_4gb.xsa


Zip the directory
~/work/TE0802_02_240_move
into ZIP archive:
~/work/TE0802_02_240_move.zip

The archive TE0802_02_240_move.zip can be used to create extensible platform on the same or on an another PC with installed Ubuntu 20.04 and Vitis tools, with or without installed Petalinux. The archive includes all needed components, including the Xilinx xrt library and the script sdk.sh serving for generation of the sysroot .

The zip archive has size approximately 5.3 GB.

Move the TE0802_02_240_move.zip file to an PC disk drive.

Delete:
~/work/TE0802_02_240_move
~/work/TE0802_02_240_move.zip
Clean the Ubuntu Trash.

Generation of SYSROOT

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

This part of development can be direct continuation of the previous Petalinux configuration and compilation steps.

Note
Alternatively, it is also possible to implement all next steps on an Ubuntu 20.04 without installed PetaLinux Only the Ubuntu 20.04 and Vitis/Vivado installation is needed.
All required files created in the PetaLinux for the specific board (24) are present in the archive: TE0802_02_240_move.zip
In this case, unzip the archive to the directory:
~/work/TE0802_02_240_move
and copy all content of directories to
~/work/TE0802_02_240
Delete the TE0802_02_240_move.zip file and the ~/work/TE0802_02_240_move directory to save filesystem space.

In Ubuntu terminal, change the working directory to:
~/work/TE0802_02_240/test_board/os/petalinux/images/linux

In Ubuntu terminal, execute script enabling access to Vitis 2021 tools.
Execution of script serving for setting up PetaLinux environment is not necessary:

Code Block
languagebash
$ source /tools/Xilinx/Vitis/2021.2/settings64.sh

In Ubuntu terminal, execute script

Code Block
languagebash
$ ./sdk.sh -d ~/work/TE0802_02_240/test_board_pfm

SYSROOT directories and files for PC and for Zynq Ultrascale+  will be created in:
~/work/TE0802_02_240/test_board_pfm/sysroots/x86_64-petalinux-linux
~/work/TE0802_02_240/test_board_pfm/sysroots/cortexa72-cortexa53-xilinx-linux

Once created, do not move these sysroot directories (due to some internally created paths).

Generation of Extensible Platform for Vitis

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

In Ubuntu terminal, change the working directory to:
~/work/TE0802_02_240/test_board_pfm

Start the Vitis tool by executing

Code Block
languagebash
$ vitis &

In Vitis “Launcher”, set the workspace for the extensible platform compilation:
~/work/TE0802_02_240/test_board_pfm

Click on “Launch” to launch Vitis

Close Welcome page.

In Vitis, select in the main menu: File -> New -> Platform Project

Type name of the extensible platform:  TE0802_02_240_pfm. Click Next.


Scroll Title
title-alignmentcenter

 Choose for hardware specification for the platform file:
 ~/work/TE0802_02_240/test_board/vivado/test_board_2cg_1e_4gb.xsa

In “Software specification” select: linux
In “Boot Components” unselect Generate boot components
(these components have been already generated by Vivado and PetaLinux design flow)

New window TE0802_02_240_pfm is opened.

Click on linux on psu_cortex53 to open window Domain: linux_domain

In “Description”: write xrt  

In “Bif File” find and select the pre-defied option:  Generate Bif

In “Boot Components Directory” select:
~/work/TE0802_02_240/test_board_pfm/pfm/boot

In “FAT32 Partition Directory” select:
~/work/TE0802_02_240/test_board_pfm/pfm/sd_dir

Scroll Title
title-alignmentcenter

In Vitis IDE “Explorer” section, click on TE0802_02_240_pfm to highlight it.

Right-click on the highlighted TE0802_02_240_pfm and select build project in the open submenu. Platform is compiled in few seconds.
Close the Vitis tool by selection: File -> Exit.

Scroll Title
title-alignmentcenter

Vitis extensible platform TE0802_02_240_pfm has been created in the directory:
~/work/TE0802_02_240/test_board_pfm/TE0802_02_240_pfm/export/TE0802_02_240_pfm

Platform Usage

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Test 1: Read Platform Info

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

With Vitis environment setup, platforminfo tool can report XPFM platform information.

Code Block
languagebash
platforminfo ~/work/TE0802_02_240/test_board_pfm/TE0802_02_240_pfm/export/TE0802_02_240_pfm/TE0802_02_240_pfm.xpfm 


Code Block
languagetext
titleDetailed listing from platforminfo utility
==========================
Basic Platform Information
==========================
Platform:           TE0802_02_240_pfm
File:               /home/devel/work/TE0802_02_240/test_board_pfm/TE0802_02_240_pfm/export/TE0802_02_240_pfm/TE0802_02_240_pfm.xpfm
Description:         TE0802_02_240_pfm
    

=====================================
Hardware Platform (Shell) Information
=====================================
Vendor:                           vendor
Board:                            zusys
Name:                             zusys
Version:                          1.0
Generated Version:                2021.2.1
Hardware:                         1
Software Emulation:               1
Hardware Emulation:               1
Hardware Emulation Platform:      0
FPGA Family:                      zynquplus
FPGA Device:                      xczu2cg
Board Vendor:                     trenz.biz
Board Name:                       trenz.biz:TE0802_2cg_1e:3.0
Board Part:                       xczu2cg-sfvc784-1-e

=================
Clock Information
=================
  Default Clock Index: 4
  Clock Index:         1
    Frequency:         100.000000
  Clock Index:         2
    Frequency:         200.000000
  Clock Index:         3
    Frequency:         400.000000
  Clock Index:         4
    Frequency:         240.000000

==================
Memory Information
==================
  Bus SP Tag: HP0
  Bus SP Tag: HP1
  Bus SP Tag: HP2
  Bus SP Tag: HP3
  Bus SP Tag: HPC0
  Bus SP Tag: HPC1

=============================
Software Platform Information
=============================
Number of Runtimes:            1
Default System Configuration:  TE0802_02_240_pfm
System Configurations:
  System Config Name:                      TE0802_02_240_pfm
  System Config Description:               TE0802_02_240_pfm
  System Config Default Processor Group:   linux_domain
  System Config Default Boot Image:        standard
  System Config Is QEMU Supported:         1
  System Config Processor Groups:
    Processor Group Name:      linux on psu_cortexa53
    Processor Group CPU Type:  cortex-a53
    Processor Group OS Name:   linux
  System Config Boot Images:
    Boot Image Name:           standard
    Boot Image Type:           
    Boot Image BIF:            TE0802_02_240_pfm/boot/linux.bif
    Boot Image Data:           TE0802_02_240_pfm/linux_domain/image
    Boot Image Boot Mode:      sd
    Boot Image RootFileSystem: 
    Boot Image Mount Path:     /mnt
    Boot Image Read Me:        TE0802_02_240_pfm/boot/generic.readme
    Boot Image QEMU Args:      TE0802_02_240_pfm/qemu/pmu_args.txt:TE0802_02_240_pfm/qemu/qemu_args.txt
    Boot Image QEMU Boot:      
    Boot Image QEMU Dev Tree:  
Supported Runtimes:
  Runtime: OpenCL

Test 2: Run Vector Addition Example

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Create new directorytest_board_test_vadd  to test Vitis extendable flow example “vector addition”
~/work/TE0802_02_240/test_board_test_vadd

Current directory structure:
~/work/TE0802_02_240/test_board
~/work/TE0802_02_240/test_board_pfm
~/work/TE0802_02_240/test_board_test_vadd

Change working directory:

Code Block
languagebash
$cd ~/work/TE0802_02_240/test_board_test_vadd

In Ubuntu terminal, start Vitis by:

Code Block
languagebash
$ vitis &

In Vitis IDE Launcher, select your working directory
~/work/TE0802_02_240/test_board_test_vadd
Click on Launch to launch Vitis.

Select File -> New -> Application project. Click Next.

Skip welcome page if shown.

Click on “+ Add” icon and select the custom extensible platform TE0802_02_240_pfm[custom] in the directory:
~/work/TE0802_02_240/test_board_pfm/TE0802_02_240_pfm/export/TE0802_02_240_pfm

We can see available PL clocks and frequencies.

Note
PL4 with 240 MHz clock is has been set as default in the platform creation process.


Scroll Title
title-alignmentcenter

 Click Next.
In “Application Project Details” window type into Application project name: test_vadd
Click Next.
In “Domain window” type (or select by browse):
“Sysroot path”:
~/work/TE0802_02_240/test_board_pfm/sysroots/cortexa72-cortexa53-xilinx-linux
“Root FS”:
~/work/TE0802_02_240/test_board/os/petalinux/images/linux/rootfs.ext4
“Kernel Image”:
~/work/TE0802_02_240/test_board/os/petalinux/images/linux/Image
Click Next.

In “Templates window”, if not done before, update “Vitis IDE Examples” and “Vitis IDE Libraries”.

Select Host Examples
In “Find”, type: “vector add” to search for the “Vector Addition” example.

Select: “Vector Addition”
Click Finish
New project template is created.

In test_vadd window menu “Active build configuration” switch from “SW Emulation” to “Hardware”.

In “Explorer” section of Vitis IDE, click on:  test_vadd_system[TE0802_02_240_pfm] to select it.

Right Click on:  test_vadd_system[TE0802_02_240_pfm] and select in the opened sub-menu:
Build project

Vitis will compile:
In test_vadd_kernels subproject, compile the krnl_vadd from C++ SW to HDL HW IP source code
In test_vadd_system_hw_link subproject, compile  the krnl_vadd HDL together with TE0802_02_240_pfm into new, extended HW design with new accelerated (krnl_vadd) will run on the default 240 MHz clock. This step can take some time.
In test_vadd subproject, compile the vadd.cpp application example.

Scroll Title
title-alignmentcenter

Run Compiled Example Application

Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

The sd_card.img file is output of the compilation and packing by Vitis. It is located in directory:
~/work/TE0802_02_240/test_board_test_vadd/test_vadd_system/Hardware/package/sd_card.img

Write the sd card image from the sd_card.img file to SD card.

Note
In Windows Pro 10 (or Windows 11 Pro) PC, inst all program Win32DiskImager  for this task. Win32 Disk Imager can write raw disk image to removable devices.
https://win32diskimager.org/

Insert the SD card to the TE0802 board.

Connect PC USB terminal (115200 bps) card to the TE0802 board.

Connect USB Keyboard and USB Mouse to the TE0802 board.

Connect Ethernet cable to the TE0802 board.

Connect a 4K30 FPS cappable monitor to the Display Port connector of the TE0802 board.

Power on the TE0802 board.

In PC, find the assigned serial line COM port number for the USB terminal. In case of Win 10 or Win 11 use device manager.

In PC, open serial line terminal with the assigned COM port number. Speed 115200 bps.

Display Port Monitor indicates text “Please wait: Booting…” (white text, black background).

X11 screen opens on Display port with 4K30 FPS resolution.

Note


Scroll Title
title-alignmentcenter

X11 screen opens on Display port with 4K30 FPS resolution.

The DisplayPort line might have problem to synchronize with some DisplayPort Monitors.
If this happens, try to use another 4K monitor or use the PC Debian remote X11 support. 
We have used DisplayPort monitor LG27UD88-WF without problems.

TE0802 USB connected mouse and keyboard can be used. Mouse has been connected via USB hub present in the Raspberry Keboard.

Click on “Terminal” icon (A Unicode capable "rxvt" application)

Terminal opens as an X11 graphic window.

In terminal, use the keyboard and mouse connected to the TE0802 board and type:

Code Block
languagebash
sh-5.0# cd /media/sd-mmcblk1p1/
sh-5.0# ./test_vadd krnl_vadd.xclbin

The application test_vadd should run with this output:

Code Block
languagebash
sh-5.0# cd /media/sd-mmcblk1p1/
sh-5.0# ./test_vadd krnl_vadd.xclbin
INFO: Reading krnl_vadd.xclbin
Loading: 'krnl_vadd.xclbin'
Trying to program device[0]: edge
Device[0]: program successful!
TEST PASSED
sh-5.0#

The Vitis application has been evaluated on custom TE0802 system with extensible custom TE0802_02_240_pfm platform.

Close the rxvt terminal emulator by click ”x” icon (in the upper right corner) or by typing:

Code Block
languagebash
# exit

In X11, click on ”Shutdown” icon to close down safely.System is halted. Messages relate to halt of the system can be seen on the USB terminal).
The SD card can be safely removed from the TE0706-03 carrier board, now. The TE0802 board can be disconnected from power.

Note

The display resolution can be adjusted by user commands in TE0802 terminal:

Code Block
languagebash
root@petalinux:~# export DISPLAY=:0.0
root@petalinux:~# xrandr --output DP-1 --mode 800x600


Scroll Title
title-alignmentcenter

Adjustment of X11 display resolution.

 

Note


Scroll Title
title-alignmentcenter

Adjusted X11 display resolution.

 


Note

Scroll Title
title-alignmentcenter

Application test_vadd executed in terminal emulator on X11 display with resolution adjusted to 800x600. 

Remote X11 can be also started on Ubuntu PC connected to the TE0802 board via Ethernet.
The comminication is enabled by program PuTTY running on Ununtu PC with selected option: Enable X11 forwarding.
This option can be selected in SSH -> X11 -> X11 forwarding menu of PuTTY .

Login to TE0802 PetaLinux by user> root and Pswd: root

Start the X11 session manager on TE0802 by:

Code Block
languagebash
root@petalinux:~# x-session-manager &

In the X11 session, Terminal emulator(s) can be started and TE0802 application(s) can be executed with X11 support.

The remote X11 desktop is using PC keyboard and mouse and forwards them to the TE0802 board via Ethernet.

Note


Scroll Title
title-alignmentcenter

Application test_vadd is executed in remote X11 terminal. top application and mc application are running in parallel.

To close the session, exit from all termial emulators and click on Shut down ico to halt the TE0802 petalinux.
The PuTTY session is terminated and the remote X11 emulation is closed.

Please, wait for complete halt TE0802 board.  It is indicated in the USB terminal by:
reboot: Power down

SD card can be removed from TE0802.
TE0802 power can be disconnected from power.

Code Block
languagebash
titleFull listing of PC USB petalinux console after following operations are performed:
collapsetrue
-------------------------------------------------------------------------------- TE0802 TE_XFsbl_HookPsuInit_Custom
Configure PLL: SI5338-B
Si5338 Init Registers Write.
Si5338 Init Complete
PLL Status Register 218:0x8
USB Reset Complete
ETH Reset Complete
Xilinx Zynq MP First Stage Boot Loader (TE modified)
Release 2021.2   Dec 13 2022  -  10:39:01
Device Name: XCZU2CG

--------------------------------------------------------------------------------
TE0802 TE_XFsbl_BoardInit_Custom
Reset Complete

--------------------------------------------------------------------------------
Xilinx Zynq MP First Stage Boot Loader (TE modified)
Release 2021.2   Dec  1 2022  -  18:37:26
Device Name: XCZU2CG

-------------------------------------------------------------------------------- TE0802 TE_XFsbl_BoardInit_Custom

--------------------------------------------------------------------------------
NOTICE:  BL31: v2.4(release):xlnx_rebase_v2.4_2021.1_update1-23-g9188496b9
NOTICE:  BL31: Built : 07:41:24, Oct 13 2021


U-Boot 2021.01 (Oct 12 2021 - 09:28:42 +0000)

CPU:   ZynqMP
Silicon: v3
Board: Xilinx ZynqMP
DRAM:  4 GiB
PMUFW:  v1.1
EL Level:       EL2
Chip ID:        zu2cg
NAND:  0 MiB
MMC:   mmc@ff160000: 0, mmc@ff170000: 1
Loading Environment from FAT... Unable to use mmc 0:0... In:    serial
Out:   serial
Err:   serial
Bootmode: SD_MODE1
Reset reason:   EXTERNAL
Net:
ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 1, interface rgmii-id

Warning: ethernet@ff0e0000 (eth0) using random MAC address - da:63:af:98:9d:a5
eth0: ethernet@ff0e0000
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1 is current device
Scanning mmc 1:1...
Found U-Boot script /boot.scr
2710 bytes read in 16 ms (165 KiB/s)
## Executing script at 20000000
Trying to load boot images from mmc1
21451264 bytes read in 1990 ms (10.3 MiB/s)
40869 bytes read in 19 ms (2.1 MiB/s)
## Flattened Device Tree blob at 00100000
   Booting using the fdt blob at 0x100000
   Loading Device Tree to 000000007dd04000, end 000000007dd10fa4 ... OK

Starting kernel ...
NOTICE:  BL31: v2.4(release):xlnx_rebase_v2.4_2021.1_update1-23-g9188496b9
NOTICE:  BL31: Built : 07:41:24, Oct 13 2021


U-Boot 2021.01 (Oct 12 2021 - 09:28:42 +0000)

CPU:   ZynqMP
Silicon: v3
Board: Xilinx ZynqMP
DRAM:  1023 MiB
PMUFW:  v1.1
EL Level:       EL2
Chip ID:        zu2cg
NAND:  0 MiB
MMC:   mmc@ff160000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Bootmode: SD_MODE
Reset reason:   EXTERNAL
Net:
ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 1, interface rgmii-id

Warning: ethernet@ff0e0000 (eth0) using random MAC address - 22:fb:05:9d:af:ef
eth0: ethernet@ff0e0000
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2710 bytes read in 16 ms (165 KiB/s)
## Executing script at 20000000
Trying to load boot images from mmc0
21787136 bytes read in 2143 ms (9.7 MiB/s)
40178 bytes read in 19 ms (2 MiB/s)
## Flattened Device Tree blob at 00100000
   Booting using the fdt blob at 0x100000
   Loading Device Tree to 000000003dd05000, end 000000003dd11cf1 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.0-xilinx-v2021.2 (oe-user@oe-host) (aarch64-xilinx-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1) #1 SMP Tue Oct 12 09:30:57 UTC 2021
[    0.000000] Machine model: xlnx,zynqmp
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 128 MiB at 0x0000000035c00000
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000000000000-0x000000003fefffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003fefffff]
[    0.000000] Zeroed struct page in unavailable ranges: 256 pages
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fefffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s49624 r8192 d32296 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 257796
[    0.000000] Kernel command line: earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=128M
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 874244K/1047552K available (14080K kernel code, 988K rwdata, 3964K rodata, 2112K init, 591K bss, 42236K reserved, 131072K cma-reserved)
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] Linuxrcu: version 5.10.0-xilinx-v2021.2 (oe-user@oe-host) (aarch64-xilinx-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1) #1 SMP Tue Oct 12 09:30:57 UTC 2021Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Machine model: xlnx,zynqmp GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] earlyconGIC: cdns0Using atsplit MMIO 0x00000000ff000000 (options '115200n8')EOI/Deactivate mode
[    0.000000] printk: bootconsole [cdns0] enabled irq-xilinx: /amba_pl@0/interrupt-controller@80000000: num_irq=32, sw_irq=0, edge=0x0
[    0.000000] efi: UEFI not found.random: get_random_bytes called from start_kernel+0x31c/0x524 with crng_init=0
[    0.000000] cmaarch_timer: Reserved 512 MiB at 0x000000005dc00000cp15 timer(s) running at 33.33MHz (phys).
[    0.000000] Zone ranges: clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x7b00c47c0, max_idle_ns: 440795202120 ns
[    0.000000]   DMA32    [mem 0x0000000000000000-0x00000000ffffffff]000005] sched_clock: 56 bits at 33MHz, resolution 30ns, wraps every 2199023255541ns
[    0.000000008405] Console: colour Normaldummy   [mem 0x0000000100000000-0x000000087fffffff]device 80x25
[    0.000000012419] MovableCalibrating zonedelay start for each node
[    0.000000] Early memory node rangesloop (skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=133333)
[    0.000000022666] pid_max: default: node32768   0minimum: [mem 0x0000000000000000-0x000000007fefffff]301
[    0.000000027457] Mount-cache hash nodetable entries: 2048 0: [mem 0x0000000800000000-0x000000087fffffff](order: 2, 16384 bytes, linear)
[    0.000000034612] ZeroedMountpoint-cache structhash pagetable inentries: unavailable2048 ranges: 256 pages(order: 2, 16384 bytes, linear)
[    0.000000044379] Initmemrcu: setupHierarchical node 0 [mem 0x0000000000000000-0x000000087fffffff]SRCU implementation.
[    0.000000047458] psci:EFI probingservices forwill conduitnot methodbe from DTavailable.
[    0.000000051795] pscismp: Bringing PSCIv1.1up detectedsecondary inCPUs firmware...
[    0.000000056673] psci:Detected UsingVIPT standardI-cache PSCI v0.2 function IDson CPU1
[    0.000000056750] psciCPU1: MIGRATE_INFO_TYPE not supported. Booted secondary processor 0x0000000001 [0x410fd034]
[    0.000000056849] pscismp: Brought SMCup Calling1 Conventionnode, v1.2 CPUs
[    0.000000070672] percpuSMP: EmbeddedTotal 22of pages/cpu2 s49624 r8192 d32296 u90112processors activated.
[    0.000000075346] CPU Detectedfeatures: VIPTdetected: I32-cachebit onEL0 CPU0Support
[    0.000000080447] CPU features: detected: ARMCRC32 erratum 845719instructions
[    0.000000085598] BuiltCPU: 1 zonelists, mobility grouping on.  Total pages: 1031940All CPU(s) started at EL2
[    0.000000089629] Kernelalternatives: commandpatching line: earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk1p2 rw rootwait cma=512Mkernel code
[    0.095505] devtmpfs: initialized
[    0.000000102884] Dentryclocksource: cache hash table entriesjiffies: mask: 524288 (order0xffffffff max_cycles: 100xffffffff, 4194304 bytes, linear)max_idle_ns: 7645041785100000 ns
[    0.000000107018] Inode-cachefutex hash table entries: 262144512 (order: 93, 209715232768 bytes, linear)
[    0.000000120101] mempinctrl auto-initcore: stack:off, heap alloc:off, heap free:offinitialized pinctrl subsystem
[    0.000000120986] softwareDMI IOnot TLB:present mapped [mem 0x0000000059c00000-0x000000005dc00000] (64MB)or invalid.
[    0.000000123927] MemoryNET: 3501236K/4193280KRegistered availableprotocol (13888K kernel code, 980K rwdata, 3904K rodata, 2048K init, 588K bss, 167756K reserved, 524288K cma-reserved)family 16
[    0.130010] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.000000135031] rcu: Hierarchical RCU implementation.DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.000000142872] rcuaudit: initializing netlink subsys  RCU event tracing is enabled.(disabled)
[    0.148307] audit: type=2000 audit(0.104:1): state=initialized audit_enabled=0 res=1
[    0.000000148861] rcuhw-breakpoint: found 6   RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2breakpoint and 4 watchpoint registers.
[    0.000000162664] rcu:ASID RCUallocator calculatedinitialised valuewith of scheduler-enlistment delay is 25 jiffies.65536 entries
[    0.000000168130] rcuSerial: AdjustingAMBA geometryPL011 for rcu_fanout_leaf=16, nr_cpu_ids=2UART driver
[    0.000000197352] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.000000198411] GIC: Adjusting CPU interface base to 0x00000000f902f000 HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.000000205091] GIC: Using split EOI/Deactivate mode HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.000000] irq-xilinx: /amba_pl@0/interrupt-controller@80010000: num_irq=32, sw_irq=0, edge=0x0211748] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    01.000000264010] randomcryptd: getmax_randomcpu_bytesqlen calledset from start_kernel+0x31c/0x524 with crng_init=0to 1000
[    01.000000294769] arch_timerDRBG: cp15 timer(s) running at 33.33MHz (phys).Continuing without Jitter RNG
[    01.000000375285] clocksourceraid6: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x7b00c47c0, max_idle_ns: 440795202120 nsneonx8   gen()  2135 MB/s
[    01.000003443332] sched_clockraid6: 56 bitsneonx8 at 33MHz, resolutionxor() 30ns, wraps every 2199023255541ns1593 MB/s
[    01.008249511411] Consoleraid6: colour dummy device 80x25 neonx4   gen()  2188 MB/s
[    01.012393579461] raid6: Calibratingneonx4 delay loop xor(skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=133333)  1565 MB/s
[    1.647543] raid6: neonx2   gen()  2076 MB/s
[    01.022668715597] pid_max: default: 32768 minimum: 301raid6: neonx2   xor()  1438 MB/s
[    01.027381783669] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)raid6: neonx1   gen()  1774 MB/s
[    01.034617851729] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)raid6: neonx1   xor()  1219 MB/s
[    01.043409919809] rcu: Hierarchical SRCU implementation.raid6: int64x8  gen()  1437 MB/s
[    01.047375987870] raid6: EFI services will not be available.int64x8  xor()   771 MB/s
[    02.051742055941] smpraid6: int64x4 Bringing upgen() secondary CPUs ...1601 MB/s
[    02.056514124011] Detected VIPT I-cache on CPU1 raid6: int64x4  xor()   818 MB/s
[    02.056551192090] CPU1raid6: int64x2 Booted secondarygen() processor 0x0000000001 [0x410fd034]1398 MB/s
[    02.056613260137] smpraid6: Brought up 1 node, 2 CPUsint64x2  xor()   750 MB/s
[    02.070674328231] SMPraid6: int64x1 Total ofgen() 2 processors activated.1032 MB/s
[    02.075347396281] raid6: int64x1 CPU features: detected: 32-bit EL0 Supportxor()   517 MB/s
[    02.080451396327] raid6: using CPUalgorithm features: detected: CRC32 instructionsneonx4 gen() 2188 MB/s
[    02.085584400279] CPUraid6: All CPU(s) started at EL2.... xor() 1565 MB/s, rmw enabled
[    02.089627405212] alternativesraid6: using patchingneon kernelrecovery codealgorithm
[    02.095091] devtmpfs410631] iommu: Default domain type: initializedTranslated
[    02.101492415010] clocksource:SCSI jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nssubsystem initialized
[    02.107015418607] futex hash table entriesusbcore: 512 (order: 3, 32768 bytes, linear)registered new interface driver usbfs
[    02.126755423853] usbcore: pinctrlregistered core:new initializedinterface pinctrldriver subsystemhub
[    02.127173429112] usbcore: DMIregistered notnew presentdevice ordriver invalid.usb
[    02.130347434176] NETmc: RegisteredLinux protocolmedia family 16interface: v0.10
[    02.135600] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations438362] videodev: Linux video capture interface: v2.00
[    2.443851] EDAC MC: Ver: 3.0.0
[    02.141667] DMA447555] zynqmp-ipi-mbox mailbox@ff990400: preallocatedRegistered 512ZynqMP KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocationsIPI mbox with TX/RX channels.
[    02.149470455674] audit:FPGA initializing netlink subsys (disabled)manager framework
[    02.154923458913] audit: type=2000 audit(0.108:1): state=initialized audit_enabled=0 res=1Advanced Linux Sound Architecture Driver Initialized.
[    02.155288465297] hw-breakpointBluetooth: foundCore 6 breakpoint and 4 watchpoint registers.ver 2.22
[    2.468378] NET: Registered protocol family 31
[    02.169277472771] Bluetooth: ASIDHCI allocatordevice initialisedand withconnection 65536manager entriesinitialized
[    02.174715479089] SerialBluetooth: AMBAHCI PL011socket UARTlayer driverinitialized
[    02.199436483929] HugeTLBBluetooth: registeredL2CAP 1.00socket GiB page size, pre-allocated 0 pageslayer initialized
[    02.200490488956] HugeTLBBluetooth: registeredSCO 32.0socket MiB page size, pre-allocated 0 pageslayer initialized
[    02.207164494259] HugeTLBclocksource: registeredSwitched 2.00to MiB page size, pre-allocated 0 pagesclocksource arch_sys_counter
[    02.213821500068] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pagesVFS: Disk quotas dquot_6.6.0
[    12.265729] cryptd: max_cpu_qlen set to 1000503801] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    12.289971515504] DRBGNET: ContinuingRegistered withoutprotocol Jitterfamily RNG2
[    12.369325] raid6: neonx8   gen()  2139 MB/s516130] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    12.437379523218] raid6: neonx8   xor()  1596 MB/s TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    12.505449530954] raid6: neonx4   gen()  2185 MB/s TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    12.573506538397] raid6TCP: neonx4Hash tables configured xor()established 8192 1566 MB/sbind 8192)
[    12.641575544546] raid6: neonx2   gen()  2076 MB/s UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    12.709630550996] raid6: neonx2   xor()  1435 MB/s UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    12.777716558107] raid6NET: neonx1Registered protocol  gen()  1770 MB/sfamily 1
[    12.845767562806] raid6RPC: neonx1Registered named UNIX xor()socket  1219 MB/stransport module.
[    12.913840568197] raid6RPC: int64x8Registered udp gen()  1437 MB/stransport module.
[    12.981897572850] raid6RPC: int64x8Registered tcp xor()   771 MB/stransport module.
[    2.049966577521] raid6RPC: int64x4Registered  gen()  1601 MB/stcp NFSv4.1 backchannel transport module.
[    2.118032584613] raid6PCI: int64x4CLS 0 xor()bytes,   819 MB/sdefault 64
[    2.186100616090] raid6:Initialise int64x2  gen()  1397 MB/ssystem trusted keyrings
[    2.254174616308] raid6workingset: int64x2  xor()   750 MB/stimestamp_bits=46 max_order=18 bucket_order=0
[    2.322250622390] raid6NFS: int64x1Registering  gen()  1031 MB/sthe id_resolver key type
[    2.390300] raid6: int64x1  xor()   517 MB/s626360] Key type id_resolver registered
[    2.630489] Key type id_legacy registered
[    2.390337634494] raid6nfs4filelayout_init: usingNFSv4 algorithmFile neonx4Layout gen() 2185 MB/sDriver Registering...
[    2.394298641147] raid6jffs2: version 2.... xor() 1566 MB/s, rmw enabled2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    2.399228683281] raid6NET: usingRegistered neonprotocol recoveryfamily algorithm38
[    2.404234683338] iommuxor: Defaultmeasuring domainsoftware type:checksum Translatedspeed
[    2.408869691033] SCSI subsystem initialized
[    2.412511] usbcore: registered new interface driver usbfs
[8regs        2.417860] usbcore: registered new: interface driver2363 hubMB/sec
[    2.423127694692] usbcore: registered new device32regs driver usb
[    2.428172] mc: Linux media interface: v0.10  2799 MB/sec
[    2.432374699628] videodev: Linux video capturearm64_neon interface: v2.00
[    2.437846]: EDAC MC: Ver: 3.0.02380 MB/sec
[    2.441291699816] zynqmp-ipi-mbox mailbox@ff990400xor: Registeredusing ZynqMPfunction: IPI32regs mbox with TX/RX channels.(2799 MB/sec)
[    2.449577704848] Key FPGAtype managerasymmetric frameworkregistered
[    2.452882708907] AdvancedAsymmetric Linuxkey Soundparser Architecture Driver Initialized.'x509' registered
[    2.459113] Bluetooth: Core ver 2.22713786] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    2.462385721106] NET:io Registeredscheduler protocol family 31mq-deadline registered
[    2.466789725601] Bluetooth:io HCIscheduler device and connection manager initializedkyber registered
[    2.473103732158] Bluetooth: HCI socket layer initializedps_pcie_dma init()
[    2.477945761803] Bluetooth: L2CAP socket layer initializedSerial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.482968764185] BluetoothSerial: SCO socket layer initializedAMBA driver
[    2.488057768126] clocksourcecacheinfo: SwitchedUnable to clocksource arch_sys_counter detect cache hierarchy for CPU 0
[    2.493987778085] VFSbrd: Disk quotas dquot_6.6.0module loaded
[    2.497794785003] VFSloop: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)module loaded
[    2.508656787075] NETmtdoops: Registered protocol family 2 mtd device (mtddev=name/number) must be supplied
[    2.509245790878] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)libphy: Fixed MDIO Bus: probed
[    2.517434794535] TCP established hash table entriestun: 32768 (order: 6, 262144 bytes, linear)Universal TUN/TAP device driver, 1.6
[    2.525461798126] CAN device TCPdriver bindinterface
[ hash table entries: 32768 (order: 7, 524288 bytes, linear) 2.802538] usbcore: registered new interface driver asix
[    2.532915807280] TCPusbcore: Hashregistered tablesnew configuredinterface (established 32768 bind 32768)driver ax88179_178a
[    2.539077813253] UDP hash table entriesusbcore: 2048registered (order: 4, 65536 bytes, linear)new interface driver cdc_ether
[    2.545747819045] UDP-Lite hash table entriesusbcore: 2048registered (order: 4, 65536 bytes, linear)new interface driver net1080
[    2.552913824667] NETusbcore: registered Registerednew protocolinterface familydriver 1cdc_subset
[    2.557388830553] RPCusbcore: Registeredregistered namednew UNIXinterface socket transport board.driver zaurus
[    2.562982836097] RPCusbcore: Registeredregistered new udpinterface transport board.driver cdc_ncm
[    2.567647842694] RPCusbcore: registered Registerednew tcpinterface transportdriver board.uas
[    2.572316846999] RPCusbcore: Registeredregistered tcpnew NFSv4.1interface backchannel transport board.driver usb-storage
[    2.579303853803] PCI rtc_zynqmp ffa60000.rtc: CLSregistered 0 bytes, default 64as rtc0
[    2.608680] Initialise system trusted keyrings858150] rtc_zynqmp ffa60000.rtc: setting system clock to 2018-03-09T12:39:28 UTC (1520599168)
[    2.608812866989] workingset: timestamp_bits=46 max_order=20 bucket_order=0i2c /dev entries driver
[    2.614651871993] NFSusbcore: Registeringregistered thenew id_resolverinterface keydriver typeuvcvideo
[    2.618931876112] KeyUSB Video typeClass id_resolver registereddriver (1.1.1)
[    2.623082880743] Bluetooth: HCI KeyUART typedriver id_legacy registeredver 2.3
[    2.627064884594] nfs4filelayout_initBluetooth: NFSv4HCI FileUART Layoutprotocol Driver Registering...H4 registered
[    2.633719889691] jffs2Bluetooth: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.HCI UART protocol BCSP registered
[    2.677014894988] NETBluetooth: HCI RegisteredUART protocol familyLL 38registered
[    2.677057900071] xorBluetooth: HCI measuringUART softwareprotocol checksumATH3K speedregistered
[    2.684757905448] Bluetooth: HCI UART 8regsprotocol Three-wire (H5) registered
[    2.911696] Bluetooth: HCI UART :protocol Intel 2363 MB/secregistered
[    2.688418917039] Bluetooth: HCI UART 32regsprotocol QCA registered
[    2.922248] usbcore: registered new :interface driver 2799 MB/secbcm203x
[    2.693358927870] usbcore: registered new arm64_neoninterface driver bpa10x
[    2.933401] usbcore: registered new interface 2380driver MB/secbfusb
[    2.693548938850] xorusbcore: usingregistered function:new 32regsinterface (2799 MB/sec)driver btusb
[    2.698574944317] Key type asymmetric registered usbcore: registered new interface driver ath3k
[    2.702636949818] AsymmetricEDAC keyMC: parserECC 'x509'not registeredenabled
[    2.707500] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247953417] EDAC DEVICE0: Giving out device to module edac controller cache_err: DEV edac (POLLED)
[    2.714835] io scheduler mq-deadline registered962356] EDAC DEVICE1: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    2.719330] io scheduler kyber registered974575] sdhci: Secure Digital Host Controller Interface driver
[    2.725060980429] ps_pcie_dma init()sdhci: Copyright(c) Pierre Ossman
[    2.750952984753] Serialsdhci-pltfm: 8250/16550 driver, 4 ports, IRQ sharing disabledSDHCI platform and OF driver helper
[    2.752660990811] Serial: AMBA driverledtrig-cpu: registered to indicate activity on CPUs
[    2.756657996364] cacheinfoSMCCC: Unable to detect cache hierarchy for CPU 0SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    23.765361] brd: board loaded002797] zynqmp_firmware_probe Platform Management API v1.1
[    23.769333] loop: board loaded008545] zynqmp_firmware_probe Trustzone version v1.0
[    23.770019068625] securefw mtdoopssecurefw: mtd device (mtddev=name/number) must be suppliedsecurefw probed
[    23.774758069149] libphyalg: No Fixedtest MDIO Bus: probedfor xilinx-zynqmp-aes (zynqmp-aes)
[    23.778699073182] tun zynqmp_aes firmware:zynqmp-firmware:zynqmp-aes: UniversalAES TUN/TAP device driver, 1.6Successfully Registered
[    23.782539081243] CAN device driver interfacealg: No test for xilinx-keccak-384 (zynqmp-keccak-384)
[    23.786894087417] usbcorealg: registeredNo newtest interface driver asixfor xilinx-zynqmp-rsa (zynqmp-rsa)
[    23.791666093003] usbcore: registered new interface driver ax88179_178ausbhid
[    23.797703098244] usbcoreusbhid: registeredUSB newHID interfacecore driver cdc_ether
[    23.803503105311] usbcore: registered new interfaceARM CCI_400_r1 PMU driver net1080probed
[    23.809119105880] fpga_manager usbcorefpga0: registeredXilinx newZynqMP interfaceFPGA driverManager cdc_subsetregistered
[    23.815002113211] usbcore: registered new interface driver zaurussnd-usb-audio
[    23.820550119800] usbcore: registered new interface driver cdc_ncmpktgen: Packet Generator for packet performance testing. Version: 2.75
[    23.826935127205] usbcore:Initializing registeredXFRM new interface driver uasnetlink socket
[    23.831454130707] usbcoreNET: registeredRegistered newprotocol interface driver usb-storagefamily 10
[    23.837982135664] rtc_zynqmp ffa60000.rtc: registered as rtc0Segment Routing with IPv6
[    23.842598138875] rtc_zynqmp ffa60000.rtc: setting system clock to 2018-03-09T12:36:32 UTC (1520598992)sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    23.851448145060] NET: i2cRegistered /devprotocol entriesfamily driver17
[    23.856264148947] usbcoreNET: registeredRegistered newprotocol interfacefamily driver uvcvideo15
[    23.860569153357] USBcan: Videocontroller Classarea driver (1.1.1)network core
[    23.865091157706] BluetoothNET: HCIRegistered UARTprotocol driver ver 2.3family 29
[    23.869053162076] Bluetoothcan: HCI UARTraw protocol H4 registered
[    23.874151165014] Bluetoothcan: HCIbroadcast UARTmanager protocol BCSP registered
[    23.879441169169] Bluetoothcan: HCInetlink UARTgateway protocol LL registered- max_hops=1
[    23.884530173608] Bluetooth: HCIRFCOMM UARTTTY protocollayer ATH3K registeredinitialized
[    23.889903178346] Bluetooth: HCIRFCOMM UARTsocket protocol Three-wire (H5) registeredlayer initialized
[    23.896150183463] Bluetooth: HCIRFCOMM UART protocol Intel registeredver 1.11
[    23.901498187164] Bluetooth: HCIBNEP UART(Ethernet protocolEmulation) QCAver registered1.3
[    23.906695192429] usbcoreBluetooth: registeredBNEP newfilters: interfaceprotocol driver bcm203xmulticast
[    23.912320197625] usbcoreBluetooth: registeredBNEP newsocket interfacelayer driver bpa10xinitialized
[    23.917854202552] usbcoreBluetooth: HIDP registered(Human newInterface interfaceEmulation) driverver bfusb1.2
[    23.923304208435] usbcoreBluetooth: registeredHIDP newsocket interfacelayer driver btusbinitialized
[    23.928763213556] usbcore9pnet: registeredInstalling new interface driver ath3k9P2000 support
[    23.934255217643] EDACKey MC: ECC not enabledtype dns_resolver registered
[    23.937840222097] EDACregistered DEVICE0:taskstats Giving out device to board edac controller cache_err: DEV edac (POLLED)version 1
[    3.225907] Loading compiled-in X.509 certificates
[    23.946789232797] EDACBtrfs DEVICE1: Giving out device to board zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    2.958992] sdhci: Secure Digital Host Controller Interface driverloaded, crc32c=crc32c-generic
[    3.249997] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 53, base_baud = 6249999) is a xuartps
[    23.964888259057] sdhciprintk: Copyright(c) Pierre Ossmanconsole [ttyPS0] enabled
[    23.969212259057] sdhci-pltfmprintk: SDHCIconsole platform and OF driver helper[ttyPS0] enabled
[    23.975100263367] ledtrig-cpuprintk: registeredbootconsole to indicate activity on CPUs[cdns0] disabled
[    23.980814263367] SMCCCprintk: SOC_ID: ARCH_SOC_ID not implemented, skipping ....bootconsole [cdns0] disabled
[    23.987238273280] zynqmp_firmware_probe Platform Management API v1.1of-fpga-region fpga-full: FPGA Region probed
[    23.993003283084] zynqmp_firmware_probe Trustzone version v1.0
[    3.045859] securefw securefw: securefw probednwl-pcie fd0e0000.pcie: host bridge /axi/pcie@fd0e0000 ranges:
[    3.046116290005] alg: No test for xilinx-zynqmp-aes (zynqmp-aes) nwl-pcie fd0e0000.pcie:      MEM 0x00e0000000..0x00efffffff -> 0x00e0000000
[    3.050355298023] zynqmp_aes firmware:zynqmp-firmware:zynqmp-aes: AES Successfully Registered
[nwl-pcie fd0e0000.pcie:      MEM 3.058422] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384)0x0600000000..0x07ffffffff -> 0x0600000000
[    3.064576306132] algnwl-pcie fd0e0000.pcie: NoLink test for xilinx-zynqmp-rsa (zynqmp-rsa)is UP
[    3.070084310804] usbcore: registered new interface driver usbhid nwl-pcie fd0e0000.pcie: PCI host bridge to bus 0000:00
[    3.075463316998] usbhid: USB HID core driver pci_bus 0000:00: root bus resource [bus 00-ff]
[    3.081911] ARM CCI_400_r1 PMU driver probed322477] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xefffffff]
[    3.082349329350] fpgapci_managerbus fpga00000:00: root Xilinxbus ZynqMPresource FPGA Manager registered[mem 0x600000000-0x7ffffffff pref]
[    3.090315336881] usbcore: registered new interface driver snd-usb-audio pci 0000:00:00.0: [10ee:d021] type 01 class 0x060400
[    3.096803342982] pktgen pci 0000:00:00.0: PacketPME# Generatorsupported forfrom packetD0 performanceD1 testing. Version: 2.75D2 D3hot
[    3.104086350603] pci 0000:01:00.0: [144d:a808] Initializingtype XFRM00 netlinkclass socket0x010802
[    3.107868356634] NET: Registered protocol family 10 pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[    3.112610] Segment Routing with IPv6
[    3.116011] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver363628] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[    3.122075379787] NET: Registered protocol family 17 pci 0000:00:00.0: BAR 8: assigned [mem 0xe0000000-0xe00fffff]
[    3.126162386576] NET pci 0000:01:00.0: RegisteredBAR protocol0: familyassigned 15
[mem    3.130576] can: controller area network core0xe0000000-0xe0003fff 64bit]
[    3.134908393893] NET: Registered protocol family 29 pci 0000:00:00.0: PCI bridge to [bus 01-0c]
[    3.139303399116] canpci 0000:00:00.0: raw protocol
[ bridge window  3.142239] can: broadcast manager protocol[mem 0xe0000000-0xe00fffff]
[    3.146394] can: netlink gateway - max_hops=1406054] ps_pcie_dma 0000:00:00.0: PS PCIe DMA Driver probe
[    3.150789] Bluetooth: RFCOMM TTY layer initialized411894] ps_pcie_dma 0000:00:00.0: enabling device (0000 -> 0002)
[    3.155570418604] nvme Bluetoothnvme0: RFCOMMpci socket layer initializedfunction 0000:01:00.0
[    3.160679] Bluetooth: RFCOMM ver 1.11423807] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
[    3.164390431051] Bluetoothxilinx-zynqmp-dma fd510000.dma: BNEPZynqMP (EthernetDMA Emulation)driver verProbe 1.3success
[    3.169660] Bluetooth: BNEP filters: protocol multicast438276] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
[    3.174850438309] Bluetooth: BNEP socket layer initialized nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    3.179780445511] Bluetoothxilinx-zynqmp-dma fd530000.dma: HIDPZynqMP (HumanDMA Interfacedriver Emulation) ver 1.2Probe success
[    3.185664458120] nvme Bluetoothnvme0: missing HIDPor socketinvalid layerSUBNQN initializedfield.
[    3.190701] 9pnet: Installing 9P2000 support458252] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
[    3.194847] Key type dns_resolver registered463507] nvme nvme0: Shutdown timeout set to 8 seconds
[    3.199184] registered taskstats version 1470639] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
[    3.203136483000] Loading compiled-in X.509 certificatesxilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
[    3.208886] Btrfs loaded, crc32c=crc32c-generic490251] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
[    3.220993497557] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 48, base_baud = 6249999) is a xuartpsxilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success
[    3.504777] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success
[    3.230013] printk: console [ttyPS0] enabled511994] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success
[    3.230013] printk: console [ttyPS0] enabled519225] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success
[    3.234312] printk: bootconsole [cdns0] disabled526455] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success
[    3.234312] printk: bootconsole [cdns0] disabled533671] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success
[    3.243675540896] ofxilinx-fpgazynqmp-region fpga-full: FPGA Region probeddma ffae0000.dma: ZynqMP DMA driver Probe success
[    3.253808548116] xilinx-zynqmp-dma fd500000ffaf0000.dma: ZynqMP DMA driver Probe success
[    3.260993555604] xilinx-zynqmp-dmadpdma fd510000fd4c0000.dma-controller: ZynqMPXilinx DMADPDMA driverengine Probeis successprobed
[    3.268174565038] xilinx-zynqmp-dmadisplay fd520000fd4a0000.dma: ZynqMP DMA driver Probe successdisplay: vtc bridge property not present
[    3.572481] nvme nvme0: 1/0/0 default/read/poll queues
[    3.275346574631] xilinx-dp-zynqmpsnd-dmacodec fd530000.dmafd4a0000.display:zynqmp_dp_snd_codec0: ZynqMPXilinx DMADisplayPort driverSound ProbeCodec successprobed
[    3.282519588079] xilinx-dp-zynqmpsnd-dma fd540000.dmapcm zynqmp_dp_snd_pcm0: ZynqMPXilinx DMADisplayPort driverSound ProbePCM successprobed
[    3.289686596334] xilinx-dp-zynqmpsnd-dma fd550000.dmapcm zynqmp_dp_snd_pcm1: ZynqMPXilinx DMADisplayPort driverSound ProbePCM successprobed
[    3.296852606099] xilinx-zynqmpdp-snd-dmacard fd560000.dma: ZynqMP DMA driver Probe successfd4a0000.display:zynqmp_dp_snd_card: ASoC: no DMI vendor name!
[    3.304028615696] xilinx-dp-zynqmpsnd-dmacard fd570000.dmafd4a0000.display:zynqmp_dp_snd_card: ZynqMPXilinx DMADisplayPort driverSound ProbeCard successprobed
[    3.311262625352] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe successOF: graph: no port node found in /axi/display@fd4a0000
[    3.318445632139] xilinxxlnx-zynqmp-dma ffa90000.dmadrm xlnx-drm.0: ZynqMPbound DMA driver Probe successfd4a0000.display (ops 0xffff800010e9b9c8)
[    3.325611766122] xilinx-zynqmp-dma ffaa0000.dmarandom: ZynqMPfast DMA driver Probe successinit done
[    37.332788762487] xilinx-zynqmp-dmadisplay ffab0000fd4a0000.dma: ZynqMP DMA driver Probe successdisplay: [drm] Cannot find any crtc or sizes
[    3.339959] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success7.770348] [drm] Initialized xlnx 1.0.0 20130509 for fd4a0000.display on minor 0
[    37.347139777850] xilinx-zynqmp-dmadisplay ffad0000fd4a0000.dmadisplay: ZynqMP DisplayPort DMASubsystem driver Probe successprobed
[    37.354306786710] xilinx-zynqmp-dmaqspi ffae0000ff0f0000.dmaspi: ZynqMPrx DMAbus driverwidth Probenot successfound
[    37.361478792368] xilinx-zynqmp-dmaqspi ffaf0000ff0f0000.dmaspi: ZynqMPtx DMAbus driverwidth Probenot successfound
[    37.369352798883] spi-nor spi0.0: trying to lock already unlocked area
[    37.375357804898] spi-nor spi0.0: mt25qu512an25q256a (13107232768 Kbytes)
[    37.380519809818] 4 fixed-partitions partitions found on MTD device spi0.0
[    37.386862816164] Creating 4 MTD partitions on "spi0.0":
[    37.391645820952] 0x000000000000-0x0000020000000x000000a00000 : "boot"
[    37.397153826909] 0x0000020000000x000000a00000-0x0000020400000x000000a40000 : "bootenv"
[    37.402840832833] 0x0000020400000x000000a40000-0x0000040400000x000001f40000 : "kernel"
[    37.408442838635] 0x0000040400000x000001f40000-0x0000040c00000x000001f80000 : "bootscr"
[    37.414561845362] macb ff0e0000.ethernet: Not enabling partial store and forward
[    37.421996853255] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    3.428569] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
[    3.4357807.859911] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
[    37.442324866509] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
[    37.448858873092] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
[    37.472876895273] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    37.478377900785] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[    37.486125908610] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x00000000020100100x0000000002010810
[    37.495529918028] xhci-hcd xhci-hcd.1.auto: irq 8493, io mem 0xfe200000
[    37.501646924463] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
[    37.509903932732] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    37.517112939949] usb usb1: Product: xHCI Host Controller
[    37.521983944819] usb usb1: Manufacturer: Linux 5.10.0-xilinx-v2021.2 xhci-hcd
[    37.528675951513] usb usb1: SerialNumber: xhci-hcd.1.auto
[    37.533830956852] hub 1-0:1.0: USB hub found
[    37.537596960649] hub 1-0:1.0: 1 port detected
[    37.541703964853] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    37.547189970355] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[    37.554846978018] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[    3.561403] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM. Host supports USB 3.0 SuperSpeed
[    37.569557984661] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
[    37.577818992930] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    38.585036000145] usb usb2: Product: xHCI Host Controller
[    38.589905005014] usb usb2: Manufacturer: Linux 5.10.0-xilinx-v2021.2 xhci-hcd
[    38.596600011705] usb usb2: SerialNumber: xhci-hcd.1.auto
[    38.601721016868] hub 2-0:1.0: USB hub found
[    38.605487020649] hub 2-0:1.0: 1 port detected
[    3.610454] at24 0-0050: supply vcc not found, using dummy regulator
[    3.617093] at24 0-0050: 256 byte 24aa025 EEPROM, writable, 1 bytes/write
[    3.623912] 8.025773] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 39
[    38.630198032620] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer with timeout 60s
[    3.637689] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer with timeout 10s
[    3.645590] macb ff0e0000.ethernet: Not enabling partial store and forwardat24 1-0050: supply vcc not found, using dummy regulator
[    38.656137039352] at24 libphy: MACB_mii_bus: probed1-0050: 256 byte 24aa025 EEPROM, writable, 1 bytes/write
[    38.661031046180] macbcdns-i2c ff0e0000ff030000.ethernet eth0i2c: Cadence400 GEMkHz rev 0x50070106 at 0xff0e0000mmio ff030000 irq 37 (80:1f:12:f2:b8:ff)40
[    38.673484052618] of_cfs_init
[    3.675936] of_cfs_init: OK cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer with timeout 60s
[    38.678851060183] cfg80211 cdns-wdt ff150000.watchdog: LoadingXilinx compiled-in X.509 certificates for regulatory databaseWatchdog Timer with timeout 10s
[    38.688078068610] mmc0: SDHCI controller on ff160000.mmc [ff160000.mmc] using ADMA 64-bit
[    3.695839] mmc1: SDHCI controller on ff170000.mmc [ff170000.mmc] using ADMA 64-bitmacb ff0e0000.ethernet: Not enabling partial store and forward
[    8.077283] libphy: MACB_mii_bus: probed
[    38.737216] mmc1: Problem switching card into high-speed mode!082381] macb ff0e0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 37 (80:1f:12:d0:7d:0a)
[    38.743622096906] mmc1: new SDHC card at address 0001of_cfs_init
[    8.099400] of_cfs_init: OK
[    38.748517101719] mmcblk1mmc0: SDHCI mmc1:0001controller SD16Gon 14ff160000.5mmc GiB
[    3.754630[ff160000.mmc] using mmcblk1: p1 p2ADMA 64-bit
[    38.778502102389] mmc0cfg80211: newLoading HS200 MMC card at address 0001compiled-in X.509 certificates for regulatory database
[    38.783792151749] mmcblk0mmc0: mmc0:0001 IS064G 58.3 GiB Problem switching card into high-speed mode!
[    38.788506158162] mmcblk0boot0mmc0: mmc0:0001new IS064GSDHC partitioncard 1at 4.00address MiB0001
[    38.794617163446] mmcblk0boot1mmcblk0: mmc0:0001 IS064G partition 2 4.00 MiBSD16G 14.5 GiB
[    38.800637170183] mmcblk0rpmb: mmc0mmcblk0:0001 IS064G partition 3 4.00 MiB, chardev (245:0)p1 p2
[    38.815562252044] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    38.822099258586] clk: Not disabling unused clocks
[    38.826560263063] ALSA device list:
[    38.829526266024]   No#0: soundcardsDisplayPort found.monitor
[    38.833204270427] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    38.841812279049] cfg80211: failed to load regulatory.db
[    38.873260309864] EXT4-fs (mmcblk1p2mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    38.881371318016] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    38.888644325279] devtmpfs: mounted
[    38.892238329753] Freeing unused kernel memory: 2048K2112K
[    38.896835334412] Run /sbin/init as init process
INIT: version 2.97 booting
[    4.206280] random: fast init done
Starting udev
[    59.074108630369] udevd[243249]: starting version 3.2.9
[    59.120318680092] random: udevd: uninitialized urandom read (16 bytes read)
[    59.127894687787] random: udevd: uninitialized urandom read (16 bytes read)
[    59.134360694269] random: udevd: uninitialized urandom read (16 bytes read)
[    5.229173] udevd[244]: starting eudev-3.2.9 9.798341] udevd[250]: starting eudev-3.2.9
[   10.069081] zocl: loading out-of-tree module taints kernel.
[    510.452520069085] zocl: loading out-of-tree boardmodule taints kernel.
[    510.460748076326] [drm] Probing for xlnx,zocl
[    510.464758084492] zocl-drm a0000000.zyxclmm_drm: IRQ index 32 not found
[    510.470941090811] [drm] FPGA programming device pcap founded.
[    510.476161096028] [drm] PR Isolation addr 0x0
[    510.476835142446] [drm] Initialized zocl 0.0.0 00000 for a0000000.zyxclmm_drm on minor 01
[    510.488353155450] [drm] Probing for xlnx,zocl
[    510.492513159697] zocl-drm amba_pl@0:zyxclmm_drm: IRQ index 32 not found
[    5.498778] [drm] FPGA programming device pcap founded.
[    5.503994] [drm] PR Isolation addr 0x0
[    5.504286] [drm] Initialized zocl 0.0.0 00000 for amba_pl@0:zyxclmm_drm on minor 1
[    6.817603] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
INIT: Entering runlevel: 5
Configuring network interfaces... udhcpc: started, v1.32.0
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending select for 192.168.13.45
udhcpc: lease of 192.168.13.45 obtained, lease time 3600
/etc/udhcpc.d/50default: Adding DNS 147.231.12.1
/etc/udhcpc.d/50default: Adding DNS 147.231.10.9
/etc/udhcpc.d/50default: Adding DNS 8.8.8.8
done.
Starting system message bus: dbus.
Starting random number generator daemon.
Starting haveged: haveged: command socket is listening at fd 3
haveged: haveged starting up


haveged: haveged: ver: 1.9.13; arch: generic; vend: ; build: (gcc 10.2.0 CTV); collect: 128K

haveged: haveged: cpu: (VC); data: 16K (D); inst: 16K (D); idx: 11/40; sz: 15456/64452

haveged: haveged: tot tests(BA8): A:1/1 B:1/1 continuous tests(B):  last entropy estimate 7.99981

haveged: haveged: fills: 0, generated: 0drm: IRQ index 32 not found
[   10.166173] [drm] FPGA programming device pcap founded.
[   10.171397] [drm] PR Isolation addr 0x0
[   10.171963] [drm] Initialized zocl 0.0.0 00000 for amba_pl@0:zyxclmm_drm on minor 2
[   10.628735] random: crng init done
[   10.632179] random: 6 urandom warning(s) missed due to ratelimiting
[   11.290638] EXT4-fs (nvme0n1): mounted filesystem with ordered data mode. Opts: (null)
[   11.936919] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
INIT: Entering runlevel: 5
Configuring network interfaces... udhcpc: started, v1.32.0
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: no lease, forking to background
done.
Starting system message bus: dbus.
Starting random number generator daemon.
Starting haveged: haveged: command socket is listening at fd 3
haveged: haveged starting up


Starting OpenBSD Secure Shell server: sshd
done.
Starting Xserver
Starting rpcbind daemon...
done.

starting statd: done
starting Busybox HTTP Daemon: httpd... done.

X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
Build Operating System: Linux
Current Operating System: Linux petalinux 5.10.0-xilinx-v2021.2 #1 SMP Tue Oct 12 09:30:57 UTC 2021 aarch64
Kernel command line: earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk1p2mmcblk0p2 rw rootwait cma=512M128M
Build Date: 25 August 2020  03:40:19PM

Current version of pixman: 0.40.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Mar  9 12:3639:4649 2018
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.
Starting internet superserver: inetd.
NFS daemon support not enabled in kernel
Init Start
Run init.sh from SD card
Load SD Init Script
User bash Code can be insered here and put init.sh on SD
Init End
Starting syslogd/klogd: done
Starting internet superserver: xinetd.
Starting watchdog daemon...done
Starting tcf-agent: OK

PetaLinux 2021.2 petalinux ttyPS0


root@petalinux:~# xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Starting internet superserver: inetd.
NFS daemon support not enabled in kernel
Init Start
Run init.sh from SD card
Load SD Init Script
User bash Code can be insered here and put init.sh on SD
Init End
Starting syslogd/klogd: done
Starting internet superserver: xinetd.
Starting watchdog daemon...done
Starting tcf-agent: OK

PetaLinux 2021.2 petalinux ttyPS0


root@petalinux:~# D-BUS per-session daemon address is: unix:abstract=/tmp/dbus-zgwLfOMcmf,guid=8dc6e6347be58a09dbc08b005aa280a1
matchbox: Cant find a keycode for keysym 269025056
matchbox: ignoring key shortcut XF86Calendar=!$contacts

matchbox: Cant find a keycode for keysym 2809
matchbox: ignoring key shortcut telephone=!$dates

matchbox: Cant find a keycode for keysym 269025050
matchbox: ignoring key shortcut XF86Start=!matchbox-remote -desktop

[settings daemon] Forking. run with -n to prevent fork
dbus-daemon[790]: Activating service name='org.a11y.atspi.Registry' requested by ':1.1' (uid=0 pid=786 comm="matchbox-panel --start-applets showdesktop,windows")
dbus-daemon[790]: Successfully activated service 'org.a11y.atspi.Registry'
SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry

** (matchbox-desktop:785): WARNING **: 12:40:06.037: Error loading icon: Icon 'terminal' not present in theme Sato

root@petalinux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 80:1F:12:F2D0:B87D:FF0A
          inet addr:19210.1680.130.4573  Bcast:19210.1680.130.255  Mask:255.255.255.0
          inet6 addr: fe80::821f:12ff:fef2fed0:b8ff7d0a/64 Scope:Link
          inet6 addr: 2a00:1028:919e:d77e:821f:12ff:fed0:7d0a/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:764 errors:0 dropped:0 overruns:0 frame:0
          TX packets:179 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8457916 (8916.20 KiBB)  TX bytes:25561322 (1.2.4 KiB)
          Interrupt:37

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:62 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:380 (380.0 B)  TX bytes:380 (380.0 B)

root@petalinux:~# cd /media/sd-mmcblk1p1/
root@petalinux:/media/sd-mmcblk1p1# ls
BOOT.BIN  Image  boot.scr  init.sh  krnl_vadd.xclbin  system.dtb  test_vadd
root@petalinux:       RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

root@petalinux:~# cd /media/sd-mmcblk1p1#mmcblk0p1
root@petalinux:/media/sd-mmcblk1p1#mmcblk0p1# ./test_vadd krnl_vadd.xclbin
INFO: Reading krnl_vadd.xclbin
Loading: 'krnl_vadd.xclbin'
Trying to program device[0]: edge
Device[0]: program successful!
TEST PASSED
root@petalinux:/media/sd-mmcblk1p1#
root@petalinux:/media/sd-mmcblk1p1#
root@petalinux:/media/sd-mmcblk1p1#
root@petalinux:/media/sd-mmcblk1p1#mmcblk0p1# halt

Broadcast message from rootemroot@petalinux is going down for system halt NOW!(ttyPS0) (Fri Mar  9 12:41:10 2018):

INIT: Sending processes configured via /etc/inittab the TERM signal
root@petalinux:/media/sd-mmcblk1p1#mmcblk0p1# Stopping haveged:

Stopping OpenBSD Secure Shell server: sshdstopped /usr/sbin/sshd (pid 666661)
.
stopping Busybox HTTP Daemon: httpd... stopped httpd (pid 694688)
done.
Stopping system message bus: dbus.
Stopping internet superserver: inetd.
stopping mountd: done
stopping nfsd: done
 Stop.
Stopping syslogd/klogd: stopped syslogd (pid 708705)
stopped klogd (pid 711708)
done
Stopping tcf-agent: OK
Stopping internet superserver: xinetd.
Stopping XServer
xinit: connection to X server lost

waiting for X server to shut down dbus-daemon[790]: Reloaded configuration
(II) Server terminated successfully (0). Closing log file.

xinit: unexpected signal 15
stopping statd: done
Stopping random number generator daemon.
Stopping rpcbind daemon...
done.
Stopping S.M.A.R.T. daemon: smartd.
Deconfiguring network interfaces... done.
Stopping watchdog daemon...Sending all processes the TERM signal...
logout
Sending all processes the KILL signal...
Unmounting remote filesystems...
Deactivating swap...
Unmounting local filesystems...
[   97112.450106860938] reboot: Power down

  1. Petalinux boot,
  2. ifconfig to find assigned Ethernet address,
  3. test_vadd example executed to test the kernel execution,
  4. halt to proper terminate OS.


Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Page properties
hiddentrue
idComments

decide free what's the best why to describe changes from standard reference design to get Vitis AI design.

→ Maybe add TCL code blox which automatically change the standard design?

In case you has any question, let me know.



Scroll pdf ignore


Custom_fix_page_content

Table of contents

Table of Contents
outlinetrue









App. A: Change History and Legal Notices

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

Document Change History

To get content of older revision go to "Change History" of this page and select older document revision number.

Page properties
hiddentrue
idComments
  • Note this list must be only updated, if the document is online on public doc!
  • It's semi automatically, so do following
    • Add new row below first

    • Copy "Page Information Macro (date)" Macro-Preview, Metadata Version number, Author Name and description to the empty row. Important Revision number must be the same as the Wiki document revision number Update Metadata = "Page Information Macro (current-version)" Preview+1 and add Author and change description. --> this point is will be deleted on newer pdf export template

    • Metadata is only used of compatibility of older exports


Scroll Title
anchorTable_dch
title-alignmentcenter
titleDocument change history.

Scroll Table Layout
orientationportrait
sortDirectionASC
repeatTableHeadersdefault
style
widths2*,*,3*,4*
sortByColumn1
sortEnabledfalse
cellHighlightingtrue

DateDocument Revision

Authors

Description

Page info
modified-date
modified-date
dateFormatyyyy-MM-dd

Page info
infoTypeCurrent version
dateFormatyyyy-MM-dd
prefixv.
typeFlat

Page info
infoTypeModified by
typeFlat

  • initial release
--all

Page info
infoTypeModified users
dateFormatyyyy-MM-dd
typeFlat

--