148 lines
4.8 KiB
ReStructuredText
148 lines
4.8 KiB
ReStructuredText
.. _zybo:
|
|
|
|
Digilent Zybo
|
|
#############
|
|
|
|
Overview
|
|
********
|
|
|
|
The `Digilent Zybo`_ (ZYnq BOard) is a feature-rich, ready-to-use embedded software and digital
|
|
circuit development board. It is built around the Xilinx Zynq-7000 family, which is based on the
|
|
Xilinx All Programmable System-on-Chip (AP SoC) architecture. This architecture tightly integrates a
|
|
dual-core ARM Cortex-A9 processor with Xilinx 7-series Field Programmable Gate Array (FPGA) logic.
|
|
|
|
.. figure:: zybo-0.jpg
|
|
:align: center
|
|
:alt: Digilent Zybo
|
|
|
|
Digilent (Credit: Digilent)
|
|
|
|
Hardware
|
|
********
|
|
|
|
Supported Features
|
|
==================
|
|
|
|
The zybo board configuration supports the following hardware features:
|
|
|
|
+------------+------------+-------------------------------------+
|
|
| Interface | Controller | Driver/Component |
|
|
+============+============+=====================================+
|
|
| GICv1 | on-chip | ARM generic interrupt controller v1 |
|
|
+------------+------------+-------------------------------------+
|
|
| ARCH TIMER | on-chip | ARM architected timer |
|
|
+------------+------------+-------------------------------------+
|
|
| PINCTRL | on-chip | pinctrl |
|
|
+------------+------------+-------------------------------------+
|
|
| GPIO | on-chip | gpio |
|
|
+------------+------------+-------------------------------------+
|
|
| UART | on-chip | serial port-polling; |
|
|
| | | serial port-interrupt |
|
|
+------------+------------+-------------------------------------+
|
|
|
|
The default configuration can be found in
|
|
:zephyr_file:`boards/digilent/zybo/zybo_defconfig`
|
|
|
|
Other hardware features are not currently supported by the port.
|
|
|
|
Programming and Debugging
|
|
*************************
|
|
|
|
The Zynq-7000 series SoC needs to be initialized prior to running a Zephyr application. This can be
|
|
achieved in a number of ways (e.g. using the Xilinx First Stage Boot Loader (FSBL), the Xilinx
|
|
Vivado generated ``ps_init.tcl`` JTAG script, Das U-Boot Secondary Program Loader (SPL), ...).
|
|
|
|
The instructions here use the U-Boot SPL. For further details and instructions for using Das U-Boot
|
|
with Xilinx Zynq-7000 series SoCs, see the following documentation:
|
|
|
|
- `Das U-Boot Website`_
|
|
- `Using Distro Boot With Xilinx U-Boot`_
|
|
|
|
Building Das U-Boot
|
|
===================
|
|
|
|
Clone and build Das U-Boot for the Digilent Zybo:
|
|
|
|
.. code-block:: console
|
|
|
|
git clone -b v2022.04 https://source.denx.de/u-boot/u-boot.git
|
|
cd u-boot
|
|
make distclean
|
|
make xilinx_zynq_virt_defconfig
|
|
export PATH=/path/to/zephyr-sdk/arm-zephyr-eabi/bin/:$PATH
|
|
export CROSS_COMPILE=arm-zephyr-eabi-
|
|
export DEVICE_TREE="zynq-zybo"
|
|
make
|
|
|
|
Flashing
|
|
========
|
|
|
|
Here is an example for running the :ref:`hello_world` application via JTAG.
|
|
|
|
Ensure the board is configured for JTAG boot, open a serial terminal, turn on/reset the board (press
|
|
the ``PS-SRST`` button), and initialize the Zynq-7000 series SoC by uploading and running the U-Boot
|
|
SPL via JTAG.
|
|
|
|
Next, upload and run the Zephyr application:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:board: zybo
|
|
:goals: flash
|
|
|
|
You should see the following message in the terminal:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS vx.xx.x-xxx-gxxxxxxxxxxxx ***
|
|
Hello World! zybo
|
|
|
|
Another option is to load and run the :ref:`hello_world` application via U-Boot. Copy
|
|
``u-boot/spl/boot.bin``, ``u-boot/u-boot.img``, and ``zephyr/zephyr.bin`` to a FAT32 formatted
|
|
microSD card, insert the card in the ``SD MICRO`` slot on the Zybo board, ensure the board is
|
|
configured for ``SD`` boot, and turn on the board.
|
|
|
|
Once U-boot is done initializing, load an run the Zephyr application:
|
|
|
|
.. code-block:: console
|
|
|
|
Zynq> fatload mmc 0 0x0 zephyr.bin
|
|
817120 bytes read in 56 ms (13.9 MiB/s)
|
|
Zynq> go 0x0
|
|
## Starting application at 0x00000000 ...
|
|
*** Booting Zephyr OS vx.xx.x-xxx-gxxxxxxxxxxxx ***
|
|
Hello World! zybo
|
|
|
|
Debugging
|
|
=========
|
|
|
|
Here is an example for the :ref:`hello_world` application.
|
|
|
|
Ensure the board is configured for JTAG boot, open a serial terminal, turn on/reset the board (press
|
|
the ``PS-SRST`` button), and initialize the Zynq-7000 series SoC by uploading and running the U-Boot
|
|
SPL via JTAG.
|
|
|
|
Next, upload and debug the Zephyr application:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:board: zybo
|
|
:goals: debug
|
|
|
|
Step through the application in your debugger, and you should see the following message in the
|
|
terminal:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx ***
|
|
Hello World! zybo
|
|
|
|
.. _Digilent Zybo:
|
|
https://digilent.com/reference/programmable-logic/zybo/start
|
|
|
|
.. _Das U-Boot Website:
|
|
https://www.denx.de/wiki/U-Boot
|
|
|
|
.. _Using Distro Boot With Xilinx U-Boot:
|
|
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/749142017/Using+Distro+Boot+With+Xilinx+U-Boot
|