FC2カウンター FPGAの部屋 2023年01月
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

KR260 で Vitis アクセラレーション・プラットフォームを作成する9

KR260 で Vitis アクセラレーション・プラットフォームを作成する8”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということで、前回は、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行ったら失敗してしまった。原因は system.dtb が無いためだったので、KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot ディレクトリの system-zynqmp-sck-kr-g-revB.dtb の名前を system.dtb に変更して、kr260_custom をクリーンしてからビルドした。もう一度、kr260_vadd アプリケーション・プロジェクトをビルドしたところビルドに成功した。今回は、KR260 にファイルを転送して kr260_vadd を実行したところ成功した。

Accelerated Design Development on Kria KR260 in Vitis 2022.1”を参照にしている。

ファイルを KR260 に転送する
必要なファイルを集める。
KR260/kr260_custom_platform/kr260_custom_platform/vadd_file_transfer ディレクトリを作成する。
ファイルマネージャーを使用して、KR260/kr260_custom_platform/kr260_custom_platform ディレクトリで vadd_file_transfer ディレクトリを作成した。
KR260_142_230130.png

KR260/kr260_custom_platform/kr260_custom_platform/dtg_output/dtg_output/kr260_custom/psu_cortexa53_0/device_tree_domain/bsp/pl.dtbo を vadd_file_transfer ディレクトリにコピーした。
KR260_143_230130.png

KR260/kr260_custom_platform/kr260_custom_platform/kr260_vadd_system/Hardware/binary_container_1.xclbin を vadd_file_transfer ディレクトリにコピーした。
KR260_144_230130.png

KR260/kr260_custom_platform/kr260_custom_platform/kr260_vadd/Hardware/kr260_vadd を vadd_file_transfer ディレクトリにコピーした。
KR260_145_230130.png

shell.json を作成して、vadd_file_transfer ディレクトリにセーブした。
KR260_146_230130.png

Accelerated Design Development on Kria KR260 in Vitis 2022.1”から shell.json の内容を引用する。

{
  "shell_type" : "XRT_FLAT",
  "num_slots": "1"
}


現在の vadd_file_transfer ディレクトリの様子を示す。
KR260_147_230130.png

KR260 で”KR260 の Petalinux 2022.1 を設定する 1 (pcmafm をインストール)”の Petalinux 2022.1 を起動した。
ホーム・ディレクトリに examples/kr260_vadd ディレクトリを作成した。
cd
mkdir examples
cd examples
mkdir kr260_vadd


FileZilla を起動して、KR260 の Petalinux 2022.1 へ SFTP で vadd_file_transfer ディレクトリのファイルを転送した。
KR260_148_230130.png

/lib/firmware/xilinx/kr260_vadd ディレクトリを作成した。
sudo mkdir /lib/firmware/xilinx/kr260_vadd

binary_container_1.xclbin の名前を binary_container_1.bin に変更する。こうしないと、XRT は FPGA ビットストリームを抽出して Kria のプログラマブル ロジックをコンフィグレーションすることができないそうだ。
mv binary_container_1.xclbin binary_container_1.bin

pl.dtbo binary_container_1.bin shell.json ファイルを /lib/firmware/xilinx/kr260_vadd ディレクトリにコピーした。
sudo cp pl.dtbo binary_container_1.bin shell.json /lib/firmware/xilinx/kr260_vadd
KR260_149_230130.png

現在、ロードされているアクセラレーション・アプリケーションをアンロードして、kr260_vadd をロードする。
sudo xmutil listapps
sudo xmutil unloadapp
sudo xmutil loadapp kr260_vadd

KR260_150_230130.png

kr260_vadd を実行したところ、”TEST PASSED”が表示されて、成功した。
./kr260_vadd binary_container_1.bin
KR260_151_230130.png
  1. 2023年01月31日 05:07 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する8

KR260 で Vitis アクセラレーション・プラットフォームを作成する7”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということで、前回は、Vitis 2022.1 を立ち上げて kr260_custom プラットフォームを作成した。今回は、kr260_vadd アプリケーション・プロジェクトを作成し、ビルドを行ったら失敗してしまった。原因は system.dtb が無いためだったので、KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot ディレクトリの system-zynqmp-sck-kr-g-revB.dtb の名前を system.dtb に変更して、kr260_custom をクリーンしてからビルドした。もう一度、kr260_vadd アプリケーション・プロジェクトをビルドしたところビルドに成功した。

Accelerated Design Development on Kria KR260 in Vitis 2022.1”を参照にしている。

Vitis 2022.1 でアプリケーション・プロジェクトを作成する。
Vitis 2022.1 で File メニューから New -> Application Project... を選択してアプリケーション・プロジェクトを新規作成する。
New Application Project ダイアログの Create a New Application Project 画面が開く。
Next > ボタンをクリックする。
KR260_131_230129.png

Platform 画面
kr260_custom プラットフォームを選択する。
Next > ボタンをクリックする。
KR260_132_230129.png

Application Project Details 画面
Application project name: に kr260_vadd と入力する。
Next > ボタンをクリックする。
KR260_133_230129.png

Domain 画面
Application settings を入力する。
Sysroot paht: に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform/sysroots/cortexa72-cortexa53-xilinx-linux を入力する。
Root FS: に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux/rootfs.ext4 を入力する。
Kernel Image: に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux/Image を入力する。
Next > ボタンをクリックする。
KR260_134_230129.png

Template 画面
Simple Vector Addition を選択する。
Finish ボタンをクリックする。
KR260_135_230129.png

Explorer で kr260_vadd_system を選択し、Active build configuration: で Hardware を選択して、トンカチ・ボタンをクリックしてビルドを行った。
KR260_136_230129.png

ビルドに失敗した。
KR260_137_230129.png

エラー内容を示す。

ERROR: [v++ 82-3507] File /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform/kr260_custom/export/kr260_custom/sw/system.dtb does not exist
ERROR: [v++ 82-1002] cannot create bif
ERROR: [v++ 60-702] Failed to finish packaging


KR260/kr260_custom_platform/kr260_custom_platform/kr260_custom/export/kr260_custom/sw/system.dtb が無いというエラーだった。
そういえば、(現在は修正されているが) KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot ディレクトリでは、system.dtb じゃなくて、system-zynqmp-sck-kr-g-revB.dtb のままにしたのだった。
KR260_138_230129.png

system-zynqmp-sck-kr-g-revB.dtb を system.dtb に名前を変更した。
KR260_140_230129.png

Vitis で Explorer の kr260_custom を右クリックし、右クリックメニューから Clean Project を選択して、プロジェクトをクリーンした。
Vitis で Explorer の kr260_custom を右クリックし、右クリックメニューから Build Project を選択して、プロジェクトをビルドした。
kr260_custom/export/kr260_custom/sw/system.dtb ができたので、これで良いだろう?
KR260_139_230129.png

Vitis で Explorer の kr260_vadd を右クリックし、右クリックメニューから Clean Project を選択して、プロジェクトをクリーンした。
Vitis で Explorer の kr260_vadd を右クリックし、右クリックメニューから Build Project を選択して、プロジェクトをビルドしたところビルドに成功した。
KR260_141_230129.png
  1. 2023年01月30日 05:20 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する7

KR260 で Vitis アクセラレーション・プラットフォームを作成する6”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということで、前回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成した。今回は、Vitis 2022.1 を立ち上げて kr260_custom プラットフォームを作成した。

Accelerated Design Development on Kria KR260 in Vitis 2022.1”を参考にしている。

すでに source /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2022.1/settings64.sh は実行済みだ。

vitis &
で Vitis 2022.1 を起動した。

Vitis IDE Launcher ダイアログが表示された。
Workspace に KR260/kr260_custom_platform/kr260_custom_platform を指定した。
Launch ボタンをクリックした。
KR260_123_230128.png

Vitis 2022.1 が立ち上がった。
Create Platform Project をクリックして、プラットフォーム・プロジェクトを作成する。
KR260_124_230128.png

New Platform Project ダイアログの Create new platform project 画面が開く。
Platform project name に kr260_custom と入力した。
Next > ボタンをクリックする。
KR260_125_230128.png

Platform 画面
Hardware Specification の XSA File に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom/kr260_custom.xsa を指定した。
Software Specification の Operating system には linux を、Processor には psu_cortexa53 を指定した。
Finish ボタンをクリックする。
KR260_126_230128.png

kr260_custom プラットフォーム・プロジェクトが作成された。
platform.spr で、kr260_custom -> psu_cortexa53 -> linux on psu_cortexa53 をクリックして選択する。
Bif File: の Browse... の右端の下向き三角をクリックし、Generate Bif を選択する。
KR260_127_230128.png

Boot Components Directory: に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform/pfm/boot を指定した。
FAT32 Partition Directory: に /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform/pfm/sd_dir を指定した。
KR260_128_230128.png

トンカチ・ボタンをクリックして、ビルドを行った。
Explorer の export -> kr260_custom プラットフォームが生成された
その下に hw と sw ディレクトリが生成されている。
KR260_129_230128.png

KR260_130_230128.png
  1. 2023年01月29日 04:42 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する6

KR260 で Vitis アクセラレーション・プラットフォームを作成する5”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみようということで、前回は、sdk.sh を作成し、BOOT.BIN を作成した。最後に SD カードのイメージを作成し、SD カードに書き込んだ。今回は、Vitis ディレクトリ構造を作成して、xsct を使用したデバイスツリー・オーバレイを作成した。

今回は、”Accelerated Design Development on Kria KR260 in Vitis 2022.1”を参考にした。

KR260/kr260_custorm_platform ディレクトリで kr260_custom_platform ディレクトリを作成した。
KR260/kr260_custorm_platform/kr260_custorm_platform ディレクトリの下に pfm ディレクトリを作成した。
KR260/kr260_custorm_platform/kr260_custorm_platform/pfm ディレクトリの下に boot, sd_dir ディレクトリを作成した。
mkdir -p kr260_custorm_platform
cd kr260_custorm_platform
mkdir -p pfm
cd pfm
mkdir -p boot
mkdir -p sd_dir

KR260_113_230127.png

KR260/kr260_custorm_platform/linux_os/images/linux ディレクトリの bl31.elf, pmufw.elf, system-zynqmp-sck-kr-g-revB.dtb, u-boot.elf, zynqmp_fsbl.elf のファイルを
KR260_114_230127.png

KR260/kr260_custorm_platform/kr260_custorm_platform/pfm/boot ディレクトリにコピーした。
KR260_115_230127.png

(2023/01/29:修正)
system-zynqmp-sck-kr-g-revB.dtb は system.dtb に名前を変更する必要がある。(”KR260 で Vitis アクセラレーション・プラットフォームを作成する8”参照)
KR260_140_230129.png

KR260/kr260_custorm_platform/linux_os/images/linux ディレクトリで sysroots ディレクトリを KR260/kr260_custorm_platform/kr260_custorm_platform ディレクトリに展開した。
./sdk.sh -d ../../../kr260_custom_platform/
KR260_116_230127.png

KR260/kr260_custorm_platform/kr260_custorm_platform/sysroots ディレクトリが生成され、その下に cortexa72-cortexa53-xilinx-linux, x86_64-petalinux-linux ディレクトリが生成された。
KR260_117_230127.png

xsct コマンドを使用してデバイスツリー・オーバレイの pl.dtsi と pl.dtbo を作成する

KR260/kr260_custorm_platform/kr260_custorm_platform ディレクトリで xsct コマンドを実行した。
xsct
hsi::open_hw_design ../kr260_custom/kr260_custom.xsa
createdts -hw ../kr260_custom/kr260_custom.xsa -zocl -platform-name kr260_custom -git-branch xlnx_rel_v2022.1 -overlay -compile -out ./dtg_output
exit

KR260_118_230127.png
KR260_119_230127.png

KR260/kr260_custom_platform/kr260_custom_platform/dtg_output/dtg_output/kr260_custom/psu_cortexa53_0/device_tree_domain/bsp ディレクトリに pl.dtsi が生成された。
KR260_120_230127.png

pl.dtsi をコンパイルして pl.dtbo を生成した。
cd dtg_output/dtg_output/kr260_custom/psu_cortexa53_0/device_tree_domain/bsp
dtc -@ -O dtb -o pl.dtbo pl.dtsi

KR260_121_230127.png

pl.dtbo が生成された。
KR260_122_230127.png

xsct コマンドのログを貼っておく。

(base) masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform$ xsct
rlwrap: warning: your $TERM is 'xterm-256color' but rlwrap couldn't find it in the terminfo database. Expect some problems.
                                                                                
****** Xilinx Software Commandline Tool (XSCT) v2022.1.0
  **** SW Build 3524075 on 2022-04-13-17:42:45
    ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.


xsct% hsi::open_hw_design ../kr260_custom/kr260_custom.xsa                      
INFO: [Hsi 55-2053] elapsed time for repository (/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2022.1/data/embeddedsw) loading 12 seconds
hsi::open_hw_design: Time (s): cpu = 00:00:09 ; elapsed = 00:00:22 . Memory (MB): peak = 2412.008 ; gain = 0.000 ; free physical = 7436 ; free virtual = 41939
kr260_bd_wrapper
xsct% createdts -hw ../kr260_custom/kr260_custom.xsa -zocl -platform-name kr260_custom -git-branch xlnx_rel_v2022.1 -overlay -compile -out ./dtg_output
INFO: Downloading DTG repo from https://github.com/Xilinx/device-tree-xlnx.git to /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/kr260_custom_platform/dtg_output
Cloning into 'device-tree-xlnx'...                                              
remote: Enumerating objects: 12009, done.
remote: Counting objects: 100% (3377/3377), done.
remote: Compressing objects: 100% (748/748), done.
remote: Total 12009 (delta 2141), reused 3351 (delta 2118), pack-reused 8632
Receiving objects: 100% (12009/12009), 2.25 MiB | 2.20 MiB/s, done.
Resolving deltas: 100% (6478/6478), done.                                       
hsi::open_hw_design: Time (s): cpu = 00:00:08 ; elapsed = 00:00:08 . Memory (MB): peak = 2412.008 ; gain = 0.000 ; free physical = 7315 ; free virtual = 41831
INFO: Creating platform kr260_custom at ./dtg_output                            
Opening the hardware design, this may take few seconds.
INFO: Populating the default qemu data for the domain "device_tree_domain" from the install location /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2022.1/data/emulation/platforms/zynqmp/sw/a53_standalone/qemu/
zocl:false                                                                      
ext_platform:
WARNING: label 'usb0' found in existing tree                                    
WARNING: label 'usb1' found in existing tree
INFO: Generating device tree                                                    
zocl:true                                                                       
ext_platform:
intr_ctrl_len:1
WARNING: label 'usb0' found in existing tree                                    
WARNING: label 'usb1' found in existing tree                                    
Building the BSP Library for domain  - device_tree_domain on processor psu_cortexa53_0
make: Nothing to be done for 'all'.

system-top.dts:24.9-27.4: Warning (unit_address_vs_reg): /memory: node has a reg or ranges property, but no unit name
zynqmp.dtsi:811.43-815.6: Warning (pci_device_reg): /axi/pcie@fd0e0000/legacy-interrupt-controller: missing PCI reg property
xsct% exit                                                                      
                                                                                

  1. 2023年01月28日 04:31 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 の Petalinux 2022.1 を設定する 3 (l3afpad と gtk-play をインストール)

KR260 の Petalinux 2022.1 を設定する 2 (OpenCV の動作を確認)”の続き。

前回は、、packagegroup-petalinux-opencv-dbg をインストールして、OpenCV の Python のサンプル・アプリケーションを 2 つ動作せることができた。そのために、SFTP ができる様に openssh-sftp-server.cortexa72_cortexa53 をインストールした。今回は、l3afpad と gtk-play をインストールした。

最初にエディタの l3afpad をインストールする。
sudo dnf install l3afpad.cortexa72_cortexa53
KR260_108_230126.png

pcmanfm を起動して /home/petalinux/data/alphabet_3-6.txt をダブルクリックすると、l3afpad が起動して、ファイルが表示された。
KR260_109_230126.png

次に gtk-play をインストールする。

gst-examples.cortexa72_cortexa53 をインストールした。
sudo dnf install gst-examples.cortexa72_cortexa53
KR260_110_230126.png

pcmanfm から gtk-play を起動できるようにした。
aloeL.jpg ファイルをダブルクリックで開くと、Choose Application ダイアログが開く。
Custom Command Line タブをクリックして、Command line to execute: に gtk-play %f と入力し、”Set selected application as default action for this file type”のチェックボックスにチェックを入れた。
KR260_111_230126.png

aloeL.jpg を開くことができた。
KR260_112_230126.jpg
  1. 2023年01月27日 04:32 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 の Petalinux 2022.1 を設定する 2 (OpenCV の動作を確認)

KR260 の Petalinux 2022.1 を設定する 1 (pcmafm をインストール)”の続き。

前回は、”KR260 で Vitis アクセラレーション・プラットフォームを作成する5”で Petalinux 2022.1 の MicroSD カードを作ったので、KR260 に挿入して電源を ON したところ、Petalinux 2022.1 が起動した。ファイルマネージャーとして、pcmanfm をインストールした。今回は、packagegroup-petalinux-opencv-dbg をインストールして、OpenCV の Python のサンプル・アプリケーションを 2 つ動作せることができた。そのために、SFTP ができる様に openssh-sftp-server.cortexa72_cortexa53 をインストールした。

OpenCV のパッケージ・グループと opecv-dev のパッケージ・グループは予めインストールしてあるので、Petalinux 2022.1 に /usr/include/opencv4/opencv2/opencv.hpp があるのが確認できた。
KR260_96_230125.png

OpenCV 関連のパッケージ・グループを全てインストールしようと思う。
これは、/usr/share/opencv4/samples/data ディレクトリが無いので、Python のサンプル・アプリケーションを実行できない問題があったからだ。
KR260_97_230125.png

しかし、OpenCV の全てのパッケージ・グループをインストールしても /usr/share/opencv4/samples/data ディレクトリはインストールされなかった。(”Xilinx の Petalinux 2022.1 イメージの KV260 に dnf でインストールした OpenCV 4.5.2 の Python samples をやってみる”参照)
packagegroup-petalinux-opencv-dbg をインストールする。
sudo dnf install packagegroup-petalinux-opencv-dbg
KR260_98_230125.png

KR260_99_230125.png

インストールされたパッケージを示す。

================================================================================
 Package               Architecture        Version                      Repo
                                                                           Size
================================================================================
Installing:
 packagegroup-petalinux-opencv-dbg
                       noarch              1.0-r0.0                     oe-remote-repo-sswreleases-rel-v2022-generic-rpm-noarch
                                                                          6.0 k
Installing weak dependencies:
 gflags-dbg            cortexa72_cortexa53 2.2.2-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          742 k
 gstreamer1.0-dbg      cortexa72_cortexa53 1.18.5+git0+e483cd3a08-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          4.0 M
 gtk+3-dbg             zynqmp_ev           3.24.30-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-zynqmp_ev
                                                                          7.8 M
 libatk-1.0-dbg        cortexa72_cortexa53 2.36.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          135 k
 libatk-bridge-2.0-dbg cortexa72_cortexa53 2.38.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          172 k
 libatspi-dbg          cortexa72_cortexa53 2.40.3-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          287 k
 libc6-dbg             cortexa72_cortexa53 2.34-r0.0                    oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          4.7 M
 libcairo-dbg          zynqmp_ev           1.16.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-zynqmp_ev
                                                                          1.8 M
 libcap-dbg            cortexa72_cortexa53 2.51-r0.0                    oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           87 k
 libcrypt-dbg          cortexa72_cortexa53 4.4.25-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          136 k
 libdrm-dbg            cortexa72_cortexa53 2.4.109-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          522 k
 libepoxy-dbg          zynqmp_ev           1.5.9-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-zynqmp_ev
                                                                          655 k
 libexif-dbg           cortexa72_cortexa53 0.6.22-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          112 k
 libexpat-dbg          cortexa72_cortexa53 2.4.3-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          475 k
 libffi-dbg            cortexa72_cortexa53 3.4.2-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           53 k
 libfontconfig-dbg     cortexa72_cortexa53 2.13.1-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          342 k
 libfreetype-dbg       cortexa72_cortexa53 2.11.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          876 k
 libfribidi-dbg        cortexa72_cortexa53 1.0.10-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           51 k
 libgcc-s-dbg          cortexa72_cortexa53 11.2.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          112 k
 libgdk-pixbuf-2.0-dbg cortexa72_cortexa53 2.42.6-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          463 k
 libglib-2.0-dbg       cortexa72_cortexa53 1:2.68.4-r0.0                oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          6.6 M
 libglog-dbg           cortexa72_cortexa53 0.4.0-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          291 k
 libgphoto2-dbg        cortexa72_cortexa53 2.5.27-r0.1                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          1.2 M
 libharfbuzz-dbg       cortexa72_cortexa53 2.9.0-r0.1                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          8.1 M
 libjpeg-dbg           cortexa72_cortexa53 1:2.1.1-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          659 k
 libmali-dbg           zynqmp_ev           r9p0+01rel0-r0.0             oe-remote-repo-sswreleases-rel-v2022-generic-rpm-zynqmp_ev
                                                                          6.0 k
 libpciaccess-dbg      cortexa72_cortexa53 0.16-r0.0                    oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           45 k
 libpcre-dbg           cortexa72_cortexa53 8.45-r0.0                    oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          603 k
 libpixman-1-dbg       cortexa72_cortexa53 1:0.40.0-r0.0                oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          575 k
 libpng16-dbg          cortexa72_cortexa53 1.6.37-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          258 k
 libprotobuf-dbg       cortexa72_cortexa53 3.18.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           20 M
 libtiff-dbg           cortexa72_cortexa53 4.3.0-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          729 k
 libunwind-dbg         cortexa72_cortexa53 1.5.0-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          225 k
 libusb-1.0-dbg        cortexa72_cortexa53 1.0.24-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          125 k
 libuuid-dbg           cortexa72_cortexa53 2.37.2-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           29 k
 libwebp-dbg           cortexa72_cortexa53 1.2.1-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          849 k
 libx11-dbg            cortexa72_cortexa53 1:1.7.2-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          1.2 M
 libxau-dbg            cortexa72_cortexa53 1:1.0.9-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           18 k
 libxcb-dbg            cortexa72_cortexa53 1.14-r0.0                    oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          555 k
 libxcomposite-dbg     cortexa72_cortexa53 1:0.4.5-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           23 k
 libxcursor-dbg        cortexa72_cortexa53 1:1.2.0-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           62 k
 libxdamage-dbg        cortexa72_cortexa53 1:1.1.5-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           24 k
 libxdmcp-dbg          cortexa72_cortexa53 1:1.1.3-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           21 k
 libxext-dbg           cortexa72_cortexa53 1:1.3.4-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          123 k
 libxfixes-dbg         cortexa72_cortexa53 1:6.0.0-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           42 k
 libxft-dbg            cortexa72_cortexa53 1:2.3.4-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          142 k
 libxi-dbg             cortexa72_cortexa53 1:1.7.99.2-r0.0              oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          166 k
 libxkbcommon-dbg      cortexa72_cortexa53 1.3.0-r0.0                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          311 k
 libxml2-dbg           cortexa72_cortexa53 2.9.12-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          2.2 M
 libxrandr-dbg         cortexa72_cortexa53 1:1.5.2-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           68 k
 libxrender-dbg        cortexa72_cortexa53 1:0.9.10-r0.0                oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           80 k
 libxtst-dbg           cortexa72_cortexa53 1:1.2.3-r0.0                 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           40 k
 libz-dbg              cortexa72_cortexa53 1.2.11-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           85 k
 opencv-dbg            cortexa72_cortexa53 4.5.2-r0.4                   oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          130 M
 pango-dbg             cortexa72_cortexa53 1.48.9-r0.1                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          713 k
 tbb-dbg               cortexa72_cortexa53 1:2021.2.0-r0.0              oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          1.1 M
 wayland-dbg           cortexa72_cortexa53 1.19.0-r0.0                  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          393 k
 xorgproto-dbg         cortexa72_cortexa53 2021.4.99.2-r0.0             oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          6.0 k

