Skip to content
Peter Saunderson edited this page Aug 18, 2016 · 10 revisions

Home / Tutorial Index / Getting started

Building Linux

Introduction

As an HDL developer it is hard to work out how to create an FPGA and test it on the Parallella board with the minimum of effort.

As an Epiphany Application developer it is hard to work out how to build your application and release it to the Parallella board.

As any novice it is daunting to create a Linux system.

This guide is for you, by completing the following steps you will be able to create and image and will know how to modify the build process to include a specific FPGA bitstream and how to compile Epiphany application code and include it in the Linux distribution.

Installing required packages for yocto

To use yocto you first need to install some packages. See latest Yocto Project Quick Start. This assumes you are working on a Ubuntu machine:

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

Installing required software for Xilinx fpga development

THIS STEP IS OPTIONAL: To use the parallella template project ./parallella-fpga/7020_hdmi you need to install the version of Vivado specified in https://github.com/peteasa/parallella-fpga/tree/elink-redesign/AdiHDLLib/README.md (or whatever branch you are using). At the time of writing this was Vivado 2015.2.1 see http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2015-2.html, download 2015.2 and 2015.2.1 update

Cloning this repository

Clone this repository onto your Linux build machine:

$ git clone [email protected]:peteasa/parallella
$ cd parallella

Checkout the branch that provides the versions that you want to use. If you want the very latest then the default branch (elink-redesign) is good for you.

For this tutorial lets use the meta-example layer to demonstrate how to "grow your own" version of linux when you are more familar with the process:

$ git checkout parallella-elink-redesign

Then to prepare the environment and download the necessary git submodules, you need to run the initgitsubmodules.sh script. This only needs to be done once:

$ source initgitsubmodules.sh

The result will be new folders that will be modified as part of this tutorial:

  • examples: this is where I store the epiphany hello world application
  • examples/fpga: this is where I store releases of the FPGA bitstream
  • parallella-fpga/7020_hdmi: this is the source HDL code for the FPGA bitstream
  • parallella-yoctobuild: this is the main Yocto build project where we will learn to build the Linux distribution.
  • parallella-yoctobuild/meta-example: this is the Yocto layer that we will use to add our FPGA and our Epiphany source code to the Linux build

There are a number of other folders created that we dont necessarily have to use:

  • parallella-fpga/parallella-hw: this is a clone of the official parallella-hw project
  • parallella-fpga/device-tree-xlnx: this is a clone of the xilinx device tree generation tcl scripts used as a reference for the released device tree
  • parallella-fpga/AdiHDLLib: this is a snapshot of the Analog Devices Inc libraries I used to add the hdmi and sound to the elink-redesign project
  • parallella-yoctobuild/poky: this is the main Yocto script project
  • parallella-yoctobuild/meta-xilinx: this is a xilinx maintained layer used as a basis for building zynq based projects
  • parallella-yoctobuild/meta-parallella: this is a layer used to add parallella specific modules to the Linux distribution
  • parallella-yoctobuild/meta-epiphany: this is a layer used to build the Epiphany SDK
  • parallella-yoctobuild/meta-exotic: this is a generic layer used to build non-native or exotic compilers for the target

Updating this clone of the repository

From time to time updates are made available to the project. To take advantage of these updates I have provided a template script that can be used to pull the latest changes:

$ source updatesubmodules.sh

If you make modifications to your clone then this script will fail to update everything because git will require you to "merge" the latest updates into your copy of the repository. The very simplest way to handle this is to keep a local copy of your changed files and revert the projects to unchanged state, update to the latest and then re-apply your changes.

Better is to use a directory that is included in the .gitignore file for your work. Thus when the clone is updated your work is not affected by the update and you can then take any new changes that you need from the update into your working area.

In a future tutorial I will recommend a working folder for every section that you need to modify (for example parallella-yoctobuild/meta-mywork and myexamples/fpga / myexamples.git. But for this getting started tutorial I will assume that you dont plan to make many changes and just plan to get used to the environment and what it has to offer.

Click on the link below to continue the Getting Started tutorial and see how easy it is to build the Linux environment!

Building Linux