XU8: Difference between revisions

From DaqWiki
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 192: Line 192:


git clone https://github.com/enclustra/meta-enclustra-amd.git -b "xlnx-2024.2"
git clone https://github.com/enclustra/meta-enclustra-amd.git -b "xlnx-2024.2"
mkdir -p sources
mkdir -p sources
cd sources
cd sources
Line 218: Line 219:


cd meta-xilinx/meta-xilinx-core
cd meta-xilinx/meta-xilinx-core
git submodule init
git submodule update
git submodule update
git submodule status
git submodule status
Line 428: Line 430:
/home1/dsdmdev/yocto-test3/build/tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/petalinux-image-minimal/1.0/rootfs
/home1/dsdmdev/yocto-test3/build/tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/petalinux-image-minimal/1.0/rootfs
</pre>
</pre>
* things to try:
** switch from rpm to deb: set PACKAGE_CLASSES = "package_deb"
** stop building cortexa72-cortexa53-xilinx-linux, nope it looks to be part of the arm64 cross-compiler
* clean, build from scratch
* clean, build from scratch
<pre>
<pre>
Line 559: Line 564:
[  14.315527] fpga_manager fpga0: writing fpga.bit to Xilinx ZynqMP FPGA Manager
[  14.315527] fpga_manager fpga0: writing fpga.bit to Xilinx ZynqMP FPGA Manager
</pre>
</pre>
= AXI FIFO =
* see CONFIG_XIL_AXIS_FIFO
* see https://www.kernelconfig.io/CONFIG_XIL_AXIS_FIFO
* see https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/staging/axis-fifo/axis-fifo.c?h=v6.19.13
* https://www.reddit.com/r/FPGA/comments/pwae48/any_cons_of_replacing_axistream_xilinx_ips_with/
* https://github.com/alexforencich/verilog-axis
* https://github.com/fpganinja/taxi


= End =
= End =

Latest revision as of 01:14, 16 June 2026

Enclustra Xilinx FPGA SoM

SD card

root@daq13:~# fdisk -l /dev/sdd
Disk /dev/sdd: 29.28 GiB, 31439454208 bytes, 61405184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disklabel type: dos

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdd1          8192 2097151 2088960 1020M  c W95 FAT32 (LBA)
/dev/sdd2       2097152 6291455 4194304    2G 83 Linux
/dev/sdd3       6291456 8388607 2097152    1G 83 Linux
root@daq13:~# 
root@daq13:~# mount /dev/sdd1 /mnt
root@daq13:~# ls -l /mnt
total 18060
-rw-r--r-- 1 olchansk users 9455980 Aug 15 15:00 BOOT.BIN
-rw-r--r-- 1 olchansk users    2007 Dec  2  2022 boot.scr
-rw-r--r-- 1 olchansk users 8506496 Dec  2  2022 image.ub
-rw-r--r-- 1 olchansk users  262144 Dec 31  1979 uboot.env
-rw-r--r-- 1 olchansk users  262144 Dec 31  1979 uboot-redund.env
root@daq13:~# 

Make new card

  • use 8GB, 16GB or 32GB SD card
  • fdisk /dev/sdX ### as above, only VFAT partition 1 is used
  • mkfs.vfat /dev/sdX1
  • fatlabel /dev/sdX1 BOOT
  • mount /dev/sdX1 /mnt
  • rsync boot files
  • unmount, eject

Linux benchmarks

  • memory benchmark:
daq13$ arm-linux-gnueabi-gcc -o memcpy.armv7 memcpy.cc -march=armv7 -static -O2
scp memcpy.armv7 to ...
root@gdm-cdm:~# ./memcpy.armv7 
memcpy       1 KiBytes:   1288 MB/sec
memcpy       2 KiBytes:   1924 MB/sec
memcpy       4 KiBytes:   2554 MB/sec
memcpy       8 KiBytes:   3054 MB/sec
memcpy      16 KiBytes:   3262 MB/sec
memcpy      32 KiBytes:   3250 MB/sec
memcpy      64 KiBytes:   3456 MB/sec
memcpy     128 KiBytes:   3556 MB/sec
memcpy     256 KiBytes:   3780 MB/sec
memcpy     512 KiBytes:   3795 MB/sec
memcpy    1024 KiBytes:   3789 MB/sec
memcpy    2048 KiBytes:   3729 MB/sec
memcpy    4096 KiBytes:   3717 MB/sec
memcpy    8192 KiBytes:   3687 MB/sec
memcpy   16384 KiBytes:   3632 MB/sec
memcpy   32768 KiBytes:   3529 MB/sec
memcpy   65536 KiBytes:   3318 MB/sec
memcpy  131072 KiBytes:   2893 MB/sec
root@gdm-cdm:~# 
root@gdm00:~# g++ -O2 -static -Wall -Wuninitialized memcpy.cc -o memcpy.aarch64
root@gdm00:~# ./memcpy.aarch64
memcpy       1 KiBytes:   3937 MB/sec
memcpy       2 KiBytes:   4866 MB/sec
memcpy       4 KiBytes:   5528 MB/sec
memcpy       8 KiBytes:   5923 MB/sec
memcpy      16 KiBytes:   5869 MB/sec
memcpy      32 KiBytes:   5521 MB/sec
memcpy      64 KiBytes:   5217 MB/sec
memcpy     128 KiBytes:   5250 MB/sec
memcpy     256 KiBytes:   6288 MB/sec
memcpy     512 KiBytes:   6299 MB/sec
memcpy    1024 KiBytes:   6291 MB/sec
memcpy    2048 KiBytes:   6113 MB/sec
memcpy    4096 KiBytes:   6085 MB/sec
memcpy    8192 KiBytes:   6011 MB/sec
memcpy   16384 KiBytes:   5920 MB/sec
memcpy   32768 KiBytes:   5743 MB/sec
memcpy   65536 KiBytes:   5397 MB/sec
memcpy  131072 KiBytes:   4661 MB/sec
root@gdm00:~# 
  • ethernet receive:
daq13:bin$ ./ttcp -t -s -n 100000 10.0.0.24
ttcp-t: buflen=8192, nbuf=100000, align=16384/0, port=5001  tcp  -> 10.0.0.24
ttcp-t: socket
ttcp-t: connect
ttcp-t: 819200000 bytes in 7.25 real seconds = 110358.39 KB/sec +++
ttcp-t: 100000 I/O calls, msec/call = 0.07, calls/sec = 13794.80
ttcp-t: 0.0user 0.2sys 0:07real 3% 0i+0d 760maxrss 0+2pf 1461+31csw
daq13:bin$ 

root@gdm-cdm:~# ./ttcp.armv7 -r -s
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp
ttcp-r: socket
ttcp-r: accept from 10.0.0.25
ttcp-r: 819200000 bytes in 7.27 real seconds = 110098.22 KB/sec +++
ttcp-r: 212040 I/O calls, msec/call = 0.04, calls/sec = 29181.53
ttcp-r: 0.1user 5.7sys 0:07real 81% 0i+0d 584maxrss 0+2pf 125601+2699csw
root@gdm-cdm:~# 
  • ethernet transmit:
root@gdm-cdm:~# ./ttcp.armv7 -t -s -n 100000 10.0.0.25
ttcp-t: buflen=8192, nbuf=100000, align=16384/0, port=5001  tcp  -> 10.0.0.25
ttcp-t: socket
ttcp-t: connect
ttcp-t: 819200000 bytes in 6.95 real seconds = 115078.69 KB/sec +++
ttcp-t: 100000 I/O calls, msec/call = 0.07, calls/sec = 14384.84
ttcp-t: 0.0user 0.7sys 0:06real 11% 0i+0d 584maxrss 0+2pf 1162+1017csw
root@gdm-cdm:~# 

daq13:bin$ ./ttcp -r -s
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp
ttcp-r: socket
ttcp-r: accept from 10.0.0.24
ttcp-r: 819200000 bytes in 6.97 real seconds = 114841.84 KB/sec +++
ttcp-r: 161335 I/O calls, msec/call = 0.04, calls/sec = 23160.01
ttcp-r: 0.0user 1.9sys 0:06real 28% 0i+0d 760maxrss 0+2pf 80646+51csw
daq13:bin$ 
  • iperf: iperf -s, iperf -c 192.168.0.1