Transaction Summary
================================================================================
Install  59 Packages



packagegroup-petalinux-opencv-dbg をインストールしても /usr/share/opencv4/samples/data ディレクトリが無いので、https://github.com/opencv/opencv.git からコピーする。
git clone https://github.com/opencv/opencv.git
KR260_100_230125.png

opencv/samples/data ディレクトリを KR260 の Petalinux 2022.1 に SFTP でアップロードしようとしたが失敗した。
そこで、openssh-sftp-server.cortexa72_cortexa53 をインストールした。
sudo dnf install openssh-sftp-server.cortexa72_cortexa53
KR260_101_230125.png

これで、KR260 の Petalinux 2022.1 に SFTP でアップロードが可能になったので、FileZilla で opencv/samples/data ディレクトリを /home/petalinux ディレクトリにアップロードした。
KR260_102_230125.png

~/data ディレクトリを /usr/share/opencv4/samples ディレクトリにコピーした。
sudo cp -rf data /usr/share/opencv4/samples/
KR260_103_230125.png

/usr/share/opencv4/samples/data ディレクトリを示す。
KR260_104_230125.png

/usr/share/opencv4/samples/python ディレクトリに移動して、asift.py サンプル・アプリケーションを実行した。
cd /usr/share/opencv4/samples/python
python3 asift.py

KR260_105_230125.png

ウインドウが表示された。
KR260_106_230125.jpg

edge.py サンプル・アプリケーションを実行した。
KR260_107_230125.png

レナ像上をチェッカーボードが動く同画像をリアルタイムでエッジを検出している。
KR260_108_230125.jpg

2 つのサンプル・アプリケーションが共に動作したので、OpenCV の動作に問題はないようだ。
  1. 2023年01月26日 03:48 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 の Petalinux 2022.1 を設定する 1 (pcmafm をインストール)

KR260 で Vitis アクセラレーション・プラットフォームを作成する5”で Petalinux 2022.1 の MicroSD カードを作ったので、KR260 に挿入して電源を ON したところ、Petalinux 2022.1 が起動した。ファイルマネージャーとして、pcmanfm をインストールした。

KR260 で Vitis アクセラレーション・プラットフォームを作成する5”で作成した Petalinux 2022.1 の MicroSD カードを KV260 に挿入して電源 ON したところ、Petalinux 2022.1 が起動した。

どの ttyUSB ポートに接続するべきか迷ったが /dev/ttyUSB0 で良いようだ。

ifconfig すると 192.168.3.28 の IP が割り当てられているのが分かった。
KR260_89_230124.png

sudo reboot で起動メッセージを見てみよう。
KR260_90_230124.png

KR260_91_230124.png

起動メッセージは記事の最後に貼っておく。
期待していたファンの音に変化はなかった。期待はずれ?

さて、X11 はインストールしておいたので、ファイルマネージャーの pcmanfm をインストールする。
sudo dnf install pcmanfm.cortexa72_cortexa53
インストールされたモジュールを示す。

================================================================================
 Package            Architecture        Version     Repository             Size
================================================================================
Installing:
 pcmanfm            cortexa72_cortexa53 1.3.2-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          103 k
Installing dependencies:
 libfm-extra4       cortexa72_cortexa53 1.3.2-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           16 k
 libfm-gtk          cortexa72_cortexa53 1.3.2-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          166 k
 libfm4             cortexa72_cortexa53 1.3.2-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                          110 k
 libmenu-cache3     cortexa72_cortexa53 1.1.0-r0.0  oe-remote-repo-sswreleases-rel-v2022-generic-rpm-cortexa72_cortexa53
                                                                           41 k
Installing weak dependencies:
 adwaita-icon-theme noarch              3.34.3-r0.0 oe-remote-repo-sswreleases-rel-v2022-generic-rpm-noarch
                                                                          2.3 M

Transaction Summary
================================================================================
Install  6 Packages


pcmanfm を起動する。
pcmanfm &
pcmanfm のウインドウが表示された。成功だ。
KR260_94_230124.png

KR260 用 Petalinux 2022.1 の起動メッセージを貼っておく。

xilinx-kr260-starterkit-20221:~$ sudo reboot

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password: 
         Stopping Session c1 of User petalinux...
[  OK  ] Removed slice Slice /system/modprobe.
[  OK  ] Stopped target Graphical Interface.
[  OK  ] Stopped target Multi-User System.
[  OK  ] Stopped target Login Prompts.
[  OK  ] Stopped target RPC Port Mapper.
[  OK  ] Stopped target Sound Card.
[  OK  ] Stopped target Timer Units.
[  OK  ] Stopped Daily rotation of log files.
[  OK  ] Stopped Daily Cleanup of Temporary Directories.
[  OK  ] Stopped target System Time Set.
[  OK  ] Closed Load/Save RF Kill Switch Status /dev/rfkill Watch.
         Stopping Job spooling tools...
         Stopping Periodic Command Scheduler...
         Stopping dfx-mgrd Dynamic Function eXchange...
         Stopping DNS forwarder and DHCP server...
         Stopping Getty on tty1...
         Stopping inetd.busybox.service...
         Stopping NFS status monitor for NFSv2/3 locking....
         Stopping Respond to IPv6 Node Information Queries...
         Stopping Network Time Service...
         Stopping Network Router Discovery Daemon...
         Stopping Serial Getty on ttyPS1...
         Stopping som-dashboard-init...
[  198.171844] som-dashboard.sh[1267]: Received signal 15, shutting down
         Stopping System Logging Service...
         Stopping Load/Save Random Seed...
         Stopping Target Communication Framework agent...
[  OK  ] Stopped Job spooling tools.
[  OK  ] Stopped Periodic Command Scheduler.
[  OK  ] Stopped dfx-mgrd Dynamic Function eXchange.
[  OK  ] Stopped System Logging Service.
[  OK  ] Stopped NFS status monitor for NFSv2/3 locking..
[  OK  ] Stopped Respond to IPv6 Node Information Queries.
[  OK  ] Stopped Network Router Discovery Daemon.
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Serial Getty on ttyPS1.
[  OK  ] Stopped Target Communication Framework agent.
[  OK  ] Stopped Network Time Service.
[  OK  ] Stopped DNS forwarder and DHCP server.
[  OK  ] Stopped inetd.busybox.service.
[  OK  ] Stopped Load/Save Random Seed.
[  OK  ] Stopped som-dashboard-init.
[  OK  ] Stopped Session c1 of User petalinux.
[  OK  ] Removed slice Slice /system/getty.
[  OK  ] Removed slice Slice /system/serial-getty.
[  OK  ] Stopped target Network is Online.
[  OK  ] Stopped target Host and Network Name Lookups.
         Stopping User Login Management...
[  OK  ] Stopped Wait for Network to be Configured.
         Stopping User Manager for UID 1000...
[  OK  ] Stopped User Login Management.
[  OK  ] Stopped User Manager for UID 1000.
         Stopping User Runtime Directory /run/user/1000...
[  OK  ] Unmounted /run/user/1000.
[  OK  ] Stopped User Runtime Directory /run/user/1000.
[  OK  ] Removed slice User Slice of UID 1000.
         Stopping D-Bus System Message Bus...
         Stopping Permit User Sessions...
[  OK  ] Stopped D-Bus System Message Bus.
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped target Network.
[  OK  ] Stopped target Remote File Systems.
         Stopping Network Name Resolution...
[  OK  ] Stopped Network Name Resolution.
         Stopping Network Configuration...
[  OK  ] Stopped Network Configuration.
[  OK  ] Stopped target Preparation for Network.
[  OK  ] Stopped IPv6 Packet Filtering Framework.
[  OK  ] Stopped IPv4 Packet Filtering Framework.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Path Units.
[  OK  ] Stopped Dispatch Password …ts to Console Directory Watch.
[  OK  ] Stopped Forward Password R…uests to Wall Directory Watch.
[  OK  ] Stopped target Slice Units.
[  OK  ] Removed slice User and Session Slice.
[  OK  ] Stopped target Socket Units.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Closed dropbear.socket.
[  OK  ] Stopped target System Initialization.
[  OK  ] Closed Syslog Socket.
[  OK  ] Closed Network Service Netlink Socket.
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped Load Kernel Modules.
         Stopping Network Time Synchronization...
[  OK  ] Stopped Update is Completed.
[  OK  ] Stopped Rebuild Journal Catalog.
         Stopping Record System Boot/Shutdown in UTMP...
[  OK  ] Stopped Network Time Synchronization.
[  OK  ] Stopped Record System Boot/Shutdown in UTMP.
[  OK  ] Stopped Create Volatile Files and Directories.
[  OK  ] Stopped target Local File Systems.
         Unmounting /boot...
         Unmounting /configfs...
         Unmounting /run/credentials/systemd-sysusers.service...
         Unmounting Temporary Directory /tmp...
         Unmounting /var/volatile...
[  OK  ] Unmounted /boot.
[  OK  ] Unmounted /configfs.
[  OK  ] Unmounted /run/credentials/systemd-sysusers.service.
[  OK  ] Unmounted Temporary Directory /tmp.
[  OK  ] Unmounted /var/volatile.
[  OK  ] Stopped target Preparation for Local File Systems.
[  OK  ] Stopped target Swaps.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped Create Static Device Nodes in /dev.
[  OK  ] Stopped Create System Users.
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target System Shutdown.
[  OK  ] Reached target Late Shutdown Services.
[  OK  ] Finished System Reboot.
[  OK  ] Reached target System Reboot.
[  200.310325] unregister bridge display which is owned by other component
[  200.316968] unregister bridge display which is owned by other component
[  200.350724] reboot: Restarting system
Xilinx Zynq MP First Stage Boot Loader 
Release 2022.1   Mar 22 2022  -  19:51:22
MultiBootOffset: 0x40
Reset Mode  :   System Reset
Platform: Silicon (4.0), Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
QSPI 32 bit Boot Mode 
FlashID=0x20 0xBB 0x20
�NOTICE:  BL31: v2.6(release):v1.1-9205-gec5dccc32
NOTICE:  BL31: Built : 06:15:49, Mar 22 2022


U-Boot 2022.01 (Mar 21 2022 - 14:42:10 +0000)

CPU:   ZynqMP
Silicon: v3
Detected name: zynqmp-smk-k26-xcl2g-rev1-sck-kr-g-rev1
Model: ZynqMP SMK-K26 Rev1/B/A
Board: Xilinx ZynqMP
DRAM:  4 GiB
PMUFW:  v1.1
Xilinx I2C FRU format at nvmem0:
 Manufacturer Name: XILINX
 Product Name: SMK-K26-XCL2G
 Serial No: XFL1CYY0C2I3
 Part Number: 5057-04
 File ID: 0x0
 Revision Number: 1
Xilinx I2C FRU format at nvmem1:
 Manufacturer Name: XILINX
 Product Name: SCK-KR-G
 Serial No: XFL1V0BJCWOF
 Part Number: 5100-01
 File ID: 0x0
 Revision Number: 1
EL Level:   EL2
Chip ID:    xck26
NAND:  0 MiB
MMC:   
Loading Environment from nowhere... OK
In:    serial
Out:   serial
Err:   serial
Bootmode: QSPI_MODE
Reset reason:   SOFT 
Net:   
ZYNQ GEM: ff0b0000, mdio bus ff0c0000, phyaddr 4, interface sgmii
eth0: ethernet@ff0b0000
ZYNQ GEM: ff0c0000, mdio bus ff0c0000, phyaddr 8, interface rgmii-id
PHY reset timed out
, eth1: ethernet@ff0c0000
starting USB...
Bus usb@fe200000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
Bus usb@fe300000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@fe200000 for devices... 5 USB Device(s) found
scanning bus usb@fe300000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot:  0 
model=SMK-K26-XCL2G

Device 0: Vendor: Generic  Rev: 1.98 Prod: Ultra HS-COMBO
            Type: Removable Hard Disk
            Capacity: 30474.0 MB = 29.7 GB (62410752 x 512)
... is now current device
Scanning usb 0:1...
Found U-Boot script /boot.scr
2777 bytes read in 9 ms (300.8 KiB/s)
## Executing script at 20000000
Trying to load boot images from usb0
22401536 bytes read in 1462 ms (14.6 MiB/s)
46929 bytes read in 14 ms (3.2 MiB/s)
23216717 bytes read in 1514 ms (14.6 MiB/s)
## Loading init Ramdisk from Legacy Image at 04000000 ...
   Image Name:   petalinux-initramfs-image-xilinx
   Created:      2011-04-05  23:00:00 UTC
   Image Type:   AArch64 Linux RAMDisk Image (uncompressed)
   Data Size:    23216653 Bytes = 22.1 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 00100000
   Booting using the fdt blob at 0x100000
   Loading Ramdisk to 779db000, end 78fff20d ... OK
   Loading Device Tree to 000000000fff1000, end 000000000ffff750 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.19-xilinx-v2022.1 (oe-user@oe-host) (aarch64-xilinx-linux-gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37.20210721) #1 SMP Thu May 12 09:05:30 UTC 2022
