The Adapteva Parallella is a family of credit card sized single board computers. Based on the dual-core Zynq-7000 series of ARMv7-A processors, they also contain a built-in FPGA and Epiphany-III 16-core co-processor. The board is intended to democratise access to parallel programming, due to the price, number of cores and low power draw (5W).
The Parallella was crowdfunded via Kickstarter, and the schematics and design files were released as open source.
Generally available Parallella hardware comes in three forms:
- Parallella-16 Micro Server
- Parallella-16 Desktop Computer
- Parallella-16 Embedded Platform
Kickstarter backers would have been able to receive a limited number of Parallella-64s with a 64-core co-processor, but these were not mass-produced and are not covered here.
Parallella-16 Micro Server
|Max. 1500 MTU
Parallella-16 Desktop Computer
Includes all hardware of the Parallella-16 Micro Server, additionally with:
|via Porcupine board
Parallella-16 Embedded Platform
Includes the hardware of the Parallella-16 Desktop Computers, except the CPU is upgraded to the Zynq-7020. EP devices must use FPGA firmware built for Zynq-7020 devices.
|includes Bank 13 I/O pins
The Parallella finds its firmware, bootloader, kernel and device tree necessary to boot on the SD card. In order for the board to find these files, the SD Card must be MBR/DOS partitioned, with the first partition FAT32 formatted.
NAME FSTYPE LABEL MOUNTPOINT /dev/mmcblk0 ├─/dev/mmcblk0p1 vfat BOOT /boot └─/dev/mmcblk0p2 ext4 ROOT /
/boot ├── devicetree.dtb ├── parallella.bit.bin └── uImage
Parallella boards load the FPGA firmware (including u-boot bootloader), kernel (uImage) and device tree (dtb) from the microSD card slot whenever power is applied to the board.
The firmware file must be named parallella.bit.bin on the FAT32 filesystem on the SD card.
This firmware is open sourced on Github parallella/oh but requires the free (as in beer) Xilinx Vivado tools to produce.
Parallella has provided 4 versions of the firmware (parallella.bit.bin) that boots Linux:
|HDMI and headless
|Github parallella/parabuntu fpga_bitfiles
|HDMI and headless
|Github parallella/parabuntu commit 0cb190a
|Github parallella/parabuntu commit d36f6be
|HDMI and headless
|Github parallella/parallella-hw old bitstreams
The firmware parallella.bit.bin, in addition to the FPGA routines that concern board bring-in, contains u-boot to boot the system into Linux. The load address for a kernel uImage is 0x8000.
Parallella provide kernel sources with working Epiphany drivers in the parallella-linux repository. parallella-linux provides the parallella_defconfig target to generate a kernel config suitable for all Parallella boards.
make uImage LOADADDR=0x8000
Upstream kernels can also work, however the Epiphany driver has not been upstreamed. Upstream kernels have the multi_v7_defconfig which is suitable for the Parallella.
Building a kernel requires the sys-devel/bc package, and building a uImage requires the dev-embedded/u-boot-tools package:
emerge --ask sys-devel/bc
emerge --ask dev-embedded/u-boot-tools
The resulting uImage can be found at arch/arm/boot/uImage. The kernel uImage must be named uImage on the FAT32 filesystem on the SD card.
The device tree is available in the parallella-linux sources at arch/arm/boot/dts/zynq-parallella*.dts. It can be compiled into a dtb file with make dtbs:
emerge --ask sys-apps/dtc
The device tree must be named devicetree.dtb on the FAT32 filesystem on the SD card.
|Parallella (Desktop or Embedded) without HDMI bitstream
|Parallella with HDMI bitstream
The upstream device tree (zynq-parallella1.dtsi) configures the root partition as the second partition with an ext4 filesystem.
An armv7a stage3 can be unpacked and customised. Gentoo autobuilds can be found on distfiles.gentoo.org.
Epiphany SDK (esdk)
Adapteva provides the SDK to interact with the Epiphany device on Github adapteva/epiphany-sdk.
Version 2016.3 of the esdk utilises the elink2 interface with the Epiphany chip and requires an elink2 firmware.
The esdk sources build for the armv7l architecture which is not the same as the Gentoo architecture (armv7a).
A compatible cross-compiler can be generated with crossdev:
crossdev -S -t armv7a-unknown-linux-gnueabihf
When cross-compiling the kernel, call make with the ARCH and CROSS_COMPILE environment variables:
make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf-
When cross-compiling the Epiphany SDK, use the -c armv7a-unknown-linux-gnueabihf flag:
git clone https://github.com/adapteva/epiphany-sdk sdk
./sdk/build-epiphany-sdk.sh -d -R -c armv7a-unknown-linux-gnueabihf
- Parallella hardware design files are available on Github parallella/parallella-hw.
- Xilinx Vivado Design Suite to create the FPGA firmware files
- Parallella Project History
- Parallella: A Supercomputer For Everyone by Adapteva on Kickstarter
- Parallella Quick Start
- Parallella Cluster Case
- elinux Parallella UART Connection
- Xilinx AR#46913 "Zynq-7000 Example Design - Program the PL using the Linux driver for DEVCFG"
- Zynq PL Programming With FPGA Manager