RoadTest: Read the Reviews of the Avnet ZUBoard 1CG Development Kit
Author: rlewicki
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: False
What other parts do you consider comparable to this product?: The AVNET Ultra96 V2 is a more expensive older MPSoC Ultrascale+ Zynq development board with only WiFi and no wired Ethernet but with a more powerful chipset and more DDR4 memory but no temperature nor tri-colored LEDs.
What were the biggest problems encountered?: 1) The board had a cold solder joint on the negative side of the CR2032 3.0 coin cell battery holder. I had to re-solder the connector to the board. 2) The latest version of the AMD/Xilinx toolset (version 2023.1 ) is incompatible without a lot of serious Yocto work required to get Petalinux to compile (petalinux-build). I finally gave up and resorted to the 2022.2.1 toolset. 3) All of the blogs I read were fairly difficult to follow if you are a neophyte; luckily I am not. 4) The next time, it would have been nice to have a parts list to be able to check off when we received the kit. The microSD card was a bit low on the capacity (8 Gig), so I used one of my own 16 Gig microSD cards. 5) It would suggest in the future to include a grounding alligator jumper to be ground it from a static electricity perspective (obviously as an engineer I have many). 6) I would have liked to have some sort of Samtec connector based small display device or fiber optic interface. 7) It would have also been nice to have a Samtec analog interface to hook up to a 'scope to validate analog signals.
Detailed Review:
I started this adventure when I received the package.
After opening to box, I found the following contents:
In the box I found the following:
after examining the parts, specifically the actual ZUBoard 1CG I noticed on the backside that the battery holder was broken off with a cold solder joint showing.
so I re-soldered it.
In order to work with the kit, I wanted to start from ground-up with a complete development machine. Therefore I built up a completely re-used Dell Optiplex 2010 desktop computer.
I did exchange the hard disk with a 2 TB SSD. The other resources for the workstation included:
32 Gig of DDR4 RAM
Intel Core i7-4770 hyperthreaded quad core for eight thread at 3.4 GHz.
For the software, I started with Ubuntu 22.04.2 desktop version so that I could install Petalinux. A Linux platform is required to be able to install Petalinux and Vitis-AI natively (without using Oracle Box VM or an MS Windows Hyper-V environment). I used a 2 TB SSD to get the most speed for the Vivado and Petalinux compiles. I installed a few utilities such as BalenaEtcher and PUTTY serial interface utilities. Also required, if only to remove the annoying warnings that a tftp client was not found, I installed tftp. Typically, I just change the setting in the petalinux-config to not attempt to copy files to the tftp directory as I'll either move them to an microSDCard or use the hardware manager to JTAG the device.
So, firstly, I just wanted to power up the board to see if it "looks" like it works, so I connected the USB-C cable to the USB-C connector on the board, and then to the power adapter and plugged it in.
Looks good as the power LED seems lit. I wasn't expecting much else.
I wanted to test rudiments first, such as the tri-color LED, the Ethernet PHY, the serialized terminal support, and the processor's ARM Cortex dual A53s running Petalinux.
Therefore, I created a very simple Vivado project which basically included a processor (a ZYNQ Ultrascale+ MPSoC) and processor system reset controller, AXI interconnect, an AXI GPIO with the tri-color LED as outputs on the least significant three bits, and and AXI I2C I/O for the temperature sensor. The intent was to test the tri-color LED, the Ethernet connectivity, the serial port (USB) and of course the booting from the microSD card.
I built this (synthesis, implementation, and subsequent bitstream creation) project, exported the hardware with the bitstream and imported that into a brand new Petalinux project .
After configuring the Petalinux environment to use local downloads (very large gigabytes file from Xilinx/AMD's Petalinux download site) and sstate-cache (also large file from Xilinx/AMD Petalinux's download site) instead of going out to the Internet for resolving references, it built successfully. I should note that when I installed the 2023.1 toolset, I received consistent Petalinux errors indicating issues with the ARM Cortex CPU2 and CPU3 which don't exist on a two CPU version of the FPGA which is on the ZUBoard1CG (XIlinx/AMD FPGA part: xczu1cg-sbva484-1-e on the board). Since I knew that the 2022.2 works, it was easier to just reinstall with the previous version of the Xilinx/AMD toolset.
I ran the petalinux-create specifying the proper processor architecture which is a zynqMP using the "--template zynqMP" argument providing a name (-n project name), and type (-t project).
Then using the petalinux-config, I specified the project.xsa file created and exported from the Vivado project. Then changing the Yocto settings to specify the downloads local directory and the sstate-cache directories and setting the no-network setting. Then ran the petalinux-config with the -c rootfs to enable peek & poke utilities (default is not enabled). And finally, to build: petalinux-build (no parameters). After a few hours on this machine, the build succeeded.
I then used the petalinux-package to package the project into a petalinux-sdimage.wic file. I then used the BalenaEtcher application to format and install the filesystem and files to the microSD card and then copied the image.ub file to the root partition.
I needed to change the default boot switch (switch 2) settings to insure that the board would boot from the microSD card (off, on, off, on) . The board can boot from JTAG (although the pins for the JTAG don't exist and need to be soldered in) , the QSPI, and the microSD card.
Inserting the newly prepared microSD card into the ZUBoard 1CG board, powering up the board:
Success!
I was able to establish a PUTTY session (115200 BAUD) and log into it with a petalinux userID and it asked to change the initial password, which I did. Then came the fun part: poking a memory mapped i/o to see if I could change the LED colors (let alone light it up. Therefore with a logged in session in PUTTY, and running the:
sudo poke 0xA0000000 [value] such as:
to turn off the tri-color LED:
sudo poke 0xA0000000 0x0
to turn the tri-color LED to a blue color:
sudo poke 0xA0000000 0x1
to turn the tri-color LED to a green color:
sudo poke 0xA0000000 0x2
to turn the tri-color LED to a red color:
sudo poke 0xA0000000 0x4
and any colors in between with values ranging from 1 thru 7 for the value argument.
Green:
Red:
White:
The next step is going to be implementing an AI task (specifically a inference engine)..
Unfortunately due to a serious life threatening issue with a member of the famiy, I will have to complete this in 1.5 weeks when I return from an out of the country emergency travel.
This board is insanely full of capabilities. So far, I am thoroughly excited about this development board.