[    0.000000] Machine model: ZynqMP SMK-K26 Rev1/B/A
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000000000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003ecfffff]
[    0.000000]   node   0: [mem 0x000000003ed00000-0x000000003ee47fff]
[    0.000000]   node   0: [mem 0x000000003ee48000-0x000000007fefffff]
[    0.000000]   node   0: [mem 0x0000000800000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] cma: Reserved 900 MiB at 0x000000003f400000
[    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 18 pages/cpu s34776 r8192 d30760 u73728
[    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: 1031940
[    0.000000] Kernel command line: earlycon console=ttyPS1,115200 clk_ignore_unused xilinx_tsn_ep.st_pcp=4 init_fatal_sh=1 cma=900M 
[    0.000000] Unknown kernel command line parameters "init_fatal_sh=1", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x000000007bf00000-0x000000007ff00000] (64MB)
[    0.000000] Memory: 3078456K/4193280K available (14528K kernel code, 1012K rwdata, 4056K rodata, 2176K init, 571K bss, 193224K reserved, 921600K cma-reserved)
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] random: get_random_bytes called from start_kernel+0x474/0x6d4 with crng_init=0
[    0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171015c90f, max_idle_ns: 440795203080 ns
[    0.000000] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
[    0.008304] Console: colour dummy device 80x25
[    0.012396] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.99 BogoMIPS (lpj=399996)
[    0.022752] pid_max: default: 32768 minimum: 301
[    0.027505] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.034699] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.043437] rcu: Hierarchical SRCU implementation.
[    0.047499] EFI services will not be available.
[    0.051861] smp: Bringing up secondary CPUs ...
[    0.056570] Detected VIPT I-cache on CPU1
[    0.056609] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.056980] Detected VIPT I-cache on CPU2
[    0.057003] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.057338] Detected VIPT I-cache on CPU3
[    0.057359] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.057399] smp: Brought up 1 node, 4 CPUs
[    0.091692] SMP: Total of 4 processors activated.
[    0.096363] CPU features: detected: 32-bit EL0 Support
[    0.101468] CPU features: detected: CRC32 instructions
[    0.106604] CPU: All CPU(s) started at EL2
[    0.110648] alternatives: patching kernel code
[    0.116059] devtmpfs: initialized
[    0.124018] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.128120] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.160757] pinctrl core: initialized pinctrl subsystem
[    0.161230] DMI not present or invalid.
[    0.164391] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.170995] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.177125] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.184948] audit: initializing netlink subsys (disabled)
[    0.190353] audit: type=2000 audit(0.132:1): state=initialized audit_enabled=0 res=1
[    0.190699] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.204774] ASID allocator initialised with 65536 entries
[    0.210179] Serial: AMBA PL011 UART driver
[    0.232059] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.233119] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.239790] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.246447] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    1.215621] cryptd: max_cpu_qlen set to 1000
[    1.237920] DRBG: Continuing without Jitter RNG
[    1.337780] raid6: neonx8   gen()  2370 MB/s
[    1.405828] raid6: neonx8   xor()  1761 MB/s
[    1.473892] raid6: neonx4   gen()  2417 MB/s
[    1.541936] raid6: neonx4   xor()  1727 MB/s
[    1.610005] raid6: neonx2   gen()  2292 MB/s
[    1.678049] raid6: neonx2   xor()  1583 MB/s
[    1.746114] raid6: neonx1   gen()  1955 MB/s
[    1.814157] raid6: neonx1   xor()  1348 MB/s
[    1.882208] raid6: int64x8  gen()  1518 MB/s
[    1.950265] raid6: int64x8  xor()   859 MB/s
[    2.018328] raid6: int64x4  gen()  1775 MB/s
[    2.086386] raid6: int64x4  xor()   947 MB/s
[    2.154441] raid6: int64x2  gen()  1552 MB/s
[    2.222493] raid6: int64x2  xor()   832 MB/s
[    2.290573] raid6: int64x1  gen()  1148 MB/s
[    2.358620] raid6: int64x1  xor()   575 MB/s
[    2.358658] raid6: using algorithm neonx4 gen() 2417 MB/s
[    2.362616] raid6: .... xor() 1727 MB/s, rmw enabled
[    2.367547] raid6: using neon recovery algorithm
[    2.372592] iommu: Default domain type: Translated 
[    2.376981] iommu: DMA domain TLB invalidation policy: strict mode 
[    2.383403] SCSI subsystem initialized
[    2.387052] usbcore: registered new interface driver usbfs
[    2.392401] usbcore: registered new interface driver hub
[    2.397668] usbcore: registered new device driver usb
[    2.402716] mc: Linux media interface: v0.10
[    2.406921] videodev: Linux video capture interface: v2.00
[    2.412385] pps_core: LinuxPPS API ver. 1 registered
[    2.417286] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    2.426376] PTP clock support registered
[    2.430277] EDAC MC: Ver: 3.0.0
[    2.433643] zynqmp-ipi-mbox mailbox@ff990400: Registered ZynqMP IPI mbox with TX/RX channels.
[    2.442037] zynqmp-ipi-mbox mailbox@ff990600: Registered ZynqMP IPI mbox with TX/RX channels.
[    2.450438] FPGA manager framework
[    2.453790] Advanced Linux Sound Architecture Driver Initialized.
[    2.460049] Bluetooth: Core ver 2.22
[    2.463314] NET: Registered PF_BLUETOOTH protocol family
[    2.468582] Bluetooth: HCI device and connection manager initialized
[    2.474899] Bluetooth: HCI socket layer initialized
[    2.479742] Bluetooth: L2CAP socket layer initialized
[    2.484763] Bluetooth: SCO socket layer initialized
[    2.489924] clocksource: Switched to clocksource arch_sys_counter
[    2.495763] VFS: Disk quotas dquot_6.6.0
[    2.499580] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    2.510422] NET: Registered PF_INET protocol family
[    2.511340] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    2.520002] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    2.527097] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    2.535110] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    2.542547] TCP: Hash tables configured (established 32768 bind 32768)
[    2.548747] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    2.555408] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    2.562558] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    2.568350] RPC: Registered named UNIX socket transport module.
[    2.573950] RPC: Registered udp transport module.
[    2.578614] RPC: Registered tcp transport module.
[    2.583281] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    2.590237] PCI: CLS 0 bytes, default 64
[    2.593712] Trying to unpack rootfs image as initramfs...
[    2.599615] armv8-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
[    2.606992] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    3.592816] Freeing initrd memory: 22672K
[    3.623570] Initialise system trusted keyrings
[    3.623692] workingset: timestamp_bits=46 max_order=20 bucket_order=0
[    3.629414] NFS: Registering the id_resolver key type
[    3.633870] Key type id_resolver registered
[    3.637952] Key type id_legacy registered
[    3.641945] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    3.648592] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    3.655954] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    3.694617] NET: Registered PF_ALG protocol family
[    3.694666] xor: measuring software checksum speed
[    3.702280]    8regs           :  2626 MB/sec
[    3.706017]    32regs          :  3110 MB/sec
[    3.711016]    arm64_neon      :  2564 MB/sec
[    3.711498] xor: using function: 32regs (3110 MB/sec)
[    3.716521] Key type asymmetric registered
[    3.720586] Asymmetric key parser 'x509' registered
[    3.725462] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    3.732784] io scheduler mq-deadline registered
[    3.737280] io scheduler kyber registered
[    3.766776] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    3.768504] Serial: AMBA driver
[    3.771394] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    3.780592] brd: module loaded
[    3.783810] loop: module loaded
[    3.784660] mtdoops: mtd device (mtddev=name/number) must be supplied
[    3.791807] tun: Universal TUN/TAP device driver, 1.6
[    3.794302] CAN device driver interface
[    3.798627] SPI driver wl1271_spi has no spi_device_id for ti,wl1271
[    3.804346] SPI driver wl1271_spi has no spi_device_id for ti,wl1273
[    3.810658] SPI driver wl1271_spi has no spi_device_id for ti,wl1281
[    3.816976] SPI driver wl1271_spi has no spi_device_id for ti,wl1283
[    3.823287] SPI driver wl1271_spi has no spi_device_id for ti,wl1285
[    3.829602] SPI driver wl1271_spi has no spi_device_id for ti,wl1801
[    3.835916] SPI driver wl1271_spi has no spi_device_id for ti,wl1805
[    3.842231] SPI driver wl1271_spi has no spi_device_id for ti,wl1807
[    3.848545] SPI driver wl1271_spi has no spi_device_id for ti,wl1831
[    3.854860] SPI driver wl1271_spi has no spi_device_id for ti,wl1835
[    3.861174] SPI driver wl1271_spi has no spi_device_id for ti,wl1837
[    3.867567] usbcore: registered new interface driver asix
[    3.872892] usbcore: registered new interface driver ax88179_178a
[    3.878925] usbcore: registered new interface driver cdc_ether
[    3.884721] usbcore: registered new interface driver net1080
[    3.890343] usbcore: registered new interface driver cdc_subset
[    3.896227] usbcore: registered new interface driver zaurus
[    3.901772] usbcore: registered new interface driver cdc_ncm
[    3.908033] usbcore: registered new interface driver uas
[    3.912671] usbcore: registered new interface driver usb-storage
[    3.919214] rtc_zynqmp ffa60000.rtc: registered as rtc0
[    3.923816] rtc_zynqmp ffa60000.rtc: setting system clock to 2023-01-23T19:12:13 UTC (1674501133)
[    3.932674] i2c_dev: i2c /dev entries driver
[    3.938370] usbcore: registered new interface driver uvcvideo
[    3.943296] Bluetooth: HCI UART driver ver 2.3
[    3.946992] Bluetooth: HCI UART protocol H4 registered
[    3.952090] Bluetooth: HCI UART protocol BCSP registered
[    3.957378] Bluetooth: HCI UART protocol LL registered
[    3.962474] Bluetooth: HCI UART protocol ATH3K registered
[    3.967844] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    3.974091] Bluetooth: HCI UART protocol Intel registered
[    3.979435] Bluetooth: HCI UART protocol QCA registered
[    3.984635] usbcore: registered new interface driver bcm203x
[    3.990261] usbcore: registered new interface driver bpa10x
[    3.995795] usbcore: registered new interface driver bfusb
[    4.001243] usbcore: registered new interface driver btusb
[    4.006705] usbcore: registered new interface driver ath3k
[    4.012195] EDAC MC: ECC not enabled
[    4.015792] EDAC DEVICE0: Giving out device to module edac controller cache_err: DEV edac (POLLED)
[    4.024726] EDAC DEVICE1: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    4.037043] sdhci: Secure Digital Host Controller Interface driver
[    4.042833] sdhci: Copyright(c) Pierre Ossman
[    4.047154] sdhci-pltfm: SDHCI platform and OF driver helper
[    4.053099] ledtrig-cpu: registered to indicate activity on CPUs
[    4.058842] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    4.065208] zynqmp_firmware_probe Platform Management API v1.1
[    4.070943] zynqmp_firmware_probe Trustzone version v1.0
[    4.104396] securefw securefw: securefw probed
[    4.104659] alg: No test for xilinx-zynqmp-aes (zynqmp-aes)
[    4.108861] zynqmp_aes firmware:zynqmp-firmware:zynqmp-aes: AES Successfully Registered
[    4.116956] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384)
[    4.123095] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa)
[    4.128610] usbcore: registered new interface driver usbhid
[    4.134008] usbhid: USB HID core driver
[    4.140594] ARM CCI_400_r1 PMU driver probed
[    4.141183] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    4.148829] usbcore: registered new interface driver snd-usb-audio
[    4.155330] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    4.162808] Initializing XFRM netlink socket
[    4.166422] NET: Registered PF_INET6 protocol family
[    4.171707] Segment Routing with IPv6
[    4.174934] In-situ OAM (IOAM) with IPv6
[    4.178869] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    4.184999] NET: Registered PF_PACKET protocol family
[    4.189719] NET: Registered PF_KEY protocol family
[    4.194476] can: controller area network core
[    4.198812] NET: Registered PF_CAN protocol family
[    4.203547] can: raw protocol
[    4.206490] can: broadcast manager protocol
[    4.210642] can: netlink gateway - max_hops=1
[    4.215026] Bluetooth: RFCOMM TTY layer initialized
[    4.219815] Bluetooth: RFCOMM socket layer initialized
[    4.224922] Bluetooth: RFCOMM ver 1.11
[    4.228636] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.233909] Bluetooth: BNEP filters: protocol multicast
[    4.239104] Bluetooth: BNEP socket layer initialized
[    4.244028] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    4.249913] Bluetooth: HIDP socket layer initialized
[    4.254868] 8021q: 802.1Q VLAN Support v1.8
[    4.259095] 9pnet: Installing 9P2000 support
[    4.263250] Key type dns_resolver registered
[    4.267600] registered taskstats version 1
[    4.271539] Loading compiled-in X.509 certificates
[    4.277324] Btrfs loaded, crc32c=crc32c-generic, zoned=no, fsverity=no
[    4.291344] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 48, base_baud = 6249999) is a xuartps
[    4.300372] printk: console [ttyPS1] enabled
[    4.300372] printk: console [ttyPS1] enabled
[    4.304663] printk: bootconsole [cdns0] disabled
[    4.304663] printk: bootconsole [cdns0] disabled
[    4.313911] of-fpga-region fpga-full: FPGA Region probed
[    4.324097] xilinx-zynqmp-dma fd500000.dma-controller: ZynqMP DMA driver Probe success
[    4.332171] xilinx-zynqmp-dma fd510000.dma-controller: ZynqMP DMA driver Probe success
[    4.340243] xilinx-zynqmp-dma fd520000.dma-controller: ZynqMP DMA driver Probe success
[    4.348308] xilinx-zynqmp-dma fd530000.dma-controller: ZynqMP DMA driver Probe success
[    4.356380] xilinx-zynqmp-dma fd540000.dma-controller: ZynqMP DMA driver Probe success
[    4.364443] xilinx-zynqmp-dma fd550000.dma-controller: ZynqMP DMA driver Probe success
[    4.372522] xilinx-zynqmp-dma fd560000.dma-controller: ZynqMP DMA driver Probe success
[    4.380578] xilinx-zynqmp-dma fd570000.dma-controller: ZynqMP DMA driver Probe success
[    4.388714] xilinx-zynqmp-dma ffa80000.dma-controller: ZynqMP DMA driver Probe success
[    4.396781] xilinx-zynqmp-dma ffa90000.dma-controller: ZynqMP DMA driver Probe success
[    4.404844] xilinx-zynqmp-dma ffaa0000.dma-controller: ZynqMP DMA driver Probe success
[    4.412910] xilinx-zynqmp-dma ffab0000.dma-controller: ZynqMP DMA driver Probe success
[    4.420972] xilinx-zynqmp-dma ffac0000.dma-controller: ZynqMP DMA driver Probe success
[    4.429037] xilinx-zynqmp-dma ffad0000.dma-controller: ZynqMP DMA driver Probe success
[    4.437098] xilinx-zynqmp-dma ffae0000.dma-controller: ZynqMP DMA driver Probe success
[    4.445165] xilinx-zynqmp-dma ffaf0000.dma-controller: ZynqMP DMA driver Probe success
[    4.453541] xilinx-zynqmp-dpdma fd4c0000.dma-controller: Xilinx DPDMA engine is probed
[    4.464605] zynqmp-display fd4a0000.display: vtc bridge property not present
[    4.474483] xilinx-dp-snd-codec fd4a0000.display:zynqmp_dp_snd_codec0: Xilinx DisplayPort Sound Codec probed
[    4.484536] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm0: Xilinx DisplayPort Sound PCM probed
[    4.489510] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
[    4.492570] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm1: Xilinx DisplayPort Sound PCM probed
[    4.508290] xilinx-dp-snd-card fd4a0000.display:zynqmp_dp_snd_card: Xilinx DisplayPort Sound Card probed
[    4.517851] OF: graph: no port node found in /axi/display@fd4a0000
[    4.524363] xlnx-drm xlnx-drm.0: bound fd4a0000.display (ops 0xffff800008f030e0)
[    4.696621] Console: switching to colour frame buffer device 240x67
[    4.719545] zynqmp-display fd4a0000.display: [drm] fb0: xlnxdrmfb frame buffer device
[    4.727589] [drm] Initialized xlnx 1.0.0 20130509 for fd4a0000.display on minor 0
[    4.735096] zynqmp-display fd4a0000.display: ZynqMP DisplayPort Subsystem driver probed
[    4.744858] spi-nor spi0.0: mt25qu512a (65536 Kbytes)
[    4.749987] 16 fixed-partitions partitions found on MTD device spi0.0
[    4.756435] Creating 16 MTD partitions on "spi0.0":
[    4.761317] 0x000000000000-0x000000080000 : "Image Selector"
[    4.767779] 0x000000080000-0x000000100000 : "Image Selector Golden"
[    4.774749] 0x000000100000-0x000000120000 : "Persistent Register"
[    4.781300] tpm_tis_spi spi2.0: 2.0 TPM (device-id 0x1B, rev-id 22)
[    4.781599] 0x000000120000-0x000000140000 : "Persistent Register Backup"
[    4.794992] 0x000000140000-0x000000200000 : "Open_1"
[    4.800663] 0x000000200000-0x000000f00000 : "Image A (FSBL, PMU, ATF, U-Boot)"
[    4.808558] 0x000000f00000-0x000000f80000 : "ImgSel Image A Catch"
[    4.815495] 0x000000f80000-0x000001c80000 : "Image B (FSBL, PMU, ATF, U-Boot)"
[    4.822722] random: fast init done
[    4.826852] 0x000001c80000-0x000001d00000 : "ImgSel Image B Catch"
[    4.833692] 0x000001d00000-0x000001e00000 : "Open_2"
[    4.839433] 0x000001e00000-0x000002000000 : "Recovery Image"
[    4.845806] 0x000002000000-0x000002200000 : "Recovery Image Backup"
[    4.852731] 0x000002200000-0x000002220000 : "U-Boot storage variables"
[    4.860156] 0x000002220000-0x000002240000 : "U-Boot storage variables backup"
[    4.867979] 0x000002240000-0x000002250000 : "SHA256"
[    4.873657] 0x000002250000-0x000004000000 : "User"
[    4.879656] macb ff0b0000.ethernet: Not enabling partial store and forward
[    4.911763] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 38 (00:0a:35:0f:2b:0e)
[    4.923327] macb ff0c0000.ethernet: Not enabling partial store and forward
[    4.966853] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    4.973385] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
[    4.979853] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
[    4.986313] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
[    4.993963] i2c i2c-1: Added multiplexed i2c bus 3
[    4.998856] i2c i2c-1: Added multiplexed i2c bus 4
[    5.003753] i2c i2c-1: Added multiplexed i2c bus 5
[    5.008648] i2c i2c-1: Added multiplexed i2c bus 6
[    5.013436] pca954x 1-0074: registered 4 multiplexed busses for I2C switch pca9546
[    5.021974] at24 1-0050: supply vcc not found, using dummy regulator
[    5.028619] at24 1-0050: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[    5.035455] at24 1-0051: supply vcc not found, using dummy regulator
[    5.042098] at24 1-0051: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[    5.048992] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 41
[    5.056315] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer with timeout 60s
[    5.063748] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer with timeout 10s
[    5.073161] macb ff0c0000.ethernet: Not enabling partial store and forward
[    5.080065] macb ff0c0000.ethernet: invalid hw address, using random
[    5.093800] macb ff0c0000.ethernet eth1: Cadence GEM rev 0x50070106 at 0xff0c0000 irq 39 (ea:76:dc:41:df:45)
[    5.127637] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    5.133135] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[    5.140882] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010810
[    5.150307] xhci-hcd xhci-hcd.1.auto: irq 55, io mem 0xfe200000
[    5.156413] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[    5.164678] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.171895] usb usb1: Product: xHCI Host Controller
[    5.176764] usb usb1: Manufacturer: Linux 5.15.19-xilinx-v2022.1 xhci-hcd
[    5.183542] usb usb1: SerialNumber: xhci-hcd.1.auto
[    5.188719] hub 1-0:1.0: USB hub found
[    5.192482] hub 1-0:1.0: 1 port detected
[    5.196596] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    5.202085] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[    5.209738] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[    5.216367] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[    5.224631] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.231850] usb usb2: Product: xHCI Host Controller
[    5.236717] usb usb2: Manufacturer: Linux 5.15.19-xilinx-v2022.1 xhci-hcd
[    5.243500] usb usb2: SerialNumber: xhci-hcd.1.auto
[    5.248619] hub 2-0:1.0: USB hub found
[    5.252379] hub 2-0:1.0: 1 port detected
[    5.276981] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    5.282473] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[    5.290209] xhci-hcd xhci-hcd.2.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010810
[    5.299628] xhci-hcd xhci-hcd.2.auto: irq 58, io mem 0xfe300000
[    5.305734] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[    5.313999] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.321209] usb usb3: Product: xHCI Host Controller
[    5.326079] usb usb3: Manufacturer: Linux 5.15.19-xilinx-v2022.1 xhci-hcd
[    5.332858] usb usb3: SerialNumber: xhci-hcd.2.auto
[    5.337974] hub 3-0:1.0: USB hub found
[    5.341731] hub 3-0:1.0: 1 port detected
[    5.345811] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[    5.351307] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[    5.358968] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[    5.365731] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[    5.374000] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.381216] usb usb4: Product: xHCI Host Controller
[    5.386084] usb usb4: Manufacturer: Linux 5.15.19-xilinx-v2022.1 xhci-hcd
[    5.392864] usb usb4: SerialNumber: xhci-hcd.2.auto
[    5.398016] hub 4-0:1.0: USB hub found
[    5.401771] hub 4-0:1.0: 1 port detected
[    5.408751] gpio-keys gpio-keys: Button without keycode
[    5.413981] gpio-keys: probe of gpio-keys failed with error -22
[    5.420002] of_cfs_init
[    5.422464] of_cfs_init: OK
[    5.425384] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    5.489933] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[    5.551076] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    5.557609] clk: Not disabling unused clocks
[    5.562134] ALSA device list:
[    5.565089]   #0: DisplayPort monitor
[    5.569019] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    5.577642] cfg80211: failed to load regulatory.db
[    5.582931] Freeing unused kernel memory: 2176K
[    5.601969] Run /init as init process
[    5.646578] usb 1-1: New USB device found, idVendor=0424, idProduct=2744, bcdDevice= 2.21
[    5.654810] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.661953] usb 1-1: Product: USB2744
[    5.665615] usb 1-1: Manufacturer: Microchip Tech
[    5.667575] random: python3: uninitialized urandom read (24 bytes read)
[    5.728524] hub 1-1:1.0: USB hub found
[    5.732353] hub 1-1:1.0: 4 ports detected
[    5.742019] usb 4-1: new SuperSpeed USB device number 2 using xhci-hcd
[    5.766380] usb 4-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[    5.774591] usb 4-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[    5.781740] usb 4-1: Product: USB5744
[    5.785405] usb 4-1: Manufacturer: Microchip Tech
[    5.792371] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
[    5.818309] usb 2-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[    5.826507] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[    5.833643] usb 2-1: Product: USB5744
[    5.837301] usb 2-1: Manufacturer: Microchip Tech
[    5.845615] hub 4-1:1.0: USB hub found
[    5.849514] hub 4-1:1.0: 2 ports detected
[    5.904471] hub 2-1:1.0: USB hub found
[    5.908365] hub 2-1:1.0: 3 ports detected
[    6.085942] usb 1-1.1: new high-speed USB device number 3 using xhci-hcd
[    6.196232] usb 1-1.1: New USB device found, idVendor=0424, idProduct=2240, bcdDevice= 1.98
[    6.204585] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    6.211890] usb 1-1.1: Product: Ultra Fast Media 
[    6.216585] usb 1-1.1: Manufacturer: Generic
[    6.220847] usb 1-1.1: SerialNumber: 000000225001
[    6.226177] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[    6.232698] scsi host0: usb-storage 1-1.1:1.0
[    6.314027] usb 1-1.4: new high-speed USB device number 4 using xhci-hcd
[    6.324829] macb ff0c0000.ethernet eth1: PHY [ff0c0000.ethernet-ffffffff:08] driver [TI DP83867] (irq=POLL)
[    6.334583] macb ff0c0000.ethernet eth1: configuring for phy/rgmii-id link mode
[    6.342476] pps pps0: new PPS source ptp0
[    6.346584] macb ff0c0000.ethernet: gem-ptp-timer ptp clock registered.
MAC address for eth1 is updated to 00:0a:35:0f:40:0f
[    6.361158] random: python3: uninitialized urandom read (24 bytes read)
[    6.426761] usb 1-1.4: New USB device found, idVendor=0424, idProduct=2740, bcdDevice= 2.00
[    6.435144] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.442481] usb 1-1.4: Product: Hub Controller
[    6.446937] usb 1-1.4: Manufacturer: Microchip Tech
[    6.964159] macb ff0b0000.ethernet eth0: PHY [ff0c0000.ethernet-ffffffff:04] driver [TI DP83867] (irq=POLL)
[    6.973924] macb ff0b0000.ethernet eth0: configuring for phy/sgmii link mode
[    6.981548] pps pps1: new PPS source ptp1
[    6.985622] macb ff0b0000.ethernet: gem-ptp-timer ptp clock registered.
MAC address for eth0 is updated to 00:0a:35:0f:2b:0e
[    7.258730] scsi 0:0:0:0: Direct-Access     Generic  Ultra HS-COMBO   1.98 PQ: 0 ANSI: 0
[    7.268084] sd 0:0:0:0: [sda] 62410752 512-byte logical blocks: (32.0 GB/29.8 GiB)
[    7.276190] sd 0:0:0:0: [sda] Write Protect is off
[    7.281545] sd 0:0:0:0: [sda] No Caching mode page found
[    7.286855] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    7.296911]  sda: sda1 sda2
[    7.301489] sd 0:0:0:0: [sda] Attached SCSI removable disk
root: clean, 70522/524288 files, 419792/1048576 blocks
[    8.673301] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[    9.408412] systemd[1]: systemd 249.7+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
[    9.438715] systemd[1]: Detected architecture arm64.

Welcome to PetaLinux 2022.1_update1_05131710 (honister)!

[    9.474820] systemd[1]: Hostname set to <xilinx-kr260-starterkit-20221>.
[    9.610385] systemd-sysv-generator[504]: SysV service '/etc/init.d/watchdog-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.638599] systemd-sysv-generator[504]: SysV service '/etc/init.d/urandom' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.663262] systemd-sysv-generator[504]: SysV service '/etc/init.d/umountfs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.687341] systemd-sysv-generator[504]: SysV service '/etc/init.d/reboot' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.712084] systemd-sysv-generator[504]: SysV service '/etc/init.d/save-rtc.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.737805] systemd-sysv-generator[504]: SysV service '/etc/init.d/umountnfs.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.764357] systemd-sysv-generator[504]: SysV service '/etc/init.d/halt' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.788769] systemd-sysv-generator[504]: SysV service '/etc/init.d/dropbear' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.814901] systemd-sysv-generator[504]: SysV service '/etc/init.d/sendsigs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.839143] systemd-sysv-generator[504]: SysV service '/etc/init.d/inetd.busybox' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[    9.864303] systemd-sysv-generator[504]: SysV service '/etc/init.d/single' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[   10.042227] macb ff0b0000.ethernet eth0: unable to generate target frequency: 125000000 Hz
[   10.051602] macb ff0b0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[   10.059281] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   10.290925] systemd[1]: Queued start job for default target Graphical Interface.
[   10.299220] random: systemd: uninitialized urandom read (16 bytes read)
[   10.333017] systemd[1]: Created slice Slice /system/getty.
[  OK  ] Created slice Slice /system/getty.
[   10.354103] random: systemd: uninitialized urandom read (16 bytes read)
[   10.361982] systemd[1]: Created slice Slice /system/modprobe.
[  OK  ] Created slice Slice /system/modprobe.
[   10.382008] random: systemd: uninitialized urandom read (16 bytes read)
[   10.389838] systemd[1]: Created slice Slice /system/serial-getty.
[  OK  ] Created slice Slice /system/serial-getty.
[   10.410980] systemd[1]: Created slice User and Session Slice.
[  OK  ] Created slice User and Session Slice.
[   10.434208] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Started Dispatch Password …ts to Console Directory Watch.
[   10.458123] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password R…uests to Wall Directory Watch.
[   10.482265] systemd[1]: Reached target Path Units.
[  OK  ] Reached target Path Units.
[   10.498028] systemd[1]: Reached target Remote File Systems.
[  OK  ] Reached target Remote File Systems.
[   10.518016] systemd[1]: Reached target Slice Units.
[  OK  ] Reached target Slice Units.
[   10.534034] systemd[1]: Reached target Swaps.
[  OK  ] Reached target Swaps.
[   10.551445] systemd[1]: Listening on RPCbind Server Activation Socket.
[  OK  ] Listening on RPCbind Server Activation Socket.
[   10.574012] systemd[1]: Reached target RPC Port Mapper.
[  OK  ] Reached target RPC Port Mapper.
[   10.594235] systemd[1]: Listening on Syslog Socket.
[  OK  ] Listening on Syslog Socket.
[   10.610141] systemd[1]: Listening on initctl Compatibility Named Pipe.
[  OK  ] Listening on initctl Compatibility Named Pipe.
[   10.634455] systemd[1]: Listening on Journal Audit Socket.
[  OK  ] Listening on Journal Audit Socket.
[   10.654210] systemd[1]: Listening on Journal Socket (/dev/log).
[  OK  ] Listening on Journal Socket (/dev/log).
[   10.674280] systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
[   10.690433] systemd[1]: Listening on Network Service Netlink Socket.
[  OK  ] Listening on Network Service Netlink Socket.
[   10.715197] systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
[   10.738221] systemd[1]: Listening on udev Kernel Socket.
[  OK  ] Listening on udev Kernel Socket.
[   10.758222] systemd[1]: Listening on User Database Manager Socket.
[  OK  ] Listening on User Database Manager Socket.
[   10.784438] systemd[1]: Mounting Huge Pages File System...
         Mounting Huge Pages File System...
[   10.804515] systemd[1]: Mounting POSIX Message Queue File System...
         Mounting POSIX Message Queue File System...
[   10.828579] systemd[1]: Mounting Kernel Debug File System...
         Mounting Kernel Debug File System...
[   10.846345] systemd[1]: Condition check resulted in Kernel Trace File System being skipped.
[   10.858298] systemd[1]: Mounting Temporary Directory /tmp...
         Mounting Temporary Directory /tmp...
[   10.875599] systemd[1]: Condition check resulted in Create List of Static Device Nodes being skipped.
[   10.887770] systemd[1]: Starting Load Kernel Module configfs...
         Starting Load Kernel Module configfs...
[   10.909108] systemd[1]: Starting Load Kernel Module drm...
         Starting Load Kernel Module drm...
[   10.928887] systemd[1]: Starting Load Kernel Module fuse...
         Starting Load Kernel Module fuse...
[   10.948863] systemd[1]: Starting RPC Bind...
         Starting RPC Bind...
[   10.962129] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
[   10.981824] systemd[1]: Starting Load Kernel Modules...
         Starting Load Kernel Modules...
[   11.000823] systemd[1]: Starting Remount Root and Kernel File Systems...
         Starting Remount Root and Kernel File Systems...
