Objective: This is an introduction to the Ultra96-V2 board. It covers a brief background on the relationship between the board, Xilinx and the 96Boards. It presents the necessary accessories and takes the reader through some initial board bring-up. It also covers the software development options available for the board and within Xilinx ecosystem.
Recommended prerequisite articles to read:
Xilinx and Avnet
Xilinx offers a wide range of products ranging from hardware to software development tools targeting this hardware. Their biggest specialty is in FPGA field. They offer not only the FPGA chips (ICs) but also development (evaluation) boards to help developers accelerate utilization of various FPGA families. Xilinx individually develops over 100 such boards targeting its line of FPGAs, DSPs and other embedded devices. Xilinx also partners with other electronic companies to manufacture evaluation boards that use Xilinx products in addition to other devices. Such a partner is Avnet which is the official manufacturer and vendor of the Ultra96 board which was released in 2018. This board incorporates the Xilinx Zynq UltraScale+TM MPSoC.
Zynq UltraScale+ MPSoC
This chip from Xilinx, as the name suggests, incorporates both programmable logic and processing system (PS) on a single chip. MPSoc (Multi-Processor SoC) implies that the processing system is comprised of multiple (and heterogeneous) processors. The Zynq UltraScale+TM MPSoC has three distinct variants (CG, EG and EV) based on the type and range of processors in its PS. All the three variants have a common real-time processor (RPU) which is the Dual-core Arm Cortex-R5F processor. The difference is based on how many cores is the Application Processing Unit (APU), if GPU is included and finally if there is a video codec. The differences are highlighted in the table below
|Feature||CG Devices||EG Devices||EV Devices|
|RPU||Dual-core Arm Cortex-R5F||Dual-core Arm Cortex-R5F||Dual-core Arm Cortex-R5F|
|APU||Dual-core Arm Cortex-A53||Quad-core Arm Cortex-A53||Quad-core Arm Cortex-A53|
The 64-bit APU enables high-level operating system support, e.g., Linux. The Ultra96-v2 is based on the EG MPSoC variant. Hence it doesn’t include the video codec. The block diagram of this variant is shown below
Ultra96 and Linaro 96Boards Specifications
From the above block diagram, we can see that the Xilinx Zynq UltraScale+TM MPSoC chip provides interfaces for external interaction such as memory, USB, PCIe amongst others. The Ultra96-v2 board completes the equation by providing the physical connections to these interfaces. Hence you have a physical memory (LPDDR4) chip connected, a physical WiFi/Bluetooth interfaced, microSD, Mini DisplayPort etc.
As introduced, the board is a product of Avnet, which is an alliance partner of Xilinx. It’s based on the Linaro 96Boards Consumer Edition Specification. This note is important to get more details on it. The 96Boards Program is a specification for developing SoC boards that is open and anyone can develop on it. However, to use their logo and brand, you need to be either a member of their steering committee, a manufacturing partner or a subscribed partner. Some of the requirements for a 96Boards Consumer Edition include:
- Low cost ($50-100 retail for a minimum configuration)
- Card form factor – 85 x 54 x 12 mm (Extended Version Option – 85 x 100 x 12 mm)
- Easy to extend with off the shelf parts available to maker community and OEMs
- 5 GB RAM (minimum 1 GB recommended for Android)
- WiFi 802.11g/n and Bluetooth 4.0 LE
The cover image shows a newly arrived Ultra96v2 board. The board doesn’t come with any cables nor a power supply. These can be purchased separately as accessories. The power supply must be rated at 12V DC and provides a minimum current of 2A.
It comes with a single page “getting started” guide, a Voucher for Xilinx Vivado Design Edition and a 16 GB microSD card with an adapter, both from Delkin Devices.
Accessories to Purchase Separately
As noted, the package contains only the board, SD card and a guide. The following are recommended to make full use of the board:
- DC Power Supply (12V 3A)
- USB to UART & JTAG Adapter (Ultra96 USB-to-JTAG/UART Pod is recommended)
- Mini-DisplayPort to HDMI Adapter (must be Active)
- Keyboard / Mouse set (Wireless OK)
- Camera (e.g. Logitech and Logicool series)
- Other Mezzanine Boards
- microSD to USB adapter may be necessary too
The microSD card in the package is blank and needs to be loaded with Linux boot files from http://avnet.me/ultra96-v2-oob.
From experience, the download from this site is relatively slow and can result in a broken archive file. For reference, the correct downloaded archive file has a size of 743,668 KB. On extraction, this gives an image that is 8 GB in size (at the time of this writeup).
Download and install Etcher on your host machine to enable flashing of the above image to the microSD card. The diagram below shows the Etcher interface for this process, which is straightforward.
After the image has been written into the microSD card, insert it into the J2 card slot on the Ultra96 board.
The boot mode switch, SW3 is set to SD card boot mode. This is the default setting on a new board.
The next step is powering up the board. Once the power plug is connected, the LED D17 comes on but the board is not yet powered. To do this, you need to press and release switch SW4. To power off the board, you repeat this step. The board will take 20-30 seconds to finally shut down.
At this point, there are at least three ways you can access the Ultra96-v2 terminal or the webserver running onboard (part of the installed image):
- Mini DisplayPort – Connect the miniDP-to-HDMI cable with a HDMI Monitor. If the cable is working, the Ultra96-v2 Linux desktop environment will be displayed on the monitor and user can interact with it. From here, the user can open the terminal/console and/any other application as would in any other Linux environment. This requires attaching a mouse and keyboard to the board. The wireless mouse and keyboard combo saves one USB port.
- UART – Connect the USB JTAG/UART Pod to a PC/laptop. Open a serial terminal (e.g. TeraTerm) with the settings 115200-8-N-1. On boot-up, the Ultra96-v2 terminal will be displayed on the serial terminal of your PC. You can now interact with the board via this terminal without need for connecting a mouse and monitor to the board.
Webapp (No Internet)- If you don’t have any of the two cables above, you can still access the board wirelessly. On boot-up, the installed image automatically enables WiFi on the board. On your Wi-Fi capable PC/laptop, in the available Wi-Fi networks, the Ultra96-v2_<MAC_ADDRESS> will appear as an open network. Connect to it and open a browser on the local machine. Enter the IP address of the board which is http://192.168.2.1. This gives access to the Ultra96-v2 Webserver as shown
More on the getting started can be found in the Avnet document here.
Once the initial boot-up process has been completed, the rest of the resources are mostly Xilinx based. One of the useful guides is the Zynq UltraScale+ MPSoC: Software Developers Guide. There are different paradigms and tools available for programming software for the Zynq UltraScale+TM MPSoC. These are briefly presented below.
- Vivado Design Suite: This is the IDE targeting the FPGA fabric i.e. the Programmable Logic (PL) of the Zynq device. It allows Register transfer level (RTL) design in Verilog, VHDL and SystemVerilog. It also provides numerous Xilinx IPs for easy integration either through the RTL or as a block design. The IDE also automates the process of bitstream generation including synthesis, implementation, design and timing constraints amongst others.
- Xilinx Software Development Kit (SDK): This is an Eclipse based IDE targeting the Processing System (PS) of the Zynq device. Hence it enables creation of software applications for the APU (Arm Cortex-A53), RPU (Arm Cortex-R5F) and soft-core processor (Xilinx MicroBlaze). It provides various methods to create applications including bare metal, FreeRTOS and Linux applications. The SDK also provides library examples of OpenCV, OpenAMP RPC, FreeRTOS “HelloWorld”, IwIP and others. The SDK also provides FPGA and Flash Programmers for programming bitstreams (and software application images) to FPGAs and flash devices respectively.
- PetaLinux Tools: Provided by Xilinx as a standalone SDK that simplifies the process of configuring, building and deploying open source and systems software to Xilinx devices including: FSBL, U-BOOT, Linux, Libraries and applications, Xen Hypervisor etc. The PetaLinux Tools include: GNU, Make, GDB, QEMU, petalinux-build, petalinux-boot. It also includes the Yocto Extensible SDK (eSDK) and Minimal downloads. The Yocto eSDKs are available for the following architectures: Zynq UltraScale+TM MPSoC, Zynq-7000 devices and MicroBlaze platforms.
- Yocto Project Environment: This is an open source project that enables creation of a customized Linux OS for different hardware architectures. It is extensively covered in its website and documentations. I will also cover it in a different category in these tutorial series. Xilinx provides the meta-xilinx recipe/layer for the Yocto/OpenEmbedded platform. It provides a number of BSPs for common boards that use Xilinx devices including the Zynq UltraScale+TM MPSoC. The Yocto environment provides recipes for other general Linux system components for a display UI such as X11, GTK+, Qt, amongst others.
The above are tools and IDEs that enable creation of software for the Zynq UltraScale+TM MPSoC. The actual software is created in one or a combination of the following software stacks:
- Bare Metal Software Stack: This is provided as part of the Xilinx SDK tools as a standalone board support package (BSP). It includes standard C libraries, peripheral drivers for both PS and PL, middleware libraries for providing networking, file system and encryption support and application examples. The block diagram below from Xilinx shows this stack.
In the next writeup in this series, we will explore developing software for the Zynq UltraScale+TM MPSoC from a Xilinx perspective using one of the above software stacks.