XU8<->Linux
0.0000-10.0175 sec  1.10 GBytes   941 Mbits/sec

yocto

Setup as root

apt-get install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 locales python3 python3-git python3-jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xz-utils zstd
apt install libstdc++-14-dev
echo 0 > /proc/sys/kernel/apparmor_restrict_unprivileged_userns

wrynose

ssh dsdmdev@dsdaqgw
mkdir yocto-test2
git clone https://git.openembedded.org/bitbake
./bitbake/bin/bitbake-setup init
. /home1/dsdmdev/yocto-test2/bitbake-builds/poky-wrynose-poky-distro_poky-tiny-machine_genericarm64/build/init-build-env
bitbake-config-build enable-fragment  core/yocto/root-login-with-empty-password
bitbake core-image-sato ### bombs, wants to build full graphical system, incompatible with "tiny"
bitbake core-image-minimal
bombs with errors about kernel/virtual
edit conf/local.conf ineffective
bitbake -e ### to identify who sets PREFERRED_PROVIDER_virtual/kernel
edit /home1/dsdmdev/yocto-test2/bitbake-builds/poky-wrynose-poky-distro_poky-tiny-machine_genericarm64/layers/meta-yocto/meta-poky/conf/distro/poky-tiny.conf
set PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
bitbake core-image-minimal
grinds for a long time, finishes successfully, but where did it put it's results?
  • Now need to add xilinx and enclustra xu8 layers
cd ~/yocto-test2/layers
git clone https://git.yoctoproject.org/meta-xilinx
git clone https://github.com/enclustra/meta-enclustra-amd.git
  • add them bombs out, "wrynose" not supported, "scarthgap" is supported
bitbake-layers add-layer ~/yocto-test2/layers/meta-enclustra-amd/meta-enclustra-module
bitbake-layers add-layer ~/yocto-test2/layers/meta-xilinx/meta-xilinx-core

scarthgap

#!/bin/sh

git clone https://github.com/enclustra/meta-enclustra-amd.git -b "xlnx-2024.2"

mkdir -p sources
cd sources

# needed for setupsdk

git clone https://github.com/Xilinx/yocto-manifests.git -b "rel-v2024.2" manifest
git clone https://github.com/Xilinx/yocto-scripts.git   -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-petalinux.git  -b "rel-v2024.2"
# not needed git clone https://github.com/Xilinx/meta-xilinx-internal.git  -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-xilinx.git     -b "rel-v2024.2"
git clone https://github.com/Xilinx/poky.git            -b "rel-v2024.2"

/bin/cp -pv yocto-scripts/setupsdk ../setupsdk

# needed for bitbake petalinux-image-minimal

git clone https://github.com/Xilinx/meta-xilinx-tools.git  -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-arm.git           -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-openembedded.git  -b "rel-v2024.2"
#git clone https://github.com/Xilinx/meta-embedded-plus.git -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-xilinx-tsn.git    -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-qt5.git           -b "rel-v2024.2"
git clone https://github.com/Xilinx/meta-virtualization.git      -b "rel-v2024.2"
#git clone https://github.com/Xilinx/meta-amd-adaptive-socs.git  -b "rel-v2024.2"

cd meta-xilinx/meta-xilinx-core
git submodule init
git submodule update
git submodule status

#end
  • source ./setupsdk"
  • bitbake petalinux-image-minimal ### bombs, we need to configure the layers
bitbake-layers add-layer ../meta-enclustra-amd/meta-enclustra-module
bitbake-layers add-layer ../meta-enclustra-amd/meta-enclustra-baseboard
bitbake-layers add-layer ../meta-enclustra-amd/meta-enclustra-refdes
  • not good enough, edit conf/bblayers.conf
BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home1/dsdmdev/yocto-test3/sources/poky/meta \
  /home1/dsdmdev/yocto-test3/sources/poky/meta-poky \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx/meta-xilinx-core \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx/meta-xilinx-standalone \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx/meta-xilinx-bsp \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx/meta-xilinx-vendor \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx-tools \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-arm/meta-arm \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-arm/meta-arm-toolchain \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-perl \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-python \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-filesystems \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-networking \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-initramfs \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-oe \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx/meta-xilinx-contrib \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-xilinx-tsn \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-qt5 \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-virtualization \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-openembedded/meta-multimedia \
  /home1/dsdmdev/yocto-test3/sources/poky/../meta-petalinux \
  /home1/dsdmdev/yocto-test3/meta-enclustra-amd/meta-enclustra-module \
  /home1/dsdmdev/yocto-test3/meta-enclustra-amd/meta-enclustra-baseboard \
  /home1/dsdmdev/yocto-test3/meta-enclustra-amd/meta-enclustra-refdes \
  "
  • cp ~olchansk/git/ds-dm-gcdm/Vivado_CDM_XU8/Vivado_CDM_XU8.xsa ../
  • ../sources/meta-xilinx/meta-xilinx-core/gen-machine-conf/gen-machineconf parse-xsa --hw-description ../Vivado_CDM_XU8.xsa --require-machine refdes-xu8-pe1 --machine-overrides enclustra-sd --machine-name refdes-xu8-pe1
  • grinds for a while, bombs out with error about mconf
  • rubber chicken dance to fix the mconf error:
  • bitbake kconfig-frontends-native ### mconf is in this package
  • find . -name mconf ### should find it in several places
  • ../sources/meta-xilinx/meta-xilinx-core/gen-machine-conf/gen-machineconf parse-xsa --hw-description ../Vivado_CDM_XU8.xsa --require-machine refdes-xu8-pe1 --machine-overrides enclustra-sd --machine-name refdes-xu8-pe1 --native-sysroot ./tmp/sysroots-components/x86_64/kconfig-frontends-native
  • will bomb out with error ??? because of incomplete git checkout:
cd ../sources/meta-xilinx/meta-xilinx-core
git submodule update ### should checkout the missing gen-machineconf pieces
  • will grind for some time, then print the MACHINE name we will be using
  • add to conf/local.conf - MACHINE = "refdes-xu8-pe1-xczu4cg"
  • bitbake petalinux-image-minimal
  • observe it printed correct MACHINE name, etc. it will grind for a long time 1-2 hours
  • will build everything, the kitchen sink and the garage (systemd, wayland, etc)
  • will create stuff in ./tmp/deploy/images/refdes-xu8-pe1-xczu4cg
  • but will it boot?
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ ls -l ./tmp/deploy/images/refdes-xu8-pe1-xczu4cg/boot.bin
lrwxrwxrwx 2 dsdmdev users 46 May 13 17:34 ./tmp/deploy/images/refdes-xu8-pe1-xczu4cg/boot.bin -> BOOT-refdes-xu8-pe1-xczu4cg-20260514000135.bin
  • remove unwanted gunk, add this to conf/local.conf
# my settings
# does not work INIT_MANAGER = "mdev-busybox"
INIT_MANAGER_DEFAULT = "mdev-busybox"
#PETALINUX_DEFAULT_DISTRO_FEATURES=""
DISTRO_FEATURES:remove = "wayland"
DISTRO_FEATURES:remove = "wifi"
DISTRO_FEATURES:remove = "alsa"
DISTRO_FEATURES:remove = "bluetooth"
DISTRO_FEATURES:remove = "pcmcia"
DISTRO_FEATURES:remove = "busybox-httpd"
DISTRO_FEATURES:remove = "busybox-inetd"
DISTRO_FEATURES:remove = "busybox-ftp"
DISTRO_FEATURES:remove = "busybox-ftpd"
DISTRO_FEATURES:remove = "busybox-telnetd"
DISTRO_FEATURES:remove = "usbhost"
DISTRO_FEATURES:remove = "usbgadget"
DISTRO_FEATURES:remove = "pci"
DISTRO_FEATURES:remove = "acl"
DISTRO_FEATURES:remove = "xattr"
DISTRO_FEATURES:remove = "debuginfod"
DISTRO_FEATURES:remove = "zeroconf"
DISTRO_FEATURES:remove = "3g"
DISTRO_FEATURES:remove = "nfc"
DISTRO_FEATURES:remove = "seccomp"
DISTRO_FEATURES:remove = "tpm"
DISTRO_FEATURES:remove = "xen"
DISTRO_FEATURES:remove = "rauc"
DISTRO_FEATURES:remove = "vmsep"
DISTRO_FEATURES:remove = "virtualization"
DISTRO_FEATURES:remove = "multiarch"
DISTRO_FEATURES:remove = "opengl"
DISTRO_FEATURES:remove = "openamp"
DISTRO_FEATURES:remove = "fbdev"
DISTRO_FEATURES:remove = "x11"
DISTRO_FEATURES:remove = "libmali"
DISTRO_FEATURES:remove = "pulseaudio"
DISTRO_FEATURES:remove = "gobject-introspection-data"
DISTRO_FEATURES:append = " ext3 ext4"
MACHINE_FEATURES:remove = "qemu-usermode"
MACHINE_FEATURES:remove = "wifi"
MACHINE_FEATURES:remove = "bluetooth"
MACHINE_FEATURES:remove = "usbhost"
MACHINE_FEATURES:remove = "usbgadget"
MACHINE_FEATURES_BACKFILL:remove = "qemu-usermode"
SDK_MACHINE_FEATURES:remove = "qemu-usermode"
IMAGE_FSTYPES:remove = "tar.gz cpio cpio.gz cpio.gz.u-boot wic.qemu-sd cpio.gz.u-boot ext4 wic"
EXTRA_IMAGEDEPENDS:remove = "qemu-system-native qemu-devicetrees-native qemu-helper-native:do_addto_recipe_sysroot" 
  • configure the linux kernel