[   11.016321] dmaproxy: loading out-of-tree module taints kernel.
[   11.016436] EXT4-fs (sda2): re-mounted. Opts: (null). Quota mode: none.
[   11.036917] systemd[1]: Starting Coldplug All udev Devices...
         Starting Coldplug All udev Devices...
[   11.059615] systemd[1]: Started RPC Bind.
[  OK  ] Started RPC Bind.
[   11.074529] systemd[1]: Mounted Huge Pages File System.
[  OK  ] Mounted Huge Pages File System.
[   11.094420] systemd[1]: Mounted POSIX Message Queue File System.
[  OK  ] Mounted POSIX Message Queue File Sys[   11.102062] usb5744 4-002d: Sending boot command failed
tem.
[   11.122294] systemd[1]: Mounted Kernel Debug File System.
[   11.126055] i2c 4-002d: Sending boot command failed
[  OK  ] Mounted Kernel Debug File System.
[   11.150604] systemd[1]: Mounted Temporary Directory /tmp.
[  OK  ] Mounted Temporary Directory /tmp.
[   11.170921] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[   11.179172] systemd[1]: Finished Load Kernel Module configfs.
[  OK  ] Finished Load Kernel Module configfs.
[   11.203089] systemd[1]: modprobe@drm.service: Deactivated successfully.
[   11.210892] systemd[1]: Finished Load Kernel Module drm.
[  OK  ] Finished Load Kernel Module drm.
[   11.235080] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[   11.242993] systemd[1]: Finished Load Kernel Module fuse.
[  OK  ] Finished Load Kernel Module fuse.
[   11.267608] systemd[1]: Finished Load Kernel Modules.
[  OK  ] Finished Load Kernel Modules.
[   11.283272] systemd[1]: Finished Remount Root and Kernel File Systems.
[  OK  ] Finished Remount Root and Kernel File Systems.
[   11.310508] systemd[1]: Mounting NFSD configuration filesystem...
         Mounting NFSD configuration filesystem...
[   11.326449] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
[   11.337508] systemd[1]: Mounting Kernel Configuration File System...
         Mounting Kernel Configuration File System...
[   11.360244] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[   11.369000] systemd[1]: Condition check resulted in Platform Persistent Storage Archival being skipped.
[   11.381407] systemd[1]: Starting Apply Kernel Variables...
         Starting Apply Kernel Variables...
[   11.398270] systemd[1]: Condition check resulted in Create System Users being skipped.
[   11.409342] systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting Create Static Device Nodes in /dev...
[   11.433888] systemd[1]: Failed to mount NFSD configuration filesystem.
[FAILED] Failed to mount NFSD configuration filesystem.
See 'systemctl status proc-fs-nfsd.mount' for details.
[DEPEND] Dependency failed for NFS Mount Daemon.
[DEPEND] Dependency failed for NFS server and services.
[  OK  ] Mounted Kernel Configuration File System.
[  OK  ] Finished Apply Kernel Variables.
[  OK  ] Finished Create Static Device Nodes in /dev.
[  OK  ] Reached target Preparation for Local File Systems.
         Mounting /var/volatile...
[  OK  ] Started Entropy Daemon based on the HAVEGE algorithm.
         Starting Journal Service...
         Starting Rule-based Manage…for Device Events and Files...
[  OK  ] Mounted /var/volatile.
         Starting Load/Save Random Seed...
[  OK  ] Finished Coldplug All udev Devices.
[  OK  ] Finished Load/Save Random Seed.
[  OK  ] Started Journal Service.
         Starting Flush Journal to Persistent Storage...
[  OK  ] Finished Flush Journal to Persistent Storage.
[  OK  ] Started Rule-based Manager for Device Events and Files.
[  OK  ] Reached target Sound Card.
[  OK  ] Listening on Load/Save RF …itch Status /dev/rfkill Watch.
[  OK  ] Found device Ultra_HS-COMBO boot.
         Mounting /boot...
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.
         Starting Create Volatile Files and Directories...
[  OK  ] Finished Create Volatile Files and Directories.
         Starting Network Time Synchronization...
         Starting Record System Boot/Shutdown in UTMP...
[  OK  ] Finished Record System Boot/Shutdown in UTMP.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target System Time Set.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Reached target Timer Units.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Listening on dropbear.socket.
[  OK  ] Reached target Socket Units.
[  OK  ] Reached target Basic System.
[  OK  ] Started archconfig.
[  OK  ] Started Job spooling tools.
[  OK  ] Started Periodic Command Scheduler.
[  OK  ] Started D-Bus System Message Bus.
[  OK  ] Started dfx-mgrd Dynamic Function eXchange.
[  OK  ] Started Start fan control, if configured.
         Starting inetd.busybox.service...
         Starting IPv6 Packet Filtering Framework...
         Starting IPv4 Packet Filtering Framework...
[  OK  ] Started System Logging Service.
         Starting User Login Management...
[  OK  ] Started Xserver startup without a display manager.
Jan 23 11:12:09 xilinx-kr260-starterkit-20221 kernel: GIC: Adjusting CPU interface base to 0x00000000f902f000
Jan 23 11:12:11 xilinx-kr260-starterkit-20221 kernel: armv8-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: cacheinfo: Unable to detect cache hierarchy for CPU 0
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: mtdoops: mtd device (mtddev=name/number) must be supplied
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1271
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1273
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1281
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1283
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1285
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1801
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1805
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1807
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1831
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1835
Jan 23 11:12:12 xilinx-kr260-starterkit-20221 kernel: SPI driver wl1271_spi has no spi_device_id for ti,wl1837
Jan 23 11:12:13 xilinx-kr260-starterkit-20221 kernel: zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
Jan 23 11:12:13 xilinx-kr260-starterkit-20221 kernel: OF: graph: no port node found in /axi/display@fd4a0000
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: at24 1-0050: supply vcc not found, using dummy regulator
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: at24 1-0051: supply vcc not found, using dummy regulator
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: gpio-keys gpio-keys: Button without keycode
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: gpio-keys: probe of gpio-keys failed with error -22
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: clk: Not disabling unused clocks
Jan 23 11:12:14 xilinx-kr260-starterkit-20221 kernel: platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
Jan 23 11:12:16 xilinx-kr260-starterkit-20221 kernel: sd 0:0:0:0: [sda] No Caching mode page found
Jan 23 11:12:16 xilinx-kr260-starterkit-20221 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Jan 23 11:12:19 xilinx-kr260-starterkit-20221 kernel: macb ff0b0000.ethernet eth0: unable to generate target frequency: 125000000 Hz
Jan 23 11:12:20 xilinx-kr260-starterkit-20221 kernel: dmaproxy: loading out-of-tree module taints kernel.
Jan 23 11:12:20 xilinx-kr260-starterkit-20221 kernel: usb5744 4-002d: Sending boot command failed
Jan 23 11:12:20 xilinx-kr260-starterkit-20221 kernel: i2c 4-002d: Sending boot command failed
[  OK  ] Finished IPv6 Packet Filtering Framework.
[  OK  ] Finished IPv4 Packet Filtering Framework.
[  OK  ] Reached target Preparation for Network.
         Starting Network Configuration...
[  OK  ] Started inetd.busybox.service.
[  OK  ] Started User Login Management.
[  OK  ] Started Network Configuration.
Jan 23 11:12:24 xilinx-kr260-starterkit-20221 kernel: OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/firmware-name
Jan 23 11:12:24 xilinx-kr260-starterkit-20221 kernel: OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/resets
         Starting Wait for Network to be Configured...
         Starting Network Name Resolution...
[  OK  ] Finished Wait for Network to be Configured.
[  OK  ] Started Network Name Resolution.
[  OK  ] Reached target Network.
[  OK  ] Reached target Network is Online.
[  OK  ] Reached target Host and Network Name Lookups.
         Starting DNS forwarder and DHCP server...
[  OK  ] Started NFS status monitor for NFSv2/3 locking..
[  OK  ] Started Respond to IPv6 Node Information Queries.
         Starting Network Time Service...
[  OK  ] Started Network Router Discovery Daemon.
[  OK  ] Started som-dashboard-init.
         Starting Permit User Sessions...
         Starting Target Communication Framework agent...
[  OK  ] Finished Permit User Sessions.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyPS1.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started DNS forwarder and DHCP server.
[  OK  ] Started Target Communication Framework agent.
[  OK  ] Started Network Time Service.
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
         Starting Record Runlevel Change in UTMP...
[  OK  ] Finished Record Runlevel Change in U[   16.607852] som-dashboard.sh[1098]: SOM Dashboard will be running at http://192.168.3.28:5006/som-dashboard

PetaLinux 2022.1_update1_05131710 xilinx-kr260-starterkit-20221 ttyPS1

xilinx-kr260-starterkit-20221 login: [   25.720223] som-dashboard.sh[1129]: 2023-01-23 11:12:35,421 Starting Bokeh server version 2.4.2 (running on Tornado 6.1)
[   25.728330] som-dashboard.sh[1129]: 2023-01-23 11:12:35,429 User authentication hooks NOT provided (default user enabled)
[   25.752364] som-dashboard.sh[1129]: 2023-01-23 11:12:35,453 Bokeh app running at: http://localhost:5006/som-dashboard
[   25.752706] som-dashboard.sh[1129]: 2023-01-23 11:12:35,454 Starting Bokeh server with process id: 1129

  1. 2023年01月25日 03:47 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する5

KR260 で Vitis アクセラレーション・プラットフォームを作成する4”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみよう。
Accelerated Design Development on Kria KR260 in Vitis 2022.1
Getting Started with the Kria KR260 in Vivado 2022.1
Getting Started with the Kria KR260 in PetaLinux 2022.1
Add Peripheral Support to Kria KR260 Vivado 2022.1 Project
を参考にして進めていく。

前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にして、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。今回は、その続きで、sdk.sh を作成し、BOOT.BIN を作成した。最後に SD カードのイメージを作成し、SD カードに書き込んだ。

Sysroot(SDK)をビルドする。
petalinux-build --sdk
KR260_79_230123.png

sdk.sh が生成された。
KR260_80_230123.png

BOOT.BIN を生成する。
petalinux-package --boot --u-boot --force
KR260_81_230123.png

BOOT.BIN が生成された。
KR260_82_230123.png

SD カード用の WIC イメージを生成する。
petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot,boot.scr,Image,system.dtb,system-zynqmp-sck-kr-g-revB.dtb" --disk-name "sda"
KR260_83_230123.png
KR260_84_230123.png

petalinux-sdimage.wic が生成された。
KR260_85_230123.png

ログを示す。

