184.108.40.206. Build Red Pitaya ecosystem¶
Go to red pitaya (git) directory.
If it returns an empty line, set it up by typing the following command into the terminal:
This line can also be added to the end of .bashrc and will automatically set the
$LC_ALL variable each time the
terminal is started.
It is not possible to build an ecosystem on an encrypted home directory, since schroot can not access that
directory. We recommend that you make a separate directory in home directory that is not encrypted e.g.
220.127.116.11.1. Red Pitaya ecosystem and applications¶
Here you will find the sources of various software components of the Red Pitaya system. The components are mainly contained in dedicated directories, however, due to the nature of the Xilinx SoC “All Programmable” paradigm and the way several components are interrelated, some components might be spread across many directories or found at different places one would expect.
API source code for
WEB application for the old environment (also with controller modules & GUI clients)
WEB interface home page and some system management applications
Nginx server with dependencies, Bazaar module & application controller module loader
FPGA design (RTL, bench, simulation and synthesis scripts) SystemVerilog based for newer applications
GNU/Linux operating system components
Directory containing patches
Command line utilities (acquire, generate, …), tests
Examples in different programming languages for working with peripherals
Scripts for building an ecosystem and preparing an image for writing to a memory card
18.104.22.168.1.1. Supported platforms¶
Red Pitaya is developed on Linux (64bit Ubuntu 18.04), so Linux is also the only platform we support.
22.214.171.124.1.2. Software requirements¶
You will need the following to build the Red Pitaya components:
Various development packages.
# generic dependencies sudo apt-get install make curl xz-utils # U-Boot build dependencies sudo apt-get install libssl-dev device-tree-compiler u-boot-tools # secure chroot sudo apt-get install schroot # QEMU sudo apt-get install qemu qemu-user qemu-user-static # 32 bit libraries sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6
Meson Build system (depends on Python 3) is used for some new code. It is not required but can be used during development on x86 PC.
sudo apt-get install python3 python3-pip sudo pip3 install --upgrade pip sudo pip3 install meson sudo apt-get install ninja-build
Xilinx Vivado 2020.1 FPGA development tools. The SDK (bare metal toolchain) must also be installed, be careful during the install process to select it. Preferably use the default install location.
If you want to run Vivado from virtual machine and Vivado is installed on host shared folder, than we suggest you to use VirtualBox, since VMware has a bug in vmware-tools for Ubuntu guest and can not mount vmhgfs shared file system type.
Then install Ubuntu 18.04 in VirtualBox (NOTE: don’t use encrypt installation, since it blocks some Red Pitaya build procedures).
After successfully installation, change settings for Ubuntu virtual machine. Go to Shared Folders menu and choose Xilinx installation directory on the host machine (by default is under /opt/ directory). And choose Auto-mount option (checkbox).
Then you must install (on Ubuntu guest) a package dkms.
$ sudo apt-get install virtualbox.guest-dkms
After reboot Ubuntu guest, you can access (with superuser/root privileges) Xilinx shared folder under /media/sf_Xilinx subdirectory.
Now you can manage this system to meet your requirements.
Vivado requires a
gmakeexecutable which does not exist on Ubuntu. It is necessary to create a symbolic link to the regular
$ sudo ln -s /usr/bin/make /usr/bin/gmake
126.96.36.199.2. Build process¶
To implement the build process, at least 8GB available space on PC local machine is required.
1. Go to your preferred development directory and clone the Red Pitaya repository from GitHub. The choice of specific branches or tags is up to the user.
git clone https://github.com/RedPitaya/RedPitaya.git cd RedPitaya
You can run a script that builds the ecosystem from the build_scripts folder To build an ecosystem for board 125-14:
cd ./RedPitaya/build_scripts sudo ./build_Z10.sh
To build an ecosystem for board 125-14 (Z7020):
cd ./RedPitaya/build_scripts sudo ./build_Z20_125.sh
To build an ecosystem for board 125-14 4-Input (Z7020):
cd ./RedPitaya/build_scripts sudo ./build_Z20_4CH.sh
To build an ecosystem for board 122-16:
cd ./RedPitaya/build_scripts sudo ./build_Z20.sh
To build an ecosystem for board 250-12:
cd ./RedPitaya/build_scripts sudo ./build_Z250_12.sh
or follow the steps of the instructions and build yourself
2. An example script
settings.sh is provided for setting all necessary environment variables.
The script assumes some default tool install paths, so it might need editing if install paths other than the ones described above were used.
3. Prepare a download cache for various source tarballs.
This is an optional step which will speedup the build process by avoiding downloads for all but the first build.
There is a default cache path defined in the
settings.sh script, you can edit it and avoid a rebuild the next time.
mkdir -p dl export DL=$PWD/dl
4. Download the ARM Ubuntu root environment (usually the latest) from Red Pitaya download servers.
You can also create your own root environment following instructions in OS image build instructions.
Correct file permissions are required for
schroot to work properly.
wget https://downloads.redpitaya.com/downloads/LinuxOS/redpitaya_ubuntu_04-oct-2021.tar.gz sudo chown root:root redpitaya_ubuntu_04-oct-2021.tar.gz sudo chmod 664 redpitaya_ubuntu_04-oct-2021.tar.gz
5. Create schroot configuration file
Replace the tarball path stub with the absolute path of the previously downloaded image.
Replace user names with a comma separated list of users whom should be able to compile Red Pitaya.
[red-pitaya-ubuntu] description=Red Pitaya Debian/Ubuntu OS image type=file file=absolute-path-to-red-pitaya-ubuntu.tar.gz users=comma-separated-list-of-users-with-access-permissions root-users=comma-separated-list-of-users-with-root-access-permissions root-groups=root profile=desktop personality=linux preserve-environment=true
Example of configuration file:
[red-pitaya-ubuntu] description= Red pitaya type=file file=/home/user/RedPitaya/redpitaya_ubuntu_04-oct-2021.tar.gz users=root root-users=root root-groups=root personality=linux preserve-environment=true
6. To build everything a few
make steps are required.
make -f Makefile.x86 schroot -c red-pitaya-ubuntu <<- EOL_CHROOT make EOL_CHROOT make -f Makefile.x86 zip
7. If you want build for 122-16 based on Z7020 xilinx, you must pass parameter FPGA MODEL=Z20 in makefile This parameter defines how to create projects and should be transferred to all makefiles.
make -f Makefile.x86 MODEL=Z20 schroot -c red-pitaya-ubuntu <<- EOL_CHROOT make MODEL=Z20 EOL_CHROOT make -f Makefile.x86 zip MODEL=Z20
8. If you want build for 125-14 4-Input based on Z7020 xilinx, you must pass parameter FPGA MODEL=Z20_125_4CH in makefile This parameter defines how to create projects and should be transferred to all makefiles.
make -f Makefile.x86 MODEL=Z20_125_4CH schroot -c red-pitaya-ubuntu <<- EOL_CHROOT make MODEL=Z20_125_4CH EOL_CHROOT make -f Makefile.x86 zip MODEL=Z20_125_4CH
9. If you want build for 250-12 based on Z7020 xilinx, you must pass parameter FPGA MODEL=Z20_250_12 in makefile This parameter defines how to create projects and should be transferred to all makefiles.
make -f Makefile.x86 MODEL=Z20_250_12 schroot -c red-pitaya-ubuntu <<- EOL_CHROOT make MODEL=Z20_250_12 EOL_CHROOT make -f Makefile.x86 zip MODEL=Z20_250_12
To get an interactive ARM shell do.
schroot -c red-pitaya-ubuntu
188.8.131.52.3. Partial rebuild process¶
The next components can be built separately. By default, the project is built for RedPitaya 125-14 (Z7010), if necessary build for the (RedPitaya 122-16) Z7020, use the parameter MODEL=Z20 and parameter MODEL=Z20_250_12 for RedPitaya (250-12) Z7020.
FPGA + device tree
184.108.40.206.3.1. Base system¶
Here base system represents everything before Linux user space.
To be able to compile FPGA and cross compile base system software, it is necessary to setup the Vivado FPGA tools and ARM SDK.
$ . settings.sh
On some systems (including Ubuntu 18.04) the library setup provided by Vivado conflicts with default system libraries. To avoid this, disable library overrides specified by Vivado.
$ export LD_LIBRARY_PATH=""
After building the base system it can be installed into the directory later used to create the FAT filesystem compressed image.
$ make -f Makefile.x86 install
220.127.116.11.3.1.1. FPGA and device tree sources¶
$ make -f Makefile.x86 fpga
Detailed instructions are provided for building the FPGA including some device tree details.
18.104.22.168.3.2. Device Tree compiler + overlay patches¶
Download the Device Tree compiler with overlay patches from Pantelis Antoniou.
Compile and install it.
Otherwise a binary is available in
$ sudo apt-get install flex bison $ git clone email@example.com:pantoniou/dtc.git $ cd dtc $ git checkout overlays $ make $ sudo make install PREFIX=/usr
To build the U-Boot binary and boot scripts (used to select between booting into Buildroot or Debian/Ubuntu):
make -f Makefile.x86 u-boot
The build process downloads the Xilinx version of U-Boot sources from Github, applies patches and starts the build process.
Patches are available in the
22.214.171.124.3.2.2. Linux kernel and device tree binaries¶
To build a Linux image:
make -f Makefile.x86 linux make -f Makefile.x86 linux-install make -f Makefile.x86 devicetree make -f Makefile.x86 devicetree-install
The build process downloads the Xilinx version of Linux sources from Github, applies patches and starts the build process.
Patches are available in the
126.96.36.199.3.2.3. Boot file¶
The created boot file contains FSBL, FPGA bitstream and U-Boot binary.
make -f Makefile.x86 boot
188.8.131.52.3.3. Linux user space¶
184.108.40.206.3.3.1. Debian/Ubuntu OS¶
Debian/Ubuntu OS instructions are detailed elsewhere.
To compile the API run:
The output of this process is the Red Pitaya
librp.so library in
The header file for the API is
redpitaya/rp.h and can be found in
You can install it on Red Pitaya by copying it there:
scp api/lib/librp.so firstname.lastname@example.org:/opt/redpitaya/lib/
220.127.116.11.3.3.3. SCPI server¶
Scpi server README can be found
To compile the server run:
make scpi MODEL=Z10
The compiled executable is
You can install it on Red Pitaya by copying it there:
scp scpi-server/scpi-server email@example.com:/opt/redpitaya/bin/
18.104.22.168.3.3.4. Free applications¶
To build free applications, follow the instructions given