bitbake -c menuconfig virtual/kernel
at the end prints the config file path: build/tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/linux-xlnx/6.6.40+git/linux-refdes_xu8_pe1_xczu4cg-standard-build/.config
bitbake -c diffconfig virtual/kernel
at the end prints the diff file path: build/tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/linux-xlnx/6.6.40+git/fragment.cfg
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ more tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/linux-xlnx/6.6.40+git/fragment.cfg
copy it to kernel-dsdm.cfg:
CONFIG_NO_IOPORT_MAP=y 
# CONFIG_EFI is not set 
# CONFIG_CAN is not set 
# CONFIG_BT is not set 
# CONFIG_CFG80211 is not set 
 
# 
# CFG80211 needs to be enabled for MAC80211 
# 
# CONFIG_RFKILL is not set 
# CONFIG_NET_9P is not set 
# CONFIG_PCI is not set 
# CONFIG_ATA is not set 
# CONFIG_WLAN is not set 
# CONFIG_DRM is not set 
# CONFIG_FB is not set 
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set 
# CONFIG_SOUND is not set 
# CONFIG_SURFACE_PLATFORMS is not set 
CONFIG_FPGA_MGR_DEBUG_FS=y 
# CONFIG_CDX_BUS is not set 
# CONFIG_BTRFS_FS is not set 
# CONFIG_QUOTA is not set 
# CONFIG_ECRYPT_FS is not set 
CONFIG_NFS_DISABLE_UDP_SUPPORT=y 
# CONFIG_NFSD is not set 
# CONFIG_RPCSEC_GSS_KRB5 is not set 
# CONFIG_SECURITYFS is not set 
# CONFIG_VIDEO_XILINX is not set 
# CONFIG_XILINX_TSN_SWITCH is not set 
# CONFIG_WIRELESS is not set 
# CONFIG_XILINX_EMACLITE is not set 
# CONFIG_XILINX_AXI_EMAC is not set 
  • rebuild the world