(base) masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os$ petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot,boot.scr,Image,system.dtb,system-zynqmp-sck-kr-g-revB.dtb" --disk-name "sda"
INFO: Sourcing build environment
INFO: bitbake wic-tools
NOTE: Started PRServer with DBfile: /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/cache/prserv.sqlite3, Address: 127.0.0.1:35259, PID: 30647
Loading cache: 100% |############################################| Time: 0:00:01
Loaded 5386 entries from dependency cache.
Parsing recipes: 100% |##########################################| Time: 0:00:01
Parsing of 3592 .bb files complete (3584 cached, 8 parsed). 5394 targets, 555 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |#######################################| Time: 0:00:02
Checking sstate mirror object availability: 100% |###############| Time: 0:00:13
Sstate summary: Wanted 449 Local 9 Network 309 Missed 131 Current 890 (70% match, 90% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 3645 tasks of which 3594 didn't need to be rerun and all succeeded.
INFO: Extracting rootfs, This may take time!
INFO: Creating wic image...
INFO: wic create /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/rootfs.wks --rootfs-dir /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/wic/rootfs --bootimg-dir /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux --kernel-dir /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux --outdir /tmp/tmp.Gh5ZJxbz3N -n /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/tmp/work/cortexa72-cortexa53-xilinx-linux/wic-tools/1.0-r0/recipe-sysroot-native 
INFO: Creating image(s)...

WARNING: bootloader config not specified, using defaults

INFO: The new image(s) can be found here:
  /tmp/tmp.Gh5ZJxbz3N/rootfs-202301231244-sda.direct

The following build artifacts were used to create the image(s):
  ROOTFS_DIR:                   /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/wic/rootfs
  BOOTIMG_DIR:                  /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux
  KERNEL_DIR:                   /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/images/linux
  NATIVE_SYSROOT:               /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/tmp/work/cortexa72-cortexa53-xilinx-linux/wic-tools/1.0-r0/recipe-sysroot-native

INFO: The image(s) were created using OE kickstart file:
  /media/masaaki/Ubuntu_Disk/KR260/kr260_custom_platform/linux_os/build/rootfs.wks



balenaEtcher を使用して MicroSD カードに作成したイメージを書き込む。
KR260_86_230123.png

petalinux-sdimage.wic を MicroSD カードに書き込んだ。

書き込み後に MicroSD カードに boot パーティションと root パーティションが生成された。
KR260_87_230123.png

KR260_88_230123.png
  1. 2023年01月24日 03:56 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する4

KR260 で Vitis アクセラレーション・プラットフォームを作成する3”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみよう。
Accelerated Design Development on Kria KR260 in Vitis 2022.1
Getting Started with the Kria KR260 in Vivado 2022.1
Getting Started with the Kria KR260 in PetaLinux 2022.1
Add Peripheral Support to Kria KR260 Vivado 2022.1 Project
を参考にして進めていく。

前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考に Platform Setup を行って、ブロック・デザインを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にして、petalinux-create で、Petalinux 2022.1 プロジェクトを作成し、petalinux-config を行い、petalinux-build でビルドしたところ成功した。

まずは、PetaLinux eSDK をアップグレードする。
petalinux-upgrade -u http://petalinux.xilinx.com/sswreleases/rel-v2022/sdkupdate/2022.1_update1/ -p "aarch64" --wget-args "--wait 1 -nH --cut-dirs=4"
KR260_65_230122.png

KR260 BSP 2022.1 版をダウンロードする。
xilinx-kr260-starterkit-v2022.1-05140151.bsp がダウンロードできた。
KR260_66_230122.png

Petalinux 2022.1 の linux_os プロジェクトを作成する。
現在のディレクトリ階層は KR260/kr260_custom_platlform だ。
petalinux-create --type project -s ../xilinx-kr260-starterkit-v2022.1-05140151.bsp --name linux_os
cd linux_os

KR260_67_230122.png

Vivado からエクスポートした XSA ファイルをインポートする。
petalinux-config --get-hw-description ../kr260_custom

FPGA Manager -> Fpga Manager に * を付けた。
KR260_68_230122.png

ルート ファイルシステム タイプ(Image Packaging Configuration -> Root Filesystem Type -> INITRD)は INITRD に設定されていた。
Image Packaging Configuration -> INITRAMFS/INITRD Image name -> petalinux-initramfs-image はすでに設定されていた。
Image Packaging Configuration -> Copy final images to tftpboot は無効化するのを忘れた。
KR260_69_230122.png

linux カーネルの設定はデフォルトのままとする。
petalinux-config -c kernel
KR260_70_230122.png

KR260_71_230122.png

ROOT FS の設定
petalinux-config -c rootfs

最初に、Filesystem Packages -> console -> utils -> git -> git を有効にした。
KR260_72_230122.png

以下のパッケージとパッケージ・グループを有効にした。

Filesystem Packages -> base -> dnf -> dnf
Filesystem Packages -> x11 -> base -> libdrm -> libdrm
Filesystem Packages -> x11 -> base -> libdrm -> libdrm-tests
Filesystem Packages -> x11 -> base -> libdrm -> libdrm-kms
Filesystem Packages -> libs -> xrt -> xrt
Filesystem Packages -> libs -> xrt -> xrt-dev
Filesystem Packages -> libs -> zocl -> zocl
Filesystem Packages -> libs -> opencl-headers -> opencl-headers
Filesystem Packages -> libs -> opencl-clhpp -> opencl-clhpp-dev
Petaliunx Package Groups -> packagegroup-petalinux -> packagegroup-petalinux
Petaliunx Package Groups -> packagegroup-petalinux-gstreamer -> packagegroup-petalinux-gstreamer


Petaliunx Package Groups -> packagegroup-petalinux-x11 -> packagegroup-petalinux-x11 を有効にした。
KR260_73_230122.png

Petaliunx Package Groups -> packagegroup-petalinux-opencv -> packagegroup-petalinux-opencv
Petaliunx Package Groups -> packagegroup-petalinux-opencv -> packagegroup-petalinux-opencv-dev
を有効にした。
KR260_74_230122.png

Petaliunx Package Groups -> packagegroup-petalinux-v4lutils -> packagegroup-petalinux-v4lutils を有効にした。
KR260_75_230122.png

KR260_76_230122.png

ビルドを行って成功した。
petalinux-build
KR260_77_230122.png

linux_os/images/linux ディレクトリの様子を示す。
KR260_78_230122.png
  1. 2023年01月23日 04:59 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する3

KR260 で Vitis アクセラレーション・プラットフォームを作成する2”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみよう。
Accelerated Design Development on Kria KR260 in Vitis 2022.1
Getting Started with the Kria KR260 in Vivado 2022.1
Getting Started with the Kria KR260 in PetaLinux 2022.1
Add Peripheral Support to Kria KR260 Vivado 2022.1 Project
を参考にして進めていく。

前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にブロック・デザインを完成させた。今回は、同様に、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考に Platform Setup を行って、ブロック・デザインを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。

Platform Setup ウインドウが開いて無ければ、Window メニューから Platform Setup を選択して開く。
Settings から AXI Port をクリックする。
zynq_ultra_ps_e_0 の M_AXI_HPM0_FPD と M_AXI_HPM1_FPD をイネーブルする。
Memport は M_AXI_GP で、 SP Tag は空とする。デフォルトのままとする。

zynq_ultra_ps_e_0 の以下の AXI インターフェースをイネーブルする。
S_AXI_HPC0_FPD, S_AXI_HPC1_FPD, S_AXI_HP0_FPD, S_AXI_HP1_FPD, S_AXI_HP2_FPD, S_AXI_HP3_FPD

S_AXI_HPC0_FPD の Memport を S_AXI_HP に変更する。
SP Tag に HPC0, HPC1, HP0, HP1, HP2, HP3 を入力する。
KR260_49_230121.png

Settings から Clock をクリックする。
clk_out1, clk_out2, clk_out3 の Enable チェックボックスをクリックする。

IDを
clk_out1 を 0 に
clk_out2 を 1 に
clk_out3 を 2 に設定する。

clk_ou2 の Is Default ラジオボタンをクリックして選択する。
KR260_50_230121.png

Settings から Interrupt をクリックする。
axi_intc_0 の intr のチェックボックスにチェックを入れた。
KR260_51_230121.png

インクリメンタル合成を無効にする
Tools メニューから Settings... を選択する。
Settings ダイアログが開く。
Project Settings から Synthesis をクリックして、選択する。
Settings の Incremental synthesis の ... ボタンをクリックする。
KR260_46_230121.png

Disable incremental synthesis ラジオボタンをクリックする。
KR260_47_230121.png

Settings ダイアログの Incremental synthesis に Not set が表示された。
OK ボタンをクリックする。
KR260_48_230121.png

ブロック・デザインの生成を行う。
Vivado の Project Navigator の Generate Block Design をクリックする。
Generate Output Products ダイアログが表示された。
Synthesis Options の Global ラジオボタンをクリックする。
Generate ボタンをクリックする。
KR260_52_230121.png

HDL ラッパーを生成する。
Source ウインドウをクリックして、ブロック・デザインの kr260_bd_i を右クリックし、Create HDL Wrapper... を選択して、HDL ラッパー・ファイルの kr260_bd_wrapper.v を生成した。
KR260_53_230121.png

Vivado の Project Navigator の Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。
Project Summary を示す。
KR260_54_230121.png

ハードウェアをエクスポートして、XSA ファイルを生成する。
File メニューから Export -> Export Platform... を選択する。
Export Hardware Platform ダイアログが開く。
Next > ボタンをクリックする。
KR260_55_230121.png

Platform Type 画面では、Hardware ラジオボタンをクリックする。
Next > ボタンをクリックする。
KR260_56_230121.png

Platform State 画面では、Include bitstream のチェック・ボックスにチェックを入れた。
Next > ボタンをクリックする。
KR260_57_230121.png

Platform Properties 画面では、Name に kr260_custom_platform と入力した。
Next > ボタンをクリックする。
KR260_58_230121.png

Output File 画面では、XSA file name に kr260_custom と入力した。
Next > ボタンをクリックする。
KR260_59_230121.png

サーマリ画面が表示された。
Finish ボタンをクリックした。
KR260_60_230121.png

kr260_custom.xsa ファイルが生成されている。
KR260_61_230121.png
  1. 2023年01月22日 04:15 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する2

KR260 で Vitis アクセラレーション・プラットフォームを作成する1”の続き。

KR260 で Vitis アクセラレーション・プラットフォームを作成してみよう。
Accelerated Design Development on Kria KR260 in Vitis 2022.1
Getting Started with the Kria KR260 in Vivado 2022.1
Getting Started with the Kria KR260 in PetaLinux 2022.1
Add Peripheral Support to Kria KR260 Vivado 2022.1 Project
を参考にして進めていく。

前回は、”Getting Started with the Kria KR260 in Vivado 2022.1”に従ってVivado 2022.1 で kr260_custom プロジェクトを作成し、Zynq UltraScale+ MPSoC IP を Add IP して、”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”に従って設定を行った。今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”を参考にブロック・デザインを完成させた。
(2023/01/22:追加)ファン・コントロールをブロック・デザインに追加した。

最初に clocking wizard を Add IP した。
clk_wiz_0 の名前でインスタンスされた。ダブルクリックして設定を行った。
clk_out1 を 100 MHz、clk_out2 を 200 MHz、clk_out3 を 400 MHz に設定した。
Reset Type を Active Low に設定した。
KR260_38_230121.png

ブロック・デザインを示す。
KR260_39_230121.png

Processing System Reset を 3 個 Add IP して、配線した。
KR260_40_230121.png

AXI Interrupt Controller を Add IP した。
Interrupt Output Connection を Single に変更した。
KR260_41_230121.png

ブロック・デザインを示す。
KR260_42_230121.png

Run Connection Automation をクリックして、配線を行う。
Run Connection Automation ダイアログが表示された。
デフォルトのまま OK ボタンをクリックする。
KR260_43_230121.png

rst_ps8_0_99M の Processing System Reset と ps8_0_axi_periph の AXI Interconnect が実装され配線された。
axi_intc_0 の irq から zynq_ultra_ps_e_0 の pl_ps_irq[0:0] へ配線を行った。
KR260_44_230121.png

ファン・コントロールを追加(2023/01/22:追加)
Slice IP をブロック・デザインに Add IP した。
Slice を下の図の用に設定した。
KR260_62_230121.png

Slice の入力 Din[2:0] を zynq_ultra_ps_e_0 の emio_ttc0_wave_o[2:0] に配線した。
Slice の出力 Dout[0:0] を右クリックし右クリックメニューから Make External を選択して外部ピンに接続した。
外部品の名前を fan_enb_b[0:0] に設定した。
全体のブロック・デザインを示す。
KR260_63_230121.png

Source ウインドウから Add Source... を選択し、ダイアログで Add or Create Constrains のラジオボタンをクリックして、kr260_custom.xdc を生成した。

kr260_custom.xdc の記述は”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”から引用したが、外部ピンの名前を fan_en_b から fan_enb_b に変更したので、その部分を変更してある。
KR260_64_230121.png

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

#Fan Speed Enable
set_property PACKAGE_PIN A12 [get_ports {fan_enb_b}]
set_property IOSTANDARD LVCMOS33 [get_ports {fan_enb_b}]
set_property SLEW SLOW [get_ports {fan_enb_b}]
set_property DRIVE 4 [get_ports {fan_enb_b}]


Validate Design ボタンをクリックして、デザインをチェックした。
Critical Messages ダイアログが表示された。
axi_intc_0/intr 入力に接続がないというワーニングだったが、これは問題ないようだ。
KR260_45_230121.png

  1. 2023年01月21日 04:27 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

KR260 で Vitis アクセラレーション・プラットフォームを作成する1

KR260 で Vitis アクセラレーション・プラットフォームを作成してみよう。
Accelerated Design Development on Kria KR260 in Vitis 2022.1
Getting Started with the Kria KR260 in Vivado 2022.1
Getting Started with the Kria KR260 in PetaLinux 2022.1
Add Peripheral Support to Kria KR260 Vivado 2022.1 Project
を参考にして進めていく。

今回は、”Getting Started with the Kria KR260 in Vivado 2022.1”に従ってVivado 2022.1 で kr260_custom プロジェクトを作成し、Zynq UltraScale+ MPSoC IP を Add IP して、”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”に従って設定を行った。これは、KR260 のファンのコントロールを取り入れたいからだ。

Vivado 2022.1 で kr260_custom プロジェクトを作成する。

Vivado の Create Project でプロジェクトを作成する。
New Project ダイアログの Project name 画面
Project name に kr260_custom を指定した。
KR260_22_230119.png

Project Type 画面で、Project is an extensible Vitis platform にチェックを入れた。
KR260_22_230119.png

Default Part 画面で、Boards をクリックし、KR260 を選択した。
KR260_24_230119.png

kr260_cunstom プロジェクトが作成された。

Flow Navigator から Create Block Design をクリックして、ブロック・デザインを作成する。
Create Block Design ダイアログが表示された。
Design name に kr260_bd と入力した。
KR260_25_230119.png

Zynq UltraScale+ MPSoC IP を Add IP した。
Run Block Automation をクリックすると、Run Block Automation ダイアログが表示された。
Apply Board Preset にチェックが入っていることを確認して、OK ボタンをクリックした。

Zynq UltraScale+ MPSoC IP をダブルクリックして、設定を行った。
設定は、”Add Peripheral Support to Kria KR260 Vivado 2022.1 Project”を参照してやっていく。

Zynq UltraScale+ MPSoC IP の設定画面で、I/O Configuration をクリックし、 Low Speed > I/O Peripherals と展開して、I2C 1 にチェックを入れて、MIO 24 .. 25 を指定した。
KR260_26_230119.png

SPI 1 にチェックを入れて、MIO 6 .. 11 を指定した。
KR260_37_230119.png

UART 1 にチェックを入れて、 MIO 36 .. 37 指定した。
KR260_27_230119.png

TTC 0 の Waveout にチェックを入れて、EMIO を指定した。
KR260_28_230119.png

High Speed を展開して、GEM 0 と GEM 1 を有効にしたのだが、GEM 0 はリファレンス・クロックの指定がないと怒られたので、GEM 1 だけとした。GEM 1 は MIO 38 .. 49 を指定した。
KR260_29_230119.png

USB 0 、USB 3.0 にチェックを入れた。
USB 3.0 は GT Lane 2 で USB 0 は MIO 52 .. 63 を指定した。
KR260_30_230119.png

USB 1 、USB 3.0 にチェックを入れた。
USB 3.0 は GT Lane 3 で USB 1 は MIO 64 .. 75 を指定した。
KR260_31_230119.png

USB Reset の設定
Reset Polarity を Active Low に指定した。
USB 0 は MIO 76 を USB 1 は MIO 77 を指定した。
KR260_32_230119.png

Display Port はチェックが入っていたので、Lane Selection を Single Lower に指定した。
KR260_33_230119.png

Page Navigator から PS-PL Configuration をクリックした。
General > Fabric Reset Enable にはチェックが入っていたので、Number of Fabric Resets を 4 に指定した。
KR260_34_230119.png

ここから”Getting Started with the Kria KR260 in Vivado 2022.1”に従ってやっていく。
PS-PL Interfaces の AXI HPM0 FPD と AXI HPM1 FPD のチェックを外して、AXI HPM0 LPD にチェックを入れた。
KR260_35_230119.png

これで、Zynq UltraScale+ MPSoC IP の設定は終了したので、OK ボタンをクリックした。
KR260_36_230119.png
  1. 2023年01月20日 05:13 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

”Creating a Vitis Platform”をやってみたが make で失敗した2

”Creating a Vitis Platform”をやってみたが make で失敗した”の続き。

前回は、”Creating a Vitis Platform”をやってみたが、ビルドに失敗した。今回は、なぜビルドに失敗したのかを探っていこう。

Vivado 2022.1 のプロジェクトは kria-vitis-platforms/kr260/platforms/vivado/kr260_tsn_rs485pmod/project にあった。
KR260_15_230118.png

エラーの原因はどうやら、IP Core のライセンスエラーのようだ。これは仕方ないな。。。orz

kr260_tsn_rs485pmod ブロック・デザインを見ていこう。結構大きい。
ブロック・デザイン全体を示す。
KR260_21_230118.png

各部分を拡大した。
KR260_16_230118.png
KR260_17_230118.png
KR260_18_230118.png

Address Editor 画面を示す。
KR260_20_230118.png

もう一度、Vivado で Generate Bitstream を実行してみたが、やはり結果は変わらない。
KR260_20_230118.png
  1. 2023年01月19日 04:55 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

”Creating a Vitis Platform”をやってみたが make で失敗した

Kria KR260 Robotics Starter Kit Applications”の”Creating a Vitis Platform”をやってみたが make でエラーになってしまった。

Creating a Vitis Platform”に沿ってやっていこう。

git clone した。
git clone --branch xlnx_rel_v2022.1 --recursive https://github.com/Xilinx/kria-vitis-platforms.git
KR260_12_230117.png

kria-vitis-platforms/kr260 ディレクトリに行った。
cd kria-vitis-platforms/kr260

make を行った。
make platform PFM=kr260_tsn_rs485pmod JOBS=4
KR260_13_230117.png
KR260_14_230117.png

エラーになってしまった。
エラーの内容は

ERROR: [Common 17-69] Command failed: Need an implemented design open to write bitstream. Aborting write_hw_platform..

だった。
  1. 2023年01月18日 05:32 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた2

”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた1”の続き。

Xilinx 社の”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみることにしたということで、前回は、iot-limerick-kria-classic-desktop-2204-x06-20220614-78.img.xz がダウンロードして Micro SD カードに書き込んだ。今回は、その Micro SD カードを KR260 に挿入して、Ubuntu 22.04 を起動したが、途中でブートが止まってしまった。合計 3 枚の Micro SD カードに Ubuntu イメージを書き込んだが、同様に途中でブートが止まってしまう。困っていたが、Xilinx サポートのアンサーを見て、USB ケーブルを外したところ Ubuntu 22.04 がブートした。

前回書き込んだ Micro SD カードを KR260 に挿入して、USB ケーブル、電源ケーブル(電源は KV260 同一)、Display Port ケーブル、LAN ケーブルを接続した。
KR260_11_230117.jpg

gtkterm を起動してブートを確認していたところ、ブートが途中で止まってしまった。
sudo gtkterm
KR260_8_230116.png

もう一度電源を OFF/ON してみたが、やはりブートが途中で止まってしまった。。。orz
それぞれのブートで止まるところが違うのが謎だ。

Micro SD カードを 2 枚にイメージを書き込んで試してみたが、ブートが途中で止まるのは変わらない。。。
困ってしまったが、”Ubuntu 22.04 LTS Beta for Kria”を見ると USB ケーブルを差し込んだ状態でのブートに問題があって、USB ケーブルを抜くと動作するということだったので、やってみたところ、正常にブートしたようだ。ログインのメッセージが出て、ID が ubuntu 、パスワードも ubuntu でログインすることができた。
やはり、KR260 はベータ版なんだろう?
KR260_9_230116.png

LAN ケーブルを接続してあったので、ifconfig してみたところ、192.168.3.28 の IP アドレスが割当っていた。
KR260_10_230116.png

ある時のブート途中までのブート・ログを貼っておく。

�Xilinx Zynq MP First Stage Boot Loader 
Release 2022.1   Mar 22 2022  -  19:51:22
MultiBootOffset: 0x40
Reset Mode  :   System Reset
Platform: Silicon (4.0), Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
QSPI 32 bit Boot Mode 
FlashID=0x20 0xBB 0x20
�NOTICE:  BL31: v2.6(release):v1.1-9205-gec5dccc32
NOTICE:  BL31: Built : 06:15:49, Mar 22 2022


U-Boot 2022.01 (Mar 21 2022 - 14:42:10 +0000)

CPU:   ZynqMP
Silicon: v3
Detected name: zynqmp-smk-k26-xcl2g-rev1-sck-kr-g-rev1
Model: ZynqMP SMK-K26 Rev1/B/A
Board: Xilinx ZynqMP
DRAM:  4 GiB
PMUFW:  v1.1
Xilinx I2C FRU format at nvmem0:
 Manufacturer Name: XILINX
 Product Name: SMK-K26-XCL2G
 Serial No: XFL1CYY0C2I3
 Part Number: 5057-04
 File ID: 0x0
 Revision Number: 1
Xilinx I2C FRU format at nvmem1:
 Manufacturer Name: XILINX
 Product Name: SCK-KR-G
 Serial No: XFL1V0BJCWOF
 Part Number: 5100-01
 File ID: 0x0
 Revision Number: 1
EL Level:   EL2
Chip ID:    xck26
NAND:  0 MiB
MMC:   
Loading Environment from nowhere... OK
In:    serial
Out:   serial
Err:   serial
Bootmode: QSPI_MODE
Reset reason:   SOFT 
Net:   
ZYNQ GEM: ff0b0000, mdio bus ff0c0000, phyaddr 4, interface sgmii
eth0: ethernet@ff0b0000
ZYNQ GEM: ff0c0000, mdio bus ff0c0000, phyaddr 8, interface rgmii-id
PHY reset timed out
, eth1: ethernet@ff0c0000
starting USB...
Bus usb@fe200000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
Bus usb@fe300000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@fe200000 for devices... 5 USB Device(s) found
scanning bus usb@fe300000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot:  0 
model=SMK-K26-XCL2G

Device 0: Vendor: Generic  Rev: 1.98 Prod: Ultra HS-COMBO
            Type: Removable Hard Disk
            Capacity: 15193.5 MB = 14.8 GB (31116288 x 512)
... is now current device
Scanning usb 0:1...
Found U-Boot script /boot.scr.uimg
5980 bytes read in 14 ms (417 KiB/s)
## Executing script at 20000000
Selecting DT for Kria boards
Kria DT: #conf-smk-k26-revA-sck-kr-g-revB
Configuring the cma value based on the board type
cma=1000M
Loading image.fit
74448580 bytes read in 5085 ms (14 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf-smk-k26-revA-sck-kr-g-revB' configuration
   Trying 'kernel-1' kernel subimage
     Description:  Ubuntu kernel
     Created:      2022-06-14  11:00:09 UTC
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x100000ec
     Data Size:    19160045 Bytes = 18.3 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x00200000
     Entry Point:  0x00200000
     Hash algo:    sha1
     Hash value:   10f900494ab6c08729a1c5d2b1bb8f8b13c67e30
   Verifying Hash Integrity ... sha1+ OK
## Loading ramdisk from FIT Image at 10000000 ...
   Using 'conf-smk-k26-revA-sck-kr-g-revB' configuration
   Trying 'ramdisk-1' ramdisk subimage
     Description:  Ubuntu ramdisk
     Created:      2022-06-14  11:00:09 UTC
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x11245dcc
     Data Size:    55075360 Bytes = 52.5 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha1
     Hash value:   0d688311fae323e3751e1f3a2e9c2fcc35f5be97
   Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf-smk-k26-revA-sck-kr-g-revB' configuration
   Trying 'fdt-smk-k26-revA-sck-kr-g-revB.dtb' fdt subimage
     Description:  Flattened device tree blob - smk-k26-revA-sck-kr-g-revB
     Created:      2022-06-14  11:00:09 UTC
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x146ea7f0
     Data Size:    43088 Bytes = 42.1 KiB
     Architecture: AArch64
     Load Address: 0x44000000
     Hash algo:    sha1
     Hash value:   6b8f4e9f0548c17b5df813e42750117763d2ebb5
   Verifying Hash Integrity ... sha1+ OK
   Loading fdt from 0x146ea7f0 to 0x44000000
   Booting using the fdt blob at 0x44000000
   Uncompressing Kernel Image
   Loading Ramdisk to 75b79000, end 78fff220 ... OK
   Loading Device Tree to 000000000fff2000, end 000000000ffff84f ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.0-1010-xilinx-zynqmp (buildd@bos02-arm64-012) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #11-Ubuntu SMP Tue Jun 7 15:25:24 UTC 2022 (Ubuntu 5.15.0-1010.11-xilinx-zynqmp 5.15.30)
[    0.000000] Machine model: ZynqMP SMK-K26 Rev1/B/A
[    0.000000] efi: UEFI not found.
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x87f7caf80-0x87f7cffff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000]   node   0: [mem 0x0000000800000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] cma: Reserved 1008 MiB at 0x0000000036000000
[    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 30 pages/cpu s83416 r8192 d31272 u122880
[    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: 1032192
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line:  earlycon root=LABEL=writable rootwait console=ttyPS1,115200 console=tty1 clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio xilinx_tsn_ep.st_pcp=4 cma=1000M 
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:on, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x000000007c000000-0x0000000080000000] (64MB)
[    0.000000] Memory: 2904508K/4194304K available (22464K kernel code, 4508K rwdata, 18444K rodata, 9920K init, 1365K bss, 257604K reserved, 1032192K cma-reserved)
[    0.000000] random: get_random_u64 called from kmem_cache_open+0x30/0x350 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 72553 entries in 284 pages
[    0.000000] ftrace: allocated 284 pages with 4 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000]  Rude variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171015c90f, max_idle_ns: 440795203080 ns
[    0.000000] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
[    0.008673] Console: colour dummy device 80x25
[    0.012369] printk: console [tty1] enabled
[    0.016438] printk: bootconsole [cdns0] disabled
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.0-1010-xilinx-zynqmp (buildd@bos02-arm64-012) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #11-Ubuntu SMP Tue Jun 7 15:25:24 UTC 2022 (Ubuntu 5.15.0-1010.11-xilinx-zynqmp 5.15.30)
[    0.000000] Machine model: ZynqMP SMK-K26 Rev1/B/A
[    0.000000] efi: UEFI not found.
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x87f7caf80-0x87f7cffff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000]   node   0: [mem 0x0000000800000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] cma: Reserved 1008 MiB at 0x0000000036000000
[    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 30 pages/cpu s83416 r8192 d31272 u122880
[    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: 1032192
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line:  earlycon root=LABEL=writable rootwait console=ttyPS1,115200 console=tty1 clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio xilinx_tsn_ep.st_pcp=4 cma=1000M 
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:on, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x000000007c000000-0x0000000080000000] (64MB)
[    0.000000] Memory: 2904508K/4194304K available (22464K kernel code, 4508K rwdata, 18444K rodata, 9920K init, 1365K bss, 257604K reserved, 1032192K cma-reserved)
[    0.000000] random: get_random_u64 called from kmem_cache_open+0x30/0x350 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 72553 entries in 284 pages
[    0.000000] ftrace: allocated 284 pages with 4 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000]  Rude variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171015c90f, max_idle_ns: 440795203080 ns
[    0.000000] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
[    0.008673] Console: colour dummy device 80x25
[    0.012369] printk: console [tty1] enabled
[    0.016438] printk: bootconsole [cdns0] disabled
[    0.021098] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.99 BogoMIPS (lpj=399996)
[    0.021117] pid_max: default: 32768 minimum: 301
[    0.021204] LSM: Security Framework initializing
[    0.021235] landlock: Up and running.
[    0.021242] Yama: becoming mindful.
[    0.021323] AppArmor: AppArmor initialized
[    0.021415] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.021439] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.022934] rcu: Hierarchical SRCU implementation.
[    0.025627] EFI services will not be available.
[    0.026005] smp: Bringing up secondary CPUs ...
[    0.177169] Detected VIPT I-cache on CPU1
[    0.177221] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.450312] Detected VIPT I-cache on CPU2
[    0.450338] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.729148] Detected VIPT I-cache on CPU3
[    0.729171] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.729233] smp: Brought up 1 node, 4 CPUs
[    0.729270] SMP: Total of 4 processors activated.
[    0.729279] CPU features: detected: 32-bit EL0 Support
[    0.729289] CPU features: detected: 32-bit EL1 Support
[    0.729298] CPU features: detected: CRC32 instructions
[    0.729352] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.741932] CPU: All CPU(s) started at EL2
[    0.741974] alternatives: patching kernel code
[    0.743565] devtmpfs: initialized
[    0.751271] Registered cp15_barrier emulation handler
[    0.751294] Registered setend emulation handler
[    0.751307] KASLR disabled due to lack of seed
[    0.751473] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.751506] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.783184] pinctrl core: initialized pinctrl subsystem
[    0.783840] DMI not present or invalid.
[    0.784245] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.788752] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.788979] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.789299] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.789349] audit: initializing netlink subsys (disabled)
[    0.789467] audit: type=2000 audit(0.776:1): state=initialized audit_enabled=0 res=1
[    0.790486] thermal_sys: Registered thermal governor 'fair_share'
[    0.790492] thermal_sys: Registered thermal governor 'bang_bang'
[    0.790502] thermal_sys: Registered thermal governor 'step_wise'
[    0.790512] thermal_sys: Registered thermal governor 'user_space'
[    0.790521] thermal_sys: Registered thermal governor 'power_allocator'
[    0.790632] cpuidle: using governor ladder
[    0.790661] cpuidle: using governor menu
[    0.790962] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.791049] ASID allocator initialised with 65536 entries
[    0.792079] Serial: AMBA PL011 UART driver
[    0.818673] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.818704] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.818715] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.818726] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.889829] raid6: neonx8   gen()  2376 MB/s
[    0.957882] raid6: neonx8   xor()  1766 MB/s
[    1.025945] raid6: neonx4   gen()  2447 MB/s
[    1.094006] raid6: neonx4   xor()  1730 MB/s
[    1.162075] raid6: neonx2   gen()  2315 MB/s
[    1.230125] raid6: neonx2   xor()  1592 MB/s
[    1.298186] raid6: neonx1   gen()  1990 MB/s
[    1.366253] raid6: neonx1   xor()  1351 MB/s
[    1.434320] raid6: int64x8  gen()  1518 MB/s
[    1.502376] raid6: int64x8  xor()   860 MB/s
[    1.570432] raid6: int64x4  gen()  1777 MB/s
[    1.638500] raid6: int64x4  xor()   936 MB/s
[    1.706560] raid6: int64x2  gen()  1555 MB/s
[    1.774619] raid6: int64x2  xor()   830 MB/s
[    1.842688] raid6: int64x1  gen()  1151 MB/s
[    1.910745] raid6: int64x1  xor()   575 MB/s
[    1.910755] raid6: using algorithm neonx4 gen() 2447 MB/s
[    1.910764] raid6: .... xor() 1730 MB/s, rmw enabled
[    1.910773] raid6: using neon recovery algorithm
[    1.911608] fbcon: Taking over console
[    1.911638] ACPI: Interpreter disabled.
[    1.912697] iommu: Default domain type: Translated 
[    1.912709] iommu: DMA domain TLB invalidation policy: strict mode 
[    1.913574] SCSI subsystem initialized
[    1.913830] vgaarb: loaded
[    1.913960] usbcore: registered new interface driver usbfs
[    1.913999] usbcore: registered new interface driver hub
[    1.914028] usbcore: registered new device driver usb
[    1.914243] mc: Linux media interface: v0.10
[    1.914270] videodev: Linux video capture interface: v2.00
[    1.914346] pps_core: LinuxPPS API ver. 1 registered
[    1.914356] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.914377] PTP clock support registered
[    1.914554] EDAC MC: Ver: 3.0.0
[    1.915419] zynqmp-ipi-mbox mailbox@ff990400: Registered ZynqMP IPI mbox with TX/RX channels.
[    1.915844] FPGA manager framework
[    1.915981] Advanced Linux Sound Architecture Driver Initialized.
[    1.916535] NetLabel: Initializing
[    1.916544] NetLabel:  domain hash size = 128
[    1.916553] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    1.916612] NetLabel:  unlabeled traffic allowed by default
[    1.917245] clocksource: Switched to clocksource arch_sys_counter
[    1.980510] VFS: Disk quotas dquot_6.6.0
[    1.980585] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.981117] AppArmor: AppArmor Filesystem Enabled
[    1.981186] pnp: PnP ACPI: disabled
[    1.986983] NET: Registered PF_INET protocol family
[    1.987129] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    1.988588] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    1.988703] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    1.988964] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    1.989400] TCP: Hash tables configured (established 32768 bind 32768)
[    1.989567] MPTCP token hash table entries: 4096 (order: 4, 98304 bytes, linear)
[    1.989672] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    1.989756] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    1.989934] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    1.990312] RPC: Registered named UNIX socket transport module.
[    1.990324] RPC: Registered udp transport module.
[    1.990332] RPC: Registered tcp transport module.
[    1.990340] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.990351] NET: Registered PF_XDP protocol family
[    1.990366] PCI: CLS 0 bytes, default 64
[    1.990552] Trying to unpack rootfs image as initramfs...
[    2.612598] armv8-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
[    2.613473] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    2.613845] kvm [1]: IPA Size Limit: 40 bits
[    2.617948] kvm [1]: vgic interrupt IRQ9
[    2.618127] kvm [1]: Hyp mode initialized successfully
[    2.620379] Initialise system trusted keyrings
[    2.620442] Key type blacklist registered
[    2.620584] workingset: timestamp_bits=40 max_order=20 bucket_order=0
[    2.625652] zbud: loaded
[    2.626847] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    2.628034] NFS: Registering the id_resolver key type
[    2.628076] Key type id_resolver registered
[    2.628085] Key type id_legacy registered
[    2.628162] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    2.628180] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    2.628212] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    2.628539] fuse: init (API version 7.34)
[    2.629073] integrity: Platform Keyring initialized
[    2.661228] NET: Registered PF_ALG protocol family
[    2.661310] xor: measuring software checksum speed
[    2.665068]    8regs           :  2625 MB/sec
[    2.668280]    32regs          :  3108 MB/sec
[    2.672150]    arm64_neon      :  2596 MB/sec
[    2.672182] xor: using function: 32regs (3108 MB/sec)
[    2.672200] Key type asymmetric registered
[    2.672210] Asymmetric key parser 'x509' registered
[    2.672320] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 238)
[    2.672555] io scheduler mq-deadline registered
[    2.672567] io scheduler kyber registered
[    2.679126] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    2.729539] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    2.731720] Serial: AMBA driver
[    2.732225] msm_serial: driver initialized
[    2.733896] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    2.741407] brd: module loaded
[    2.746882] loop: module loaded
[    2.748141] SPI driver altr_a10sr has no spi_device_id for altr,a10sr
[    2.751035] mtdoops: mtd device (mtddev=name/number) must be supplied
[    2.753810] tun: Universal TUN/TAP device driver, 1.6
[    2.755268] PPP generic driver version 2.4.2
[    2.755618] usbcore: registered new interface driver asix
[    2.755689] usbcore: registered new interface driver ax88179_178a
[    2.755722] usbcore: registered new interface driver cdc_ether
[    2.755754] usbcore: registered new interface driver net1080
[    2.755806] usbcore: registered new interface driver cdc_subset
[    2.755838] usbcore: registered new interface driver zaurus
[    2.755879] usbcore: registered new interface driver cdc_ncm
[    2.756664] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.756694] ehci-pci: EHCI PCI platform driver
[    2.756730] ehci-orion: EHCI orion driver
[    2.756815] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.756833] ohci-pci: OHCI PCI platform driver
[    2.756871] uhci_hcd: USB Universal Host Controller Interface driver
[    2.757374] usbcore: registered new interface driver uas
[    2.757425] usbcore: registered new interface driver usb-storage
[    2.757813] mousedev: PS/2 mouse device common for all mice
[    2.758445] i2c_dev: i2c /dev entries driver
[    2.760299] usbcore: registered new interface driver uvcvideo
[    2.762302] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    2.762445] device-mapper: uevent: version 1.0.3
[    2.762719] device-mapper: ioctl: 4.45.0-ioctl (2021-03-22) initialised: dm-devel@redhat.com
[    2.763159] EDAC MC: ECC not enabled
[    2.763348] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    2.764808] sdhci: Secure Digital Host Controller Interface driver
[    2.764831] sdhci: Copyright(c) Pierre Ossman
[    2.764839] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.766342] ledtrig-cpu: registered to indicate activity on CPUs
[    2.767310] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    2.767510] zynqmp_firmware_probe Platform Management API v1.1
[    2.767524] zynqmp_firmware_probe Trustzone version v1.0
[    2.805813] securefw securefw: securefw probed
[    2.806225] zynqmp-aes firmware:zynqmp-firmware:zynqmp-aes: will run requests pump with realtime priority
[    2.807129] hid: raw HID events driver (C) Jiri Kosina
[    2.812857] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    2.813702] usbcore: registered new interface driver snd-usb-audio
[    2.815280] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    2.822504] drop_monitor: Initializing network drop monitor service
[    2.822690] Initializing XFRM netlink socket
[    2.823171] NET: Registered PF_INET6 protocol family
[    3.841557] Freeing initrd memory: 53784K
[    3.866358] Segment Routing with IPv6
[    3.866435] In-situ OAM (IOAM) with IPv6
[    3.866510] NET: Registered PF_PACKET protocol family
[    3.866637] 8021q: 802.1Q VLAN Support v1.8
[    3.866970] Key type dns_resolver registered
[    3.867764] registered taskstats version 1
[    3.867929] Loading compiled-in X.509 certificates
[    3.870543] Loaded X.509 cert 'Build time autogenerated kernel key: ca7c283d7277384bde595c4d3cf06f120c16ccb3'
[    3.872881] Loaded X.509 cert 'Canonical Ltd. Live Patch Signing: 14df34d1a87cf37625abec039ef2bf521249b969'
[    3.875358] Loaded X.509 cert 'Canonical Ltd. Kernel Module Signing: 88f752e560a1e0737e31163a466ad7b70a850c19'
[    3.875373] blacklist: Loading compiled-in revocation X.509 certificates
[    3.875440] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing: 61482aa2830d0ab2ad5af10b7250da9033ddcef0'
[    3.875741] zswap: loaded using pool lzo/zbud
[    3.876155] Key type ._fscrypt registered
[    3.876166] Key type .fscrypt registered
[    3.876174] Key type fscrypt-provisioning registered
[    3.878311] Btrfs loaded, crc32c=crc32c-generic, zoned=yes, fsverity=yes
[    3.977133] cryptd: max_cpu_qlen set to 1000
[    4.004885] Key type encrypted registered
[    4.004927] AppArmor: AppArmor sha1 policy hashing enabled
[    4.004962] ima: No TPM chip found, activating TPM-bypass!
[    4.004995] Loading compiled-in module X.509 certificates
[    4.007404] Loaded X.509 cert 'Build time autogenerated kernel key: ca7c283d7277384bde595c4d3cf06f120c16ccb3'
[    4.007425] ima: Allocated hash algorithm: sha1
[    4.007459] ima: No architecture policies found
[    4.007505] evm: Initialising EVM extended attributes:
[    4.007515] evm: security.selinux
[    4.007522] evm: security.SMACK64
[    4.007529] evm: security.SMACK64EXEC
[    4.007536] evm: security.SMACK64TRANSMUTE
[    4.007544] evm: security.SMACK64MMAP
[    4.007551] evm: security.apparmor
[    4.007558] evm: security.ima
[    4.007564] evm: security.capability
[    4.007571] evm: HMAC attrs: 0x1
[    4.019528] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 51, base_baud = 6249999) is a xuartps
[    5.612692] printk: console [ttyPS1] enabled
[    5.872006] of-fpga-region fpga-full: FPGA Region probed
[    6.120481] xilinx-zynqmp-dma fd500000.dma-controller: ZynqMP DMA driver Probe success
[    6.128868] xilinx-zynqmp-dma fd510000.dma-controller: ZynqMP DMA driver Probe success
[    6.137224] xilinx-zynqmp-dma fd520000.dma-controller: ZynqMP DMA driver Probe success
[    6.145563] xilinx-zynqmp-dma fd530000.dma-controller: ZynqMP DMA driver Probe success
[    6.153901] xilinx-zynqmp-dma fd540000.dma-controller: ZynqMP DMA driver Probe success
[    6.162232] xilinx-zynqmp-dma fd550000.dma-controller: ZynqMP DMA driver Probe success
[    6.170564] xilinx-zynqmp-dma fd560000.dma-controller: ZynqMP DMA driver Probe success
[    6.178891] xilinx-zynqmp-dma fd570000.dma-controller: ZynqMP DMA driver Probe success
[    6.187303] xilinx-zynqmp-dma ffa80000.dma-controller: ZynqMP DMA driver Probe success
[    6.195645] xilinx-zynqmp-dma ffa90000.dma-controller: ZynqMP DMA driver Probe success
[    6.203980] xilinx-zynqmp-dma ffaa0000.dma-controller: ZynqMP DMA driver Probe success
[    6.212308] xilinx-zynqmp-dma ffab0000.dma-controller: ZynqMP DMA driver Probe success
[    6.220659] xilinx-zynqmp-dma ffac0000.dma-controller: ZynqMP DMA driver Probe success
[    6.229010] xilinx-zynqmp-dma ffad0000.dma-controller: ZynqMP DMA driver Probe success
[    6.237346] xilinx-zynqmp-dma ffae0000.dma-controller: ZynqMP DMA driver Probe success
[    6.245686] xilinx-zynqmp-dma ffaf0000.dma-controller: ZynqMP DMA driver Probe success
[    6.254421] xilinx-zynqmp-dpdma fd4c0000.dma-controller: Xilinx DPDMA engine is probed
[    6.303986] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
[    6.651356] macb ff0b0000.ethernet: Not enabling partial store and forward
[   10.440559] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 37 (00:0a:35:0f:2b:0e)
[   10.452982] macb ff0c0000.ethernet: Not enabling partial store and forward
[   10.495131] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[   10.502174] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
[   10.509010] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
[   10.515845] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
[   10.525977] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer with timeout 60s
[   10.533802] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer with timeout 10s
[   10.544479] macb ff0c0000.ethernet: Not enabling partial store and forward
[   10.551417] macb ff0c0000.ethernet: invalid hw address, using random
[   10.590155] macb ff0c0000.ethernet: Not enabling partial store and forward
[   10.597099] macb ff0c0000.ethernet: invalid hw address, using random
[   10.927106] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[   11.174984] macb ff0c0000.ethernet: Not enabling partial store and forward
[   11.181935] macb ff0c0000.ethernet: invalid hw address, using random
[   11.672980] of_cfs_init
[   11.675492] of_cfs_init: OK
[   11.678547] clk: Not disabling unused clocks
[   11.683077] ALSA device list:
[   11.686055]   No soundcards found.
[   11.697450] Freeing unused kernel memory: 9920K
[   11.847839] Checked W+X mappings: passed, no W+X pages found
[   11.853591] Run /init as init process
[   13.200617] macb ff0c0000.ethernet: Not enabling partial store and forward
[   13.201905] at24 1-0050: supply vcc not found, using dummy regulator
[   13.207648] macb ff0c0000.ethernet: invalid hw address, using random
[   13.245780] zynqmp-display fd4a0000.display: vtc bridge property not present
[   13.253395] at24 1-0050: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[   13.266035] at24 1-0051: supply vcc not found, using dummy regulator
[   13.273408] spi-nor spi0.0: mt25qu512a (65536 Kbytes)
[   13.282374] xilinx-dp-snd-codec fd4a0000.display:zynqmp_dp_snd_codec0: Xilinx DisplayPort Sound Codec probed
[   13.285463] 16 fixed-partitions partitions found on MTD device spi0.0
[   13.285996] at24 1-0051: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[   13.289269] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 40
[   13.294068] macb ff0c0000.ethernet eth1: Cadence GEM rev 0x50070106 at 0xff0c0000 irq 38 (de:db:1b:80:8f:8c)
[   13.298674] Creating 16 MTD partitions on "spi0.0":
[   13.298686] 0x000000000000-0x000000080000 : "Image Selector"
[   13.313655] rtc_zynqmp ffa60000.rtc: registered as rtc0
[   13.333339] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm0: Xilinx DisplayPort Sound PCM probed
[   13.336992] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01T00:00:16 UTC (16)
[   13.352039] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm1: Xilinx DisplayPort Sound PCM probed
[   13.407430] 0x000000080000-0x000000100000 : "Image Selector Golden"
[   13.433375] xilinx-dp-snd-card fd4a0000.display:zynqmp_dp_snd_card: Xilinx DisplayPort Sound Card probed
[   13.444953] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   13.450776] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[   13.451532] OF: graph: no port node found in /axi/display@fd4a0000
[   13.458619] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010810
[   13.462029] 0x000000100000-0x000000120000 : "Persistent Register"
[   13.463194] 0x000000120000-0x000000140000 : "Persistent Register Backup"
[   13.464228] 0x000000140000-0x000000200000 : "Open_1"
[   13.465353] 0x000000200000-0x000000f00000 : "Image A (FSBL, PMU, ATF, U-Boot)"
[   13.474257] xhci-hcd xhci-hcd.1.auto: irq 58, io mem 0xfe200000
[   13.484749] 0x000000f00000-0x000000f80000 : "ImgSel Image A Catch"
[   13.487221] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[   13.499552] 0x000000f80000-0x000001c80000 : "Image B (FSBL, PMU, ATF, U-Boot)"
[   13.499594] xlnx-drm xlnx-drm.0: bound fd4a0000.display (ops zynqmp_dpsub_component_ops [zynqmp_dpsub])
[   13.505180] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.505198] usb usb1: Product: xHCI Host Controller
[   13.505203] usb usb1: Manufacturer: Linux 5.15.0-1010-xilinx-zynqmp xhci-hcd
[   13.505207] usb usb1: SerialNumber: xhci-hcd.1.auto
[   13.633832] hub 1-0:1.0: USB hub found
[   13.633899] hub 1-0:1.0: 1 port detected
[   13.654160] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   13.654185] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[   13.654201] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[   13.654450] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[   13.654459] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.654465] usb usb2: Product: xHCI Host Controller
[   13.654469] usb usb2: Manufacturer: Linux 5.15.0-1010-xilinx-zynqmp xhci-hcd
[   13.654474] usb usb2: SerialNumber: xhci-hcd.1.auto
[   13.654976] hub 2-0:1.0: USB hub found
[   13.655010] hub 2-0:1.0: 1 port detected
[   13.660651] 0x000001c80000-0x000001d00000 : "ImgSel Image B Catch"
[   13.662727] 0x000001d00000-0x000001e00000 : "Open_2"
[   13.665879] 0x000001e00000-0x000002000000 : "Recovery Image"
[   13.667831] 0x000002000000-0x000002200000 : "Recovery Image Backup"
[   13.672560] 0x000002200000-0x000002220000 : "U-Boot storage variables"
[   13.674973] 0x000002220000-0x000002240000 : "U-Boot storage variables backup"
[   13.683929] 0x000002240000-0x000002250000 : "SHA256"
[   13.684558] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   13.684584] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[   13.684721] xhci-hcd xhci-hcd.2.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010810
[   13.684770] xhci-hcd xhci-hcd.2.auto: irq 61, io mem 0xfe300000
[   13.685509] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[   13.685520] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.685526] usb usb3: Product: xHCI Host Controller
[   13.685530] usb usb3: Manufacturer: Linux 5.15.0-1010-xilinx-zynqmp xhci-hcd
[   13.685535] usb usb3: SerialNumber: xhci-hcd.2.auto
[   13.689600] hub 3-0:1.0: USB hub found
[   13.689644] hub 3-0:1.0: 1 port detected
[   13.691322] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   13.691343] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[   13.691363] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[   13.691617] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[   13.691627] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.691633] usb usb4: Product: xHCI Host Controller
[   13.691637] usb usb4: Manufacturer: Linux 5.15.0-1010-xilinx-zynqmp xhci-hcd
[   13.691642] usb usb4: SerialNumber: xhci-hcd.2.auto
[   13.693578] hub 4-0:1.0: USB hub found
[   13.693632] hub 4-0:1.0: 1 port detected
[   13.697389] Console: switching to colour frame buffer device 240x67
[   13.699256] 0x000002250000-0x000004000000 : "User"
[   13.977333] zynqmp-display fd4a0000.display: [drm] fb0: xlnxdrmfb frame buffer device
[   13.979395] i2c i2c-1: Added multiplexed i2c bus 3
[   13.995313] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[   14.005257] i2c i2c-1: Added multiplexed i2c bus 4
[   14.007295] da9121 1-0033: Device detected (device-ID: 0x05, var-ID: 0x21, DA9131)
[   14.017818] i2c i2c-1: Added multiplexed i2c bus 5
[   14.029680] [drm] Initialized xlnx 1.0.0 20130509 for fd4a0000.display on minor 0
[   14.040616] usb 4-1: new SuperSpeed USB device number 2 using xhci-hcd
[   14.041917] zynqmp-display fd4a0000.display: ZynqMP DisplayPort Subsystem driver probed
[   14.051652] i2c i2c-1: Added multiplexed i2c bus 6
[   14.062317] random: fast init done
[   14.074783] usb 4-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[   14.085763] usb 4-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[   14.093331] pca954x 1-0074: registered 4 multiplexed busses for I2C switch pca9546
[   14.095652] usb 4-1: Product: USB5744
[   14.103657] da9121 1-0032: Device detected (device-ID: 0x05, var-ID: 0x20, DA9130)
[   14.122536] usb 4-1: Manufacturer: Microchip Tech
[   14.154444] usb 1-1: New USB device found, idVendor=0424, idProduct=2744, bcdDevice= 2.21
[   14.165397] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   14.175219] usb 1-1: Product: USB2744
[   14.181502] usb 1-1: Manufacturer: Microchip Tech
[   14.219638] hub 4-1:1.0: USB hub found
[   14.226335] hub 4-1:1.0: 2 ports detected
[   14.233142] hub 1-1:1.0: USB hub found
[   14.239493] hub 1-1:1.0: 4 ports detected
[   14.294249] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
[   15.600865] usb 2-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[   15.611679] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[   15.621426] usb 2-1: Product: USB5744
[   15.627675] usb 2-1: Manufacturer: Microchip Tech
[   15.686689] hub 2-1:1.0: USB hub found
[   15.693194] hub 2-1:1.0: 3 ports detected
[   16.629259] usb 1-1.1: new high-speed USB device number 3 using xhci-hcd
[   19.332984] usb 1-1.1: New USB device found, idVendor=0424, idProduct=2240, bcdDevice= 1.98
[   19.343926] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   19.353820] usb 1-1.1: Product: Ultra Fast Media 
[   19.361109] usb 1-1.1: Manufacturer: Generic
[   19.367949] usb 1-1.1: SerialNumber: 000000225001
[   19.498479] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[   19.507764] scsi host0: usb-storage 1-1.1:1.0
[   19.811423] random: crng init done
[   19.851708] usb 1-1.4: new high-speed USB device number 4 using xhci-hcd
[   19.970064] usb 1-1.4: New USB device found, idVendor=0424, idProduct=2740, bcdDevice= 2.00
[   19.981187] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   19.991200] usb 1-1.4: Product: Hub Controller
[   19.998324] usb 1-1.4: Manufacturer: Microchip Tech
[   20.783828] scsi 0:0:0:0: Direct-Access     Generic  Ultra HS-COMBO   1.98 PQ: 0 ANSI: 0
[   20.795528] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   20.804594] sd 0:0:0:0: [sda] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB)
[   20.815642] sd 0:0:0:0: [sda] Write Protect is off
[   20.823788] sd 0:0:0:0: [sda] No Caching mode page found
[   20.831833] sd 0:0:0:0: [sda] Assuming drive cache: write through
[   24.547804]  sda: sda1 sda2
[   24.555597] sd 0:0:0:0: [sda] Attached SCSI removable disk
[   24.808178] async_tx: api initialized (async)
[  206.825256] xhci-hcd xhci-hcd.1.auto: xHCI host not responding to stop endpoint command.
[  206.836164] xhci-hcd xhci-hcd.1.auto: USBSTS: EINT
[  206.859827] xhci-hcd xhci-hcd.1.auto: xHCI host controller not responding, assume dead
[  206.870534] xhci-hcd xhci-hcd.1.auto: HC died; cleaning up
[  206.878811] usb 1-1: USB disconnect, device number 2
[  206.886576] usb 1-1.1: USB disconnect, device number 3
[  206.886607] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=36s
[  206.894688] usb 2-1: USB disconnect, device number 2
[  206.906881] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 20 09 10 00 00 f0 00
[  206.924753] blk_update_request: I/O error, dev sda, sector 2099472 op 0x0:(READ) flags 0x80700 phys_seg 30 prio class 0
[  207.043519] blk_update_request: I/O error, dev sda, sector 2099472 op 0x0:(READ) flags 0x0 phys_seg 8 prio class 0
[  207.056786] Buffer I/O error on dev sda2, logical block 272, async page read
[  207.066693] Buffer I/O error on dev sda2, logical block 273, async page read
[  207.076550] Buffer I/O error on dev sda2, logical block 274, async page read
[  207.086367] Buffer I/O error on dev sda2, logical block 275, async page read
[  207.096141] Buffer I/O error on dev sda2, logical block 276, async page read
[  207.105871] Buffer I/O error on dev sda2, logical block 277, async page read
[  207.115558] Buffer I/O error on dev sda2, logical block 278, async page read
[  207.125228] Buffer I/O error on dev sda2, logical block 279, async page read
[  207.135164] blk_update_request: I/O error, dev sda, sector 2099472 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  207.148175] Buffer I/O error on dev sda2, logical block 272, async page read
[  207.157880] blk_update_request: I/O error, dev sda, sector 2099473 op 0x0:(READ) flags 0x0 phys_seg 7 prio class 0
[  207.170894] Buffer I/O error on dev sda2, logical block 273, async page read
[  207.180667] blk_update_request: I/O error, dev sda, sector 2099472 op 0x0:(READ) flags 0x0 phys_seg 8 prio class 0


