Skip to content

parallella overview

Peter Saunderson edited this page Jul 27, 2016 · 4 revisions

Home / About

Aims of the project

This project started because it was difficult to create a HDL design and build an SD Card image for the Parallella board that had associated matching kernel source. Yocto is an obvious choice for creating the Linux environment, however suffers from the limitation that there is little or no support for creating the cross compiler for the target needed to build the Epiphany SDK.

What this project provides is a cohesive set of tools and source code that have been proven to work together because the correct git commits from the various submodules have been selected and proven to work.

Ready to go?

Try following the Getting Started Tutorial to get going without reading further.

In more detail

With this project it is now possible to start with an HDL design, create the necessary Linux Kernel drivers and create a Linux distribution that includes this design that can be loaded onto the Parallella board either via a web based update (using Smart) or by creating an SD card.

The Yocto environment also creates, from source, as part of the build, the Epiphany SDK. Epiphany software can be developed on the build machine using Eclipse and then either copied to the Parallella board or can be built into the Yocto build environment so that Epiphany software can be released via the same Smart Linux distribution channels available for the rest of the Linux applications.

Say that again!?

Lets expand a bit on the above paragraphs, with the example of the Epiphany Hello World (v2016.3) example, to help understand the implications:

  • The developer can compile the Epiphany Hello World (v2016.3) program on the build machine using the Yocto SDK and copy the Epiphany .elf and Arm executables onto the Parallella board to run on the target.
  • or the developer can compile the Epiphany Hello World (v2016.3) program on the target parallella board without the need to fetch the Epiphany SDK because it is already built into the Linux Distribution by the Yocto build.
  • Lets suppose that the developer implements a new FPGA module (in parallella-fpga/7020_hdmi) to provide a new feature for the elink to extend the hello world example in some way, for example adding the ability to interrupt the ARM CPU when the core has posted the message. This would perhaps require a new PL->PS interrupt line and a register that the epiphany chip can use to activate the interrupt. This work can be done with Vivado in the parallella-fpga submodule and the associated device tree can be built using the xilinx device tree tcl scripts using the device-tree-xlnx submodule.
  • Any new drivers that are needed to support the FPGA that the developer adds to the elink-redesign project (parallella-fpga/7020_hdmi) can also be developed in the same SDK environment using Eclipse as the development IDE. See the examples/kernel code for a hint at how to do this.
  • Now to pulling it all together and creating an SD card to prove the new design. Yocto allows a project to be split into separate cohesive parts each build with a separate recipe. In addition it allows recipes to inherit or include and override definitions contained in these recipes. Thus to build the new design into the linux kernel only requires the developer to change or create a simple recipe in the Yocto environment. The parallella-yoctobuild/meta-example layer give you an idea about what has to be added. The minimum is to add a definition for a new image (just like parallella-yoctobuild/meta-example/recipes/images/hdmi-image-example.bb) and if necessary a new bitstream (just like parallella-yoctobuild/meta-example/recipes-bsp/bitstream & device-tree).

A Tutorials for all the steps necessary are found in Tutorial Index tutorial.

About parallella

Introduction

Credits

Clone this wiki locally