bitbake petalinux-image-minimal
before:
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ ls -l tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image*
lrwxrwxrwx 2 dsdmdev users       76 May 14 11:29 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image -> Image--6.6.40+git0+2b7f6f70a6-r0.1-refdes-xu8-pe1-xczu4cg-20260514181714.bin
-rw-r--r-- 2 dsdmdev users 23980544 May 14 11:29 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image--6.6.40+git0+2b7f6f70a6-r0.1-refdes-xu8-pe1-xczu4cg-20260514181714.bin
lrwxrwxrwx 2 dsdmdev users       76 May 14 11:29 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image-refdes-xu8-pe1-xczu4cg.bin -> Image--6.6.40+git0+2b7f6f70a6-r0.1-refdes-xu8-pe1-xczu4cg-20260514181714.bin
after:
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ ls -l tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image*
lrwxrwxrwx 2 dsdmdev users       76 May 31 10:25 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image -> Image--6.6.40+git0+2b7f6f70a6-r0.2-refdes-xu8-pe1-xczu4cg-20260531172530.bin
-rw-r--r-- 2 dsdmdev users 23980544 May 31 10:25 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image--6.6.40+git0+2b7f6f70a6-r0.2-refdes-xu8-pe1-xczu4cg-20260531172530.bin
lrwxrwxrwx 2 dsdmdev users       76 May 31 10:25 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image-refdes-xu8-pe1-xczu4cg.bin -> Image--6.6.40+git0+2b7f6f70a6-r0.2-refdes-xu8-pe1-xczu4cg-20260531172530.bin
  • did not take, my changes to kernel config were wiped out, deleted
  • find linux/virtual provider:
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ bitbake -e virtual/kernel | grep ^PREFERRED_PROVIDER_virtual/kernel
PREFERRED_PROVIDER_virtual/kernel="linux-xlnx"
  • create my overlay
bitbake-layers create-layer ../meta-custom-dsdm
bitbake-layers add-layer ../meta-custom-dsdm
mkdir ../meta-custom-dsdm/recipes-dsdm/linux-xlnx
mv kernel-dsdm.cfg ../meta-custom-dsdm/recipes-dsdm/linux-xlnx/
create ../meta-custom-dsdm/recipes-dsdm/linux-xlnx/linux-xlnx_%.bbappend
more ../meta-custom-dsdm/recipes-dsdm/linux-xlnx/linux-xlnx_%.bbappend
# here!

FILESEXTRAPATHS:prepend := "${THISDIR}:"
SRC_URI += "file://kernel-dsdm.cfg"

# end
bitbake-layers show-appends | grep linux-xlnx # check that our bbappend shows up
bitbake petalinux-image-minimal
ls -l tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image*
lrwxrwxrwx 2 dsdmdev users       76 May 31 12:15 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image -> Image--6.6.40+git0+2b7f6f70a6-r0.3-refdes-xu8-pe1-xczu4cg-20260531191411.bin
-rw-r--r-- 2 dsdmdev users 14696456 May 31 12:15 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image--6.6.40+git0+2b7f6f70a6-r0.3-refdes-xu8-pe1-xczu4cg-20260531191411.bin
lrwxrwxrwx 2 dsdmdev users       76 May 31 12:15 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image-refdes-xu8-pe1-xczu4cg.bin -> Image--6.6.40+git0+2b7f6f70a6-r0.3-refdes-xu8-pe1-xczu4cg-20260531191411.bin
now it took, kernel is half the size
try to boot, NFSROOT is somehow missing
menuconfig to enable networking, enable nfs client, enable NFSROOT, disable USB, wireless, bluetooth, network drivers other than MACB and MICREL PHY
bitbake petalinux-image-minimal
dsdmdev@dsdaqgw:/home1/dsdmdev/yocto-test3/build$ ls -l tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image*
lrwxrwxrwx 2 dsdmdev users       76 Jun  1 16:07 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image -> Image--6.6.40+git0+2b7f6f70a6-r0.5-refdes-xu8-pe1-xczu4cg-20260601230556.bin
-rw-r--r-- 2 dsdmdev users 15228936 Jun  1 16:07 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image--6.6.40+git0+2b7f6f70a6-r0.5-refdes-xu8-pe1-xczu4cg-20260601230556.bin
lrwxrwxrwx 2 dsdmdev users       76 Jun  1 16:07 tmp/deploy/images/refdes-xu8-pe1-xczu4cg/Image-refdes-xu8-pe1-xczu4cg.bin -> Image--6.6.40+git0+2b7f6f70a6-r0.5-refdes-xu8-pe1-xczu4cg-20260601230556.bin
our rootfs is here:
/home1/dsdmdev/yocto-test3/build/tmp/work/refdes_xu8_pe1_xczu4cg-xilinx-linux/petalinux-image-minimal/1.0/rootfs
  • things to try:
    • switch from rpm to deb: set PACKAGE_CLASSES = "package_deb"
    • stop building cortexa72-cortexa53-xilinx-linux, nope it looks to be part of the arm64 cross-compiler
  • clean, build from scratch