(2023/01/18:追記)
KR260 の Ubuntu 22.04 が不安定だ。
ssh でログインして作業しようとすると ssh の応答が無くなってしまう。
  1. 2023年01月17日 04:16 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

Petalinux で petalinux-build が失敗するときの一解決方法

家の Ubuntu 18.04 のパソコンでは Petalinux のビルドに成功するのに職場の Ubuntu 18.04 のパソコンでは Petalinux のビルドに失敗することが多かった。
その原因は Petalinux のインストール・ディスクと異なるディスクで Petalinux のビルドをしていたからだった。同じディスクでビルドすればビルドが成功した。

職場のパソコンには、Transcend の USB インターフェースのディスクが付いていて、そっちで Petalinux のビルドをしていた。
Petalinux はルートのディスクにマウントしたディスクにインストールしてあった。
Transcend のディスクでPetalinux のビルドをすると驚くほど失敗していた。何が悪いのか?ず〜と疑問に思っていた。
例えば、KR260 の Petalinux を /media/masaaki/Transcend/KR260/2022.1/linux_os ディレクトリでビルドしたら

ERROR: pmufw-1.0-r0 do_populate_sysroot: Fatal errors occurred in subprocesses

でビルドが失敗した。
Petalinux_build_2_230116.png

Web 上を検索したところ、”petalinux build error.”が見つかった。それによると Petalinux をインストールしたディスクと同じディスク上でビルドするとうまく行くということだった。

そこで、~/KR260/2022.1/linux_os で Petalinux をビルドすると成功した。
Petalinux_build_1_230116.png

やはり、Petalinux は Petalinux をインストールしたディスクと同じディスク上でビルドする必要があるようだ。
  1. 2023年01月16日 12:47 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0

”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみた1

去年の 9 月に買ってから積み基板になっていた KR260 を使ってみたい。
最初に Xilinx 社の”Kria KR260 ロボティクス スターター キットで 設計開始”をやってみることにした。

Kria™ KR260 ロボティクス スターター キット イメージをダウンロードした。
iot-limerick-kria-classic-desktop-2204-x06-20220614-78.img.xz がダウンロードできた。大きさは 1.7 GB だった。
KR260_4_230115.png

balenaEtcher でダウンロードしたイメージを MicroSD カードに書き込んだ。Micro SD カードの容量は 32 GB だ。
KR260_5_230115.png

system-boot パーティションと writable パーティションができた。
KR260_6_230115.png

KR260_7_230115.png
  1. 2023年01月15日 05:32 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する15(ZYBOが壊れた?)

Zybot でガボール・フィルタを使用して白線間走行する14(コースを新設)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、コースを新設してやってみた。ロボットカーを走らせてみたところ、コース沿いに左に曲がったが、曲がりすぎてしまう。今回は、白線の幅を 19 cm から 21 cm に変更したが、ZYBO の USB コネクタが怪しくなり、QSPI フラッシュと SD カードからのブートに問題が出てしまった。

USB ケーブルを Zybot に接続して FPGA を JTAG からコンフィグレーションしてテストをしてきたが、いよいよコネクタの接触が怪しくなった。コンフィグレーションできなくなったし、USB コネクタを持ち上げないと電源が入らなくなってしまった。

更に QSPI フラッシュと SD カードからのブートの時のガボール・フィルタの画像がおかしい。どちらもノイズが乗りまくっている画像になってしまっている。
Zybot2_120_230114.jpg

何ででしょう?

ZYBO ボードの調子が悪いので、ペンディングとして、KR260 をやってみようと思う。
  1. 2023年01月14日 15:36 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する14(コースを新設)

Zybot でガボール・フィルタを使用して白線間走行する13(白線判断のポイントを確認する)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、白線の位置を判断するポイントがロボットカーからどの程度離れているのか?を確認する。確認の結果、ロボットカーの先端から約 27 cm の位置で判定しているようだった。今回は、コースを新設してやってみた。ロボットカーを走らせてみたところ、コース沿いに左に曲がったが、曲がりすぎてしまう。

前回は白線間のコース幅が 21 cm だったと思うが、今回は、19 cm 幅のコースを白い紙テープで作成してみた。
Zybot2_113_230113.jpg

ロボットカーを直進する位置に置いた。

ガボール・フィルタとラプラシアン・ファイルをスルーしたカメラ画像のディスプレイ表示を示す。
Zybot2_114_230113.jpg

シリアル・インターフェース経由で取得したテキスト・ファイルを画像ファイルに変換した画像を示す。
Zybot2_119_230113.jpg

左白線用パラメータのガボール・フィルタ画像を示す。
Zybot2_115_230113.jpg

シリアル・インターフェース経由で取得したテキスト・ファイルを画像ファイルに変換した画像を示す。
Zybot2_117_230113.jpg

右白線用パラメータのガボール・フィルタ画像を示す。
写真がぶれてしまっている。
Zybot2_116_230113.jpg

シリアル・インターフェース経由で取得したテキスト・ファイルを画像ファイルに変換した画像を示す。
Zybot2_118_230113.jpg

これで走らせてみたところ、左に曲がりすぎてしまう。
スピードが速いのと白線幅が狭いので、左に曲がった際に白線を認識できなくなってしまうのかもしれない?
白線幅を 21 cm にして、以前のモーターの PWM 値で試してみよう。
  1. 2023年01月13日 04:46 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する13(白線判断のポイントを確認する)

Zybot でガボール・フィルタを使用して白線間走行する12(ラプラシアン・フィルタを外してガボール・フィルタだけにする)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、ラプラシアン・フィルタを外してガボール・フィルタだけにしてみたが、白線が認識されているようだ。やはり、キャッシュをインバリデートしていなかったのが痛かった。今回は、白線の位置を判断するポイントがロボットカーからどの程度離れているのか?を確認する。確認の結果、ロボットカーの先端から約 27 cm の位置で判定しているようだった。

今回は、白線判断のポイントを確認するために、ガボール・フィルタもラプラシアン・フィルタもキャンセルして、通常のカメラ画像で確認する。
wl_tracing_gabor_bm.c の 221 行目の

gabor_filter_lh_3_0[10] = (volatile uint32_t)1; // function_r, Gabor_Filter IP ON

をコメントアウトして、下の行に

gabor_filter_lh_3_0[10] = (volatile uint32_t)0; // function_r, Gabor_Filter IP OFF

を追加した。
Zybot2_104_230111.png

最初にロボットカーをコース上に適当に置いてカメラ画像を確認する。
Zybot2_107_230111.jpg

ディスプレイに映った画像を示す。
Zybot2_108_230111.jpg

カメラ画像を取得する。
シリアル・ターミナルでは、一部のデータしか見ることができないので、cu コマンドでファイルに保存する。
最初に /ttyUSB1 の権限を変更した。
sudo chmod o+wr /dev/ttyUSB1

カメラ画像データを
cu -s 115200 -l /dev/ttyUSB1 > line1_230111.txt
で取得した。
終了は ~. を入力した。

取得したテキスト・ファイルを bmp ファイルに変換する。(”テキスト・ファイルを画像ファイル(bmp ファイル)に変換するソフトウェアを作成する”を参照)
./txt2bmp line1_230111.txt line1_230111.bmp
Zybot2_105_230111.png

line1_230111.bmp を示す。
Zybot2_111_230111.jpg

ロボットカーから白線判断のポイントが結構離れているようなので、大体の距離を測定する。
ロボットカーのカメラから白線がカーブから直線になるポイントを映すようにロボットカーの位置を微調整した。
Zybot2_109_230111.jpg

ロボットカーからのカメラ画像を示す。
Zybot2_110_230111.jpg

距離を測定すると、ロボットカーの先端から白線がカーブから直線になるポイントの距離は大体 27 cm 程度だった。

カメラ画像を取得する。
シリアル・ターミナルでは、一部のデータしか見ることができないので、cu コマンドでファイルに保存する。
最初に /ttyUSB1 の権限を変更した。
sudo chmod o+wr /dev/ttyUSB1

カメラ画像データを
cu -s 115200 -l /dev/ttyUSB1 > line2_230111.txt
で取得した。
終了は ~. を入力した。

取得したテキスト・ファイルを bmp ファイルに変換する。(”テキスト・ファイルを画像ファイル(bmp ファイル)に変換するソフトウェアを作成する”を参照)
./txt2bmp line2_230111.txt line2_230111.bmp
Zybot2_106_230111.png

line2_230111.bmp を示す。
Zybot2_112_230111.jpg
  1. 2023年01月11日 05:17 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する12(ラプラシアン・フィルタを外してガボール・フィルタだけにする)

Zybot でガボール・フィルタを使用して白線間走行する11(アプリケーション・ソフトを更新してテスト)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、ハードウェアをエクスポートして、Vitis を立ち上げアプリケーション・ソフトウェアをハードウェアの変更に合わせて更新し、Zybot でテストしたところうまく行っているようだった。今回は、ラプラシアン・フィルタを外してガボール・フィルタだけにしてみたが、白線が認識されているようだ。やはり、キャッシュをインバリデートしていなかったのが痛かった。

前回までは、ガボール・フィルタをかけてからラプラシアン・フィルタをかけていたが、今回は、ラプラシアン・フィルタをスルーにしてガボール・フィルタだけをかけてみよう。
wl_tracking_gabor_bm.c の 226行目の

lap_filter_axis_0[10] = (volatile uint32_t)1; // function_r, Lap_Filter IP ON

をコメントアウトして、下の行に

lap_filter_axis_0[10] = (volatile uint32_t)0; // function_r, Lap_Filter IP OFF

を追加した。
Zybot2_103_230110.png

これでビルドして、ZYBO に書き込んだ。

ガボール・フィルタの左白線用パラメータの画像と右白線用パラメータの画像を取得する。
シリアル・ターミナルでは、一部のデータしか見ることができないので、cu コマンドでファイルに保存する。
最初に /ttyUSB1 の権限を変更した。
sudo chmod o+wr /dev/ttyUSB1

左白線パラメータでのガボール・フィルタのデータを
cu -s 115200 -l /dev/ttyUSB1 > gabor_left1_230110.txt
で取得した。
終了は ~. を入力した。

右白線パラメータでのガボール・フィルタのデータを
cu -s 115200 -l /dev/ttyUSB1 > gabor_right1_230110.txt
で取得した。
終了は ~. を入力した。

取得したテキスト・ファイルを bmp ファイルに変換する。(”テキスト・ファイルを画像ファイル(bmp ファイル)に変換するソフトウェアを作成する”を参照)
txt2bmp 実行ファイルを使用して、gabor_left2_230107.txt と gabor_right2_230107.txt を画像ファイル(bmp ファイル)に変換する。
./txt2bmp gabor_left1_230110.txt gabor_left1_230110.bmp
./txt2bmp gabor_right1_230110.txt gabor_right1_230110.bmp

bmp ファイルが生成された。
Zybot2_100_230110.png

Zybot2_101_230110.png

gabor_left1_230110.bmp と gabor_right1_230110.bmp を示す。
ラプラシアン・ファイルを更にかけるよりも、ガボール・フィルタだけのほうが綺麗な画像になっている。
Zybot2_102_230110.jpg
  1. 2023年01月10日 05:06 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

テキスト・ファイルを画像ファイル(bmp ファイル)に変換するソフトウェアを作成する

Zybot でガボール・フィルタを使用して白線間走行する11(アプリケーション・ソフトを更新してテスト)”で作成した gabor_left2_230107.txt と gabor_right2_230107.txt を画像ファイル(bmp ファイル)に変換するソフトウェアを作成し、変換した。

テキスト・ファイルを画像ファイル(bmp ファイル)に変換するソフトウェア txt2bmp.c を示す。

// txt2bmp.c
// 2023/01/08 by marsee

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <fcntl.h>
#include <stdint.h>
#include <string.h>

#include "bmp_header.h"

#define HORIZONTAL_PIXEL    800
#define VERTICAL_LINES      600

int main(int argc, char * argv[])
{
    BITMAPFILEHEADER bmpfh; // BMPファイルのファイルヘッダ
    BITMAPINFOHEADER bmpih; // BMPファイルのINFOヘッダ
    FILE *fbmpr, *fbmpw;
    uint8_t linet[200];
    uint8_t num_buf[10], c;
    uint32_t *bmp_data;
    uint8_t blue, green, red;

    // 引数の処理
    if (argc != 3) {
        fprintf(stderr, "txt2bmp <txt file name> <BMP file name>\n");
        exit(1);
    }

    // ピクセルを入れるメモリをアロケートする
    if ((bmp_data =(uint32_t *)malloc(sizeof(uint32_t) * (HORIZONTAL_PIXEL*VERTICAL_LINES))) == NULL){
        fprintf(stderr, "Can't allocate rd_bmp memory\n");
        exit(1);
    }

    // text ファイルをオープン
    if ((fbmpr = fopen(argv[1], "rt")) == NULL){
        fprintf(stderr, "Can't open %s by text read mode\n", argv[1]);
        exit(1);
    }

    // 書き込み bmp ファイルをオープン
    if ((fbmpw=fopen(argv[2], "wb")) == NULL){
        fprintf(stderr, "Can't open %s binary write mode\n", argv[2]);
        exit(1);
    }

    fscanf(fbmpr, "%s\n", linet);
    uint32_t line_num = (uint32_t)strlen(linet)/2;
    uint32_t limit_line = (HORIZONTAL_PIXEL*VERTICAL_LINES+(line_num-1))/line_num;
    fseek(fbmpr, 0, SEEK_SET); // ポインタ位置をファイルのはじめに戻す
    for (int i=0; i<limit_line; i++){
        fscanf(fbmpr, "%s\n", linet);
        uint32_t cline_char = (uint32_t)strlen(linet);
        for (int j=0; j<cline_char; j+=2){
            strncpy(num_buf, &linet[j], 2);
            num_buf[2] = '\0';
            sscanf(num_buf, "%x", (const char *)&c);
            bmp_data[i*line_num+j/2] = (c<<16)+(c<<8)+c;
        }
    }

    // BMPファイルのファイルヘッダに値を代入
    bmpfh.bfType = 0x4d42;
    bmpfh.bfSize = HORIZONTAL_PIXEL*VERTICAL_LINES*3+54;
    bmpfh.bfReserved1 = 0;
    bmpfh.bfReserved2 = 0;
    bmpfh.bfOffBits = 0x36;
    // BMPファイルのINFOヘッダに値を代入
    bmpih.biSize = 0x28;
    bmpih.biWidth = HORIZONTAL_PIXEL;
    bmpih.biHeight = VERTICAL_LINES;
    bmpih.biPlanes = 0x1;
    bmpih.biBitCount = 24;
    bmpih.biCompression = 0;
    bmpih.biSizeImage = 0;
    bmpih.biXPixPerMeter = 3779;
    bmpih.biYPixPerMeter = 3779;
    bmpih.biClrUsed = 0;
    bmpih.biClrImporant = 0;

    // BMPファイルヘッダの書き込み
    fwrite(&bmpfh.bfType, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfh.bfSize, sizeof(uint32_t), 1, fbmpw);
    fwrite(&bmpfh.bfReserved1, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfh.bfReserved2, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfh.bfOffBits, sizeof(uint32_t), 1, fbmpw);
    // BMPファイルのINFOヘッダの書き込み
    fwrite(&bmpih, sizeof(BITMAPINFOHEADER), 1, fbmpw);
    // bmp_dataの書き込み
    for (int y=0; y<bmpih.biHeight; y++) {
        for (int x=0; x<bmpih.biWidth; x++) {
            blue = bmp_data[((bmpih.biHeight-1)-y)*bmpih.biWidth+x] & 0xff;
            green = (bmp_data[((bmpih.biHeight-1)-y)*bmpih.biWidth+x] >> 8) & 0xff;
            red = (bmp_data[((bmpih.biHeight-1)-y)*bmpih.biWidth+x]>>16) & 0xff;

            fputc(blue, fbmpw);
            fputc(green, fbmpw);
            fputc(red, fbmpw);
        }
    }
    fclose(fbmpw);
    free(bmp_data);

    return 0;
}


~/ドキュメント/temp ディレクトリに gabor_left2_230107.txt と gabor_right2_230107.txt があるので、そこに txt2bmp.c と bmp_header.h をコピーした。
Zybot2_96_230108.png

gcc を使ってコンパイルした。
gcc -o txt2bmp txt2bmp.c
ワーニングは出たが、txt2bmp 実行ファイルが生成された。
Zybot2_97_230108.png

txt2bmp 実行ファイルを使用して、gabor_left2_230107.txt と gabor_right2_230107.txt を画像ファイル(bmp ファイル)に変換する。
./txt2bmp gabor_left2_230107.txt gabor_left2_230107.bmp
./txt2bmp gabor_right2_230107.txt gabor_right2_230107.bmp

bmp ファイルが生成された。
Zybot2_99_230108.png

生成された gabor_left2_230107.bmp と gabor_right2_230107.bmp を示す。
bmp ファイルの生成に成功した。
Zybot2_98_230108.jpg
  1. 2023年01月09日 04:02 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する11(アプリケーション・ソフトを更新してテスト)

Zybot でガボール・フィルタを使用して白線間走行する10(作成した IP をブロック・デザインに組み込む)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、作ってきた IP を ZYBOt ブロック・デザインに組み込んで、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。今回は、ハードウェアをエクスポートして、Vitis を立ち上げアプリケーション・ソフトウェアをハードウェアの変更に合わせて更新し、Zybot でテストしたところうまく行っているようだった。

Vivado 2022.2 でハードウェアをエクスポートして、ZYBOt_wrapper.xsa を再作成した。
Vivado の Tools メニューから Launch Vitis IDE を選択して、Vitis 2022.2 を起動した。
ワークスペースを ZYBO_222/vitis_work に指定した。
Vitis が立ち上がった。
wl_tracing_gabor_bm_system/wl_tracing_gabor_bm/src/wl_tracing_gabor_bm.c を編集した。
Zybot2_88_230107.png

前にやった Zybot 実機を使用したテストでは、最初から全く結果が更新されていなかったが、その原因がやっと分かった。
それは、ベアメタル・アプリケーションとして実行しているため、ARM プロセッサのキャッシュが ON になっていて、メモリに DMA されたデータがキャッシュに反映されていないためだった。今回は、400 ピクセル分を 2 セット読んでいるだけなので、キャッシュにまるごと登録されているようだ。
解決策としてはキャッシュをインバリデートすれば良い。ベアメタル・アプリケーションでは、Xil_DCacheInvalidate() 関数を使用する。
Zybot2_89_230107.png

作成した wl_tracing_gabor_bm.c を貼っておく。
とりあえず、ガボール・フィルタもラプラシアン・フィルタも ON してある。

// wl_tracking_gabor_bm.c
// 2022/12/18 : by marsee
// 2022/12/21 : bug fix. by marsee
// 2022/12/23 : Added sw2, BTN0.
// 2023/01/07 : Added Gabor_Filter_lh_3, lap_filter_axis.

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include "sleep.h"

#include "xparameters.h"
#include "xil_io.h"
#include "xpwm.h"
#include "xmotor_monitor.h"

#define DIR_LEFT_NORMAL        1
#define DIR_LEFT_REVERSE    0
#define DIR_RIGHT_NORMAL    0
#define DIR_RIGHT_REVERSE    1

#define PIXEL_NUM_OF_BYTES    4
#define SVGA_HORIZONTAL_PIXELS  800
#define SVGA_VERTICAL_LINES     600
#define SVGA_ALL_DISP_ADDRESS   (SVGA_HORIZONTAL_PIXELS * SVGA_VERTICAL_LINES * PIXEL_NUM_OF_BYTES)

#define GABOR_DETECT_LINE        590
#define GABOR_DETECT_LINE_ADDR    (SVGA_HORIZONTAL_PIXELS * GABOR_DETECT_LINE * PIXEL_NUM_OF_BYTES)
#define GABOR_THRESHOLD            240
#define DIST_THRESHOLD            30

#define LEFT_GABOR_EDGE_OVERFLOW    0
#define RIGHT_GABOR_EDGE_OVERFLOW    (SVGA_HORIZONTAL_PIXELS/2)

//#define DEBUG
//#define MOTOR_OFF

#define FRAME_BUFFER_ADDRESS    0x10000000

#define GABOR_LEFT  0
#define GABOR_RIGHT 1

void cam_i2c_init(volatile uint32_t *mt9d111_axi_iic) {
    mt9d111_axi_iic[64] = 0x2; // reset tx fifo ,address is 0x100, i2c_control_reg
    mt9d111_axi_iic[64] = 0x1; // enable i2c
}

void cam_i2x_write_sync(void) {
    // unsigned c;

    // c = *cam_i2c_rx_fifo;
    // while ((c & 0x84) != 0x80)
        // c = *cam_i2c_rx_fifo; // No Bus Busy and TX_FIFO_Empty = 1
    usleep(1000);
}

void cam_i2c_write(volatile uint32_t *mt9d111_axi_iic, uint32_t device_addr, uint32_t write_addr, uint32_t write_data){
    mt9d111_axi_iic[66] = 0x100 | (device_addr & 0xfe);    // Slave IIC Write Address, address is 0x108, i2c_tx_fifo
    mt9d111_axi_iic[66] = write_addr;
    mt9d111_axi_iic[66] = (write_data >> 8)|0xff;            // first data
    mt9d111_axi_iic[66] = 0x200 | (write_data & 0xff);        // second data
    cam_i2x_write_sync();
}

int search_gabor_edge(uint32_t start_addr, uint32_t number, uint32_t threshold){
    volatile uint32_t *imgaddr;
    int i;

    imgaddr = (volatile uint32_t *)start_addr;
    //printf("start_addr = %x\n", (int)start_addr);

    for (i=0; i<number; i++){
        uint32_t c=imgaddr[i] & 0xff;
        //printf("%d, %d, %d\n",(int)number, i, (int)c);
        //printf("%x",(int)c);
        if (c >= threshold){
            break;
        }
        //usleep(5000);
    }
    //printf("i = %d\n",i);
    return(i);
}

// Motor
//
void motor_settings(XPwm *motorLp, XPwm *motorRp){
    XPwm_DisableAutoRestart(motorLp);
    while(!XPwm_IsIdle(motorLp)) ;
    XPwm_Start(motorLp);
    XPwm_EnableAutoRestart(motorLp);

    XPwm_DisableAutoRestart(motorRp);
    while(!XPwm_IsIdle(motorRp)) ;
    XPwm_Start(motorRp);
    XPwm_EnableAutoRestart(motorRp);
}

void Stopped_Zybot(XPwm *motorLp, XPwm *motorRp){
    XPwm_Set_sw_late_V(motorLp, 0);
    XPwm_Set_sw_late_V(motorRp, 0);
}

void motor_initialize(XPwm *motorL, XPwm *motorR, XMotor_monitor *mmL, XMotor_monitor *mmR){
    XPwm *motorLp, *motorRp;
    XMotor_monitor *mmLp, *mmRp;

    motorLp = motorL;
    motorRp = motorR;
    mmLp = mmL;
    mmRp = mmR;

    // Initialization of motor
    if (XPwm_Initialize(motorLp, 0) != XST_SUCCESS){
        fprintf(stderr,"pwm_0 (Left) open error\n");
        exit(-1);
    }
    if (XPwm_Initialize(motorRp, 1) != XST_SUCCESS){
        fprintf(stderr,"pwm_1 (Right) open error\n");
        exit(-1);
    }

    // Initialization of motor monitor
    if (XMotor_monitor_Initialize(mmLp, 0) != XST_SUCCESS){
        fprintf(stderr,"motor_monitor_0 (Left) open error\n");
        exit(-1);
    }
    if (XMotor_monitor_Initialize(mmRp, 1) != XST_SUCCESS){
        fprintf(stderr,"motor_monitor_1 (Right) open error\n");
        exit(-1);
    }

    // The Motors is rotated in the forward direction.
    XPwm_Set_sw_late_V(motorLp, 0);
    XPwm_Set_dir_V(motorLp, 1);

    XPwm_Set_sw_late_V(motorRp, 0);
    XPwm_Set_dir_V(motorRp, 0);

    motor_settings(motorLp, motorRp);
}

int check_debug(volatile uint32_t *axi_gpio_0){
    uint32_t val = axi_gpio_0[0];
    return(val & 1);
}

int check_motor_on(volatile uint32_t *axi_gpio_0){
    uint32_t val = axi_gpio_0[0];
    val = val>>1;
    return(val & 1);
}

int check_gabor_LR(volatile uint32_t *axi_gpio_0){
    uint32_t val = axi_gpio_0[0];
    val = val>>2;
    return(val & 1);
}

int check_gabor_display(volatile uint32_t *axi_gpio_0){
    uint32_t val = axi_gpio_0[0];
    val = val>>3;
    return(val & 1);
}

int gabor_data_disp(uint32_t fb_addr, uint32_t lr){
    volatile uint32_t *fb_addrp = (volatile uint32_t *)fb_addr;

    for(int i=0; i<SVGA_HORIZONTAL_PIXELS*SVGA_VERTICAL_LINES; i++){
        if((i%40) == 0){
            if (i != 0)
                printf("\n");
        }
        printf("%02x", (int)(fb_addrp[i] & 0xff));
    }
    printf("\n");
    return(0);
}

int main(){
    volatile uint32_t *dmaw4gabor_0;
    XPwm motorL, motorR;
    XMotor_monitor mmL, mmR;
    int left_wl_edge, right_wl_edge;
    // mt9d111_inf_axis_0, axi_iic_0, bitmap_disp_cntrler_axi_master_0
    volatile uint32_t *bmdc0_axi_lites;
    volatile uint32_t *mt9d111_axi_lites;
    volatile uint32_t *mt9d111_i2c_axi_lites;
    volatile uint32_t *axi_gpio_0;
    volatile uint32_t *gabor_filter_lh_3_0;
    volatile uint32_t *lap_filter_axis_0, *find_startp_0;

    // axi_gpio_0 : sw0 - 0 : NORMAL, 1 : DEBUG
    //              sw1 - 0 : MOTOR OFF, 1 : MOTOR ON
    //              sw2 - 0 : Display the Gabor-filtered image for the left white line on the display
    //              sw2 - 1 : Display the Gabor-filtered image for the right white line on the display
    //              BTN0 - 1 : Display the value of the Gabor filter for one screen. sw2 designates right white line data or left white line data.
    axi_gpio_0 = (volatile uint32_t *)XPAR_AXI_GPIO_0_BASEADDR;
    gabor_filter_lh_3_0 = (volatile uint32_t *)XPAR_XGABOR_FILTER_LH_3_0_S_AXI_CONTROL_BASEADDR;
    lap_filter_axis_0 = (volatile uint32_t *)XPAR_XLAP_FILTER_AXIS_0_S_AXI_CONTROL_BASEADDR;
    find_startp_0 = (volatile uint32_t *)XPAR_XFIND_STARTP_0_S_AXI_CONTROL_BASEADDR;

    // Motor Initialize
    motor_initialize(&motorL, &motorR, &mmL, &mmR);

    // DMAW4Gabor Initialize
    dmaw4gabor_0 = (volatile uint32_t *)XPAR_CAMERA_INTERFACE_DMAW4GABOR_0_S_AXI_AXILITES_BASEADDR;

    // DMA4Gabor frame_buffer setting
    dmaw4gabor_0[6] = (volatile uint32_t)FRAME_BUFFER_ADDRESS; // Data signal of frame_buffer0
    dmaw4gabor_0[8] = (volatile uint32_t)FRAME_BUFFER_ADDRESS + (volatile uint32_t)SVGA_ALL_DISP_ADDRESS; // Data signal of frame_buffer1

    // Camera, display controller
    bmdc0_axi_lites = (volatile uint32_t *)XPAR_BITMAP_DISP_CNTRLER_AXI_MASTER_0_BASEADDR;
    mt9d111_axi_lites = (volatile uint32_t *)XPAR_CAMERA_INTERFACE_MT9D111_INF_AXIS_0_BASEADDR;
    mt9d111_i2c_axi_lites = (volatile uint32_t *)XPAR_CAMERA_INTERFACE_AXI_IIC_0_BASEADDR;

    // Gabor, find_startp, lap_filer Settings
    gabor_filter_lh_3_0[6] = (volatile uint32_t)SVGA_VERTICAL_LINES; // row_size
    gabor_filter_lh_3_0[8] = (volatile uint32_t)SVGA_HORIZONTAL_PIXELS; // col_size
    gabor_filter_lh_3_0[10] = (volatile uint32_t)1; // function_r, Gabor_Filter IP ON
    find_startp_0[6] = (volatile uint32_t)SVGA_VERTICAL_LINES; // row_size
    find_startp_0[8] = (volatile uint32_t)SVGA_HORIZONTAL_PIXELS; // col_size
    lap_filter_axis_0[6] = (volatile uint32_t)SVGA_VERTICAL_LINES; // row_size
    lap_filter_axis_0[8] = (volatile uint32_t)SVGA_HORIZONTAL_PIXELS; // col_size
    lap_filter_axis_0[10] = (volatile uint32_t)1; // function_r, Lap_Filter IP ON

    // IP start
    dmaw4gabor_0[0] = (volatile uint32_t)0x81; // start, auto restart
    lap_filter_axis_0[0] = (volatile uint32_t)0x81; // start, auto restart
    gabor_filter_lh_3_0[0] = (volatile uint32_t)0x81; // start, auto restart
    find_startp_0[0] = (volatile uint32_t)0x81; // start, auto restart
    bmdc0_axi_lites[0] = (volatile uint32_t)FRAME_BUFFER_ADDRESS; // Bitmap Display Controller 0 start
    mt9d111_axi_lites[0] = (volatile uint32_t)FRAME_BUFFER_ADDRESS; // Camera Interface start (Address is dummy)

    // CMOS Camera initialize, MT9D111
    cam_i2c_init(mt9d111_i2c_axi_lites);

    cam_i2c_write(mt9d111_i2c_axi_lites, 0xba, 0xf0, 0x1);      // Changed regster map to IFP page 1
    cam_i2c_write(mt9d111_i2c_axi_lites, 0xba, 0x97, 0x20);        // RGB Mode, RGB565

    mt9d111_axi_lites[1] = 0; // One_shot_mode is disabled

    // main loop
    if(check_debug(axi_gpio_0))
        printf("White line Tracking start. \n");

    while(1){
        Xil_DCacheInvalidate();
        // Gabor filter for left white line
        left_wl_edge = SVGA_HORIZONTAL_PIXELS/2 - search_gabor_edge(
                FRAME_BUFFER_ADDRESS+GABOR_DETECT_LINE_ADDR, SVGA_HORIZONTAL_PIXELS/2, GABOR_THRESHOLD);

        // Gabor filter for right white line
        right_wl_edge = search_gabor_edge(
                FRAME_BUFFER_ADDRESS+SVGA_ALL_DISP_ADDRESS+GABOR_DETECT_LINE_ADDR+(SVGA_HORIZONTAL_PIXELS/2)*PIXEL_NUM_OF_BYTES,
            SVGA_HORIZONTAL_PIXELS/2, GABOR_THRESHOLD);

        if(check_debug(axi_gpio_0))
            printf("left_wl_edge = %d, right_wl_edge = %d\n", left_wl_edge, right_wl_edge);

        if (left_wl_edge == LEFT_GABOR_EDGE_OVERFLOW){
            if(check_motor_on(axi_gpio_0)){
                XPwm_Set_sw_late_V(&motorL, 15);
                XPwm_Set_sw_late_V(&motorR, 45);
            }
            if(check_debug(axi_gpio_0))
                printf("Left gabor edge is overflow\n");

        } else if (right_wl_edge == RIGHT_GABOR_EDGE_OVERFLOW){
            if(check_motor_on(axi_gpio_0)){
                XPwm_Set_sw_late_V(&motorL, 45);
                XPwm_Set_sw_late_V(&motorR, 15);
            }
            if(check_debug(axi_gpio_0))
                printf("Right gabar edge is overflow\n");

        } else if ((right_wl_edge - left_wl_edge) > DIST_THRESHOLD){
            if(check_motor_on(axi_gpio_0)){
                XPwm_Set_sw_late_V(&motorL, 35);
                XPwm_Set_sw_late_V(&motorR, 25);
            }
            if(check_debug(axi_gpio_0))
                printf("Right turn\n");

        } else if ((right_wl_edge - left_wl_edge) < -DIST_THRESHOLD){
            if(check_motor_on(axi_gpio_0)){
                XPwm_Set_sw_late_V(&motorL, 25);
                XPwm_Set_sw_late_V(&motorR, 35);
            }
            if(check_debug(axi_gpio_0))
                printf("Left turn\n");

        } else if (abs(right_wl_edge - left_wl_edge) <= DIST_THRESHOLD){
            if(check_motor_on(axi_gpio_0)){
                XPwm_Set_sw_late_V(&motorL, 30);
                XPwm_Set_sw_late_V(&motorR, 30);
            }
            if(check_debug(axi_gpio_0))
                printf("Go straight\n");
        }
        if(check_gabor_LR(axi_gpio_0)){
            bmdc0_axi_lites[0] = (volatile uint32_t)FRAME_BUFFER_ADDRESS + (volatile uint32_t)SVGA_ALL_DISP_ADDRESS; // right
        } else {
            bmdc0_axi_lites[0] = (volatile uint32_t)FRAME_BUFFER_ADDRESS; // left
        }
        if(check_gabor_display(axi_gpio_0)){
            if(check_gabor_LR(axi_gpio_0)){
                gabor_data_disp((uint32_t)FRAME_BUFFER_ADDRESS+(uint32_t)SVGA_ALL_DISP_ADDRESS, (uint32_t)GABOR_RIGHT);
            } else {
                gabor_data_disp((uint32_t)FRAME_BUFFER_ADDRESS, (uint32_t)GABOR_LEFT);
            }
        }
        if(!check_motor_on(axi_gpio_0)){ // sw1 off. Motor Stopped
            XPwm_Set_sw_late_V(&motorL, 0);
            XPwm_Set_sw_late_V(&motorR, 0);
        }
    }
}


ビルドして、wl_tracing_gabor_bm.elf を作成した。
Zybot を使用して実機テストを行った。その様子を示す。
Zybot2_91_230107.jpg

この Zybot の位置で、wl_tracing_gabor_bm.elf を実行した。
sw0 を ON にした時のデバック・メッセージを示す。
Go straight なので、正しそうだ。
Zybot2_90_230107.png

この Zybot の位置で、sw2 を OFF した時の左白線用パラメータでのガボール・フィルタ結果を示す。
左白線だけ強調されている。
Zybot2_92_230107.jpg

この Zybot の位置で、sw2 を ON した時の右白線用パラメータでのガボール・フィルタ結果を示す。
右白線だけ強調されている。(写真では左白線も強調されているように見えるが、肉眼ではもっと左白線は薄い)
Zybot2_93_230107.jpg

この Zybot の位置で、sw2 を OFF した時の左白線用パラメータでのガボール・フィルタ数値を BTN0 を押して、取得した。
gabor_left2_230107.txt を示す。
Zybot2_94_230107.png

この Zybot の位置で、sw2 を ON した時の右白線用パラメータでのガボール・フィルタ数値を BTN0 を押して、取得した。
gabor_right2_230107.txt を示す。
Zybot2_95_230107.png
  1. 2023年01月08日 05:24 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Zybot でガボール・フィルタを使用して白線間走行する10(作成した IP をブロック・デザインに組み込む)

Zybot でガボール・フィルタを使用して白線間走行する9(白線コースでデータ収集)”の続き。

Zybot でガボール・フィルタを使用して白線間を走行させたいと思っているということで、前回は、実際のコースでデータを収集したが、家の環境では白線間を走らせることは難しかった。今回は、作ってきた IP を ZYBOt ブロック・デザインに組み込んで、論理合成、インプリメンテーション、ビットストリームの生成を行った。

作ってきた find_startp, Gabr_Filter_lh_3, lap_filter_axis IP 用のディレクトリを ZYBOt_222 ディレクトリに作成した。
作成したディレクトリに各 IP の solution?/impl/export.zip を展開してコピーする。
ZYBOt_222 の IP カタログに各 IP を登録した。

ブロック・デザインを開いた。
変更した camera_interface 階層モジュールを示す。
Zybot2_83_230105.png

ZYBOt ブロック・デザインを示す。
Zybot2_84_230105.png
Zybot2_85_230105.png

Address Editor 画面を示す。
Zybot2_86_230105.png

論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。
Project Summary を示す。
Zybot2_87_230105.png
  1. 2023年01月05日 04:14 |
  2. Zybot
  3. | トラックバック:0
  4. | コメント:0

Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP のソースコードを 2 重ループから 1 重ループに変更した

”Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP を Vitis HLS 2022.2 で作成する 1
Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP を Vitis HLS 2022.2 で作成する 2
上の 2 つの記事で C コードの合成時の Estimated の成績があまり良くないので、もっとチューニングできる方法を考えていた。
考えた結果、for 文が 2 重ループになっているので、これを 1 重ループにしたら比較が減って高速にならないだろうか?という考えに至ったので、確かめてみよう。

find_startp.cpp を 2 重ループから 1 重ループに書き換えた。

// find_startp.cpp
// 2022/12/31 by marsee
// 2023/01/03 : 2重ループを1重ループに変更した
//

#include <stdio.h>
#include <stdint.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

int find_startp(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs,
        uint32_t row_size, uint32_t col_size){
#pragma HLS INTERFACE mode=s_axilite port=col_size
#pragma HLS INTERFACE mode=s_axilite port=row_size
#pragma HLS INTERFACE mode=axis register_mode=both port=ins register
#pragma HLS INTERFACE mode=axis register_mode=both port=outs register
#pragma HLS INTERFACE mode=s_axilite port=return

    ap_axis<32,1,1,1> pix;
    uint32_t all_pix;

    Loop1 : do {    // user が 1になった時にフレームがスタートする
#pragma HLS LOOP_TRIPCOUNT min=1 max=1 avg=1
        ins >> pix;
    } while(pix.user == 0);

    all_pix = row_size * col_size;
    Loop2 : for (uint32_t p=0; p<all_pix; p++){
#pragma HLS LOOP_TRIPCOUNT avg=480000 max=2073600 min=3072
#pragma HLS PIPELINE II=1
        if (p != 0) // 最初の入力はすでに入力されている
            ins >> pix; // AXI4-Stream からの入力
        outs << pix;
    }
    return(0);
}


C コードの合成を行った。結果を示す。なお、solution2 を作成してテストしている。
Estimaed は 6.912 ns に向上して問題が無さそうだ。
Zybot2_81_230104.png

リソース使用量も FF が 894 個から 538 個に、LUT が 849 個から 562 個に減っている。

Export RTL を行った。solution2 なので、Implementation まで実行されている。
Zybot2_82_230104.png

CP achieved post-implementation が 9.433 ns から 6.534 ns にだいぶ向上した。

for 文などを 2 重ループにしていて性能向上に限界を感じたら 1 重ループにすれば性能が向上するだろう。当たり前といえば当たり前のような気がするが。。。
  1. 2023年01月04日 04:35 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP を Vitis HLS 2022.2 で作成する 2

Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP を Vitis HLS 2022.2 で作成する 1”の続き。

ガボール・フィルタ IP から Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する機能を削除したので、その機能を実行する IP の find_startp を作成するということで、前回は、ソースコードを貼って、find_startp プロジェクトを作成する。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL、Implementation を行った。

C シミュレーションを行った。結果を示す。
Zybot2_72_230103.png

find_startp/solution1/csim/build ディレクトリを示す。
Zybot2_73_230103.png

C コードの合成を行った。結果を示す。
Estimated が 8.289 ns であまり良くない。
Zybot2_74_230103.png

Vitis HLS で Solution メニューから Solution Settings... を選択する。
Solution Settings (solution1) ダイアログが表示された。
Uncertainty を 7 ns に変更した。
Zybot2_75_230103.png

もう一度、C コードの合成を行った。結果を示す。
今度は、Estimated が 7.311 ns に改善した。
Zybot2_76_230103.png
Zybot2_77_230103.png

C/RTL 協調シミュレーションを行った。結果を示す。
Zybot2_78_230103.png

総ピクセル数 3072 ピクセルを処理するのに、3087 クロックなので、性能的には問題ない。

C/RTL 協調シミュレーション波形を示す。
ここでも、ins_TREADY と outs_TVALID がほとんど 1 なので、スループットが高いということが分かる。
Zybot2_79_230103.png

Export RTL を行った。IP が生成された。

Implementation を行った。
CP achieved post-implementation が 9.433 ns と少し心配な値になっている。
Zybot2_80_230103.png
  1. 2023年01月03日 05:11 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する IP を Vitis HLS 2022.2 で作成する 1

ガボール・フィルタ IP から Xilinx 社画像用 IP の AXI4-Stream のスタート位置を検出する機能を削除したので、その機能を実行する IP の find_startp を作成する。今回は、ソースコードを貼って、find_startp プロジェクトを作成する。
なお、find_startp IP はきちんと IP の制御をしていれば要らないとは思うが、フェール・セーフを考えて入れておくことにしよう。

ヘッダ・ファイルの bmp_header.h はここに貼ってある

find_startp.cpp を貼っておく。

// find_startp.cpp
// 2022/12/31 by marsee
//

#include <stdio.h>
#include <stdint.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

int find_startp(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs,
        uint32_t row_size, uint32_t col_size){
#pragma HLS INTERFACE mode=s_axilite port=col_size
#pragma HLS INTERFACE mode=s_axilite port=row_size
#pragma HLS INTERFACE mode=axis register_mode=both port=ins register
#pragma HLS INTERFACE mode=axis register_mode=both port=outs register
#pragma HLS INTERFACE mode=s_axilite port=return

    ap_axis<32,1,1,1> pix;

    Loop1 : do {    // user が 1になった時にフレームがスタートする
#pragma HLS LOOP_TRIPCOUNT min=1 max=1 avg=1
        ins >> pix;
    } while(pix.user == 0);

    Loop2 : for (int y=0; y<row_size; y++){
#pragma HLS LOOP_TRIPCOUNT avg=600 max=1080 min=48
        Loop3 : for (int x=0; x<col_size; x++){
#pragma HLS LOOP_TRIPCOUNT avg=800 max=1920 min=64
#pragma HLS PIPELINE II=1
            if (!(x==0 && y==0))    // 最初の入力はすでに入力されている
                ins >> pix; // AXI4-Stream からの入力
            outs << pix;
        }
    }
    return(0);
}


テストベンチの find_startp_tb.cpp を貼っておく。

// find_startp_tb.cpp
// 2022/12/31 by marsee
//

#include <stdio.h>
#include <stdint.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

#include "bmp_header.h"

int find_startp(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs,
        uint32_t row_size, uint32_t col_size);

int main(){
    using namespace std;

    hls::stream<ap_axis<32,1,1,1> > ins;
    hls::stream<ap_axis<32,1,1,1> > outs;
    ap_axis<32,1,1,1> pix;
    ap_axis<32,1,1,1> vals;

    BITMAPFILEHEADER bmpfhr; // BMPファイルのファイルヘッダ(for Read)
    BITMAPINFOHEADER bmpihr; // BMPファイルのINFOヘッダ(for Read)
    FILE *fbmpr, *fbmpw;
    int *rd_bmp, *hw_lapd;
    int blue, green, red;

    if ((fbmpr = fopen("test.bmp", "rb")) == NULL){ // test.bmp をオープン
        fprintf(stderr, "Can't open test.bmp by binary read mode\n");
        exit(1);
    }
    // bmpヘッダの読み出し
    fread(&bmpfhr.bfType, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfSize, sizeof(uint32_t), 1, fbmpr);
    fread(&bmpfhr.bfReserved1, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfReserved2, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfOffBits, sizeof(uint32_t), 1, fbmpr);
    fread(&bmpihr, sizeof(BITMAPINFOHEADER), 1, fbmpr);

    // ピクセルを入れるメモリをアロケートする
    if ((rd_bmp =(int32_t *)malloc(sizeof(int) * (bmpihr.biWidth * bmpihr.biHeight))) == NULL){
        fprintf(stderr, "Can't allocate rd_bmp memory\n");
        exit(1);
    }
    if ((hw_lapd =(int32_t *)malloc(sizeof(int) * (bmpihr.biWidth * bmpihr.biHeight))) == NULL){
        fprintf(stderr, "Can't allocate hw_lapd memory\n");
        exit(1);
    }

    // rd_bmp にBMPのピクセルを代入。その際に、行を逆転する必要がある
    for (int y=0; y<bmpihr.biHeight; y++){
        for (int x=0; x<bmpihr.biWidth; x++){
            blue = fgetc(fbmpr);
            green = fgetc(fbmpr);
            red = fgetc(fbmpr);
            rd_bmp[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] = (blue & 0xff) | ((green & 0xff)<<8) | ((red & 0xff)<<16);
        }
    }
    fclose(fbmpr);

    // ins に入力データを用意する
    for(int i=0; i<5; i++){ // dummy data
        pix.user = 0;
        pix.data = i;
        ins << pix;
    }

    for(int j=0; j < bmpihr.biHeight; j++){
        for(int i=0; i < bmpihr.biWidth; i++){
            pix.data = (int32_t)rd_bmp[(j*bmpihr.biWidth)+i];

            if (j==0 && i==0)   // 最初のデータの時に TUSER を 1 にする
                pix.user = 1;
            else
                pix.user = 0;

            if (i == bmpihr.biWidth-1) // 行の最後でTLASTをアサートする
                pix.last = 1;
            else
                pix.last = 0;

            ins << pix;
        }
    }
    find_startp(ins, outs, bmpihr.biHeight, bmpihr.biWidth);

    for(int j=0; j < bmpihr.biHeight; j++){
        for(int i=0; i < bmpihr.biWidth; i++){
            outs >> vals;
            int32_t val = vals.data;
            hw_lapd[(j*bmpihr.biWidth)+i] = (int)val;
        }
    }

    // 結果を temp_startp.bmp へ出力する
    if ((fbmpw=fopen("temp_startp.bmp", "wb")) == NULL){
        fprintf(stderr, "Can't open temp_lap.bmp by binary write mode\n");
        exit(1);
    }
    // BMPファイルヘッダの書き込み
    fwrite(&bmpfhr.bfType, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfSize, sizeof(uint32_t), 1, fbmpw);
    fwrite(&bmpfhr.bfReserved1, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfReserved2, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfOffBits, sizeof(uint32_t), 1, fbmpw);
    fwrite(&bmpihr, sizeof(BITMAPINFOHEADER), 1, fbmpw);

    // RGB データの書き込み、逆順にする
    for (int y=0; y<bmpihr.biHeight; y++){
        for (int x=0; x<bmpihr.biWidth; x++){
            blue = hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] & 0xff;
            green = (hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] >> 8) & 0xff;
            red = (hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x]>>16) & 0xff;

            fputc(blue, fbmpw);
            fputc(green, fbmpw);
            fputc(red, fbmpw);
        }
    }
    fclose(fbmpw);
    free(rd_bmp);
    free(hw_lapd);

    return 0;
}


Vitis HLS 2022.2 で作成した find_startp プロジェクトを示す。
Zybot2_71_230102.png
  1. 2023年01月02日 05:06 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

2022 年の”FPGAの部屋”のアクセス数

2022 年の”FPGAの部屋”ブログのアクセス数は 445,780 アクセスでした。
皆さん見ていただいてありがとうございました。
本年も”FPGAの部屋”ブログをよろしくお願いします。
FPGAr_access_1_230101.png
  1. 2023年01月01日 05:11 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

新年あけましておめでとうございます

新年あけましておめでとうございます。
今年も”FPGAの部屋”をよろしくお願いいたします。
今年は、KR260 も使ってブログ書いてみたいです。
  1. 2023年01月01日 05:08 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0