rm -rf tmp
rm -rf sstate-cache
bitbake petalinux-image-minimal
  • create SD card
take 8GB SD card
create vfat partition, type "C"
mkfs.vfat
fatlabel BOOT
cp boot.bin
cp boot.scr.uimg

bitbake

  • bitbake -e > xxx
  • bitbake -g petalinux-image-minimal ### creates task-depends.dot

minicom

  • minicom -D /dev/ttyACM0 -b 115200

SD card

  • use 8 GB, 16 GB, 32 GB SD flash
  • some SD flash is incompatible with this board (hot-plug the flash card, press the reset button)
  • make the flash card:
fdisk /dev/sdd # create one partition of type "C"
mkfs.vfat /dev/sdd1
mount /dev/sdd1 /mnt
cd /home/olchansk/git/ds-dm-gcdm/PetaLinux_GDM_CDM/images/linux
cp BOOT_CDM.BIN /mnt/BOOT.BIN
cp boot.scr /mnt/
cp image.ub /mnt/
cp uboot* /mnt
umount /mnt
  • should look like this:
# fdisk -l /dev/sdd
Disk /dev/sdd: 7.2 GiB, 7731150848 bytes, 15099904 sectors
Disk model: STORAGE DEVICE  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7aac34a0

Device     Boot Start     End Sectors  Size Id Type
/dev/sdd1  *     8192 6963199 6955008  3.3G  c W95 FAT32 (LBA)
# ls -l /mnt
total 17436
-rwxr-xr-x 1 root root 9455980 May 29 13:07 BOOT.BIN
-rwxr-xr-x 1 root root    2007 May 29 13:07 boot.scr
-rwxr-xr-x 1 root root 7865716 May 29 13:07 image.ub
-rwxr-xr-x 1 root root  262144 May 29 13:07 uboot.env
-rwxr-xr-x 1 root root  262144 May 29 13:07 uboot-redund.env

load FPGA from u-boot

ZynqMP> fpga info
Xilinx Device
Descriptor @ 0x000000007fddb2c0
Family:         ZynqMP PL
Interface type: csu_dma configuration interface (ZynqMP)
Device Size:    1 bytes
Cookie:         0x0 (0)
Device name:    zu4
Device Function Table @ 0x000000007fda5fe8
PCAP status     0xa0002fde
ZynqMP> 
cp CDM_XU8_top.bit /tftpboot/fpga.bit
dhcp
tftpb 0x10000000 fpga.bit
fpga loadb 0 0x10000000 ${filesize}
ZynqMP> dhcp
BOOTP broadcast 1
DHCP client bound to address 192.168.0.100 (1 ms)
*** Warning: no boot file name; using 'C0A80064.img'
Using ethernet@ff0b0000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.100
Filename 'C0A80064.img'.
Load address: 0x8000000
Loading: *
TFTP error: 'file /tftpboot/C0A80064.img not found for 192.168.0.100' (1)
Not retrying...
ZynqMP> tftpb 0x10000000 fpga.bit
Using ethernet@ff0b0000 device
TFTP from server 192.168.0.1; our IP address is 192.168.0.100
Filename 'fpga.bit'.
Load address: 0x10000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ############
         6.2 MiB/s
done
Bytes transferred = 7797807 (76fc2f hex)
ZynqMP> fpga loadb 0 0x10000000 ${filesize}
  design filename = "CDM_XU8_top;UserID=0XFFFFFFFF;Version=2022.2"
  part number = "xczu4cg-fbvb900-1-e"
  date = "2024/08/14"
  time = "14:18:22"
  bytes in bitstream = 7797692
zynqmp_align_dma_buffer: Align buffer at 0000000010000073 to 000000000fffff80(swap 0)
ZynqMP> 

load FPGA from Linux

# uname -a
Linux gdm201 6.6.40-xilinx-g3ccdfc015eea #1 SMP Tue Oct 29 11:52:30 UTC 2024 aarch64 GNU/Linux
# cp fpga.bit /lib/firmware/
# echo fpga.bit > /sys/class/fpga_manager/fpga0/firmware
# dmesg
[   14.315527] fpga_manager fpga0: writing fpga.bit to Xilinx ZynqMP FPGA Manager

AXI FIFO

End