Ben's Blog

No description yet.

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that have been used in the blog.
  • Archives
    Archives Contains a list of blog posts that were created previously.
  • Login
    Login Login form

LINUX (1) - Linux for Field Programmable System-On-Chips (SoCs), An Introduction

Posted by on in LINUX (Inside)
  • Font size: Larger Smaller

It's difficult knowing when to appropriately use the phrase "game changer". However given the proliferation of FPGA System-On-Chip (SoC) devices, which contain the Microblaze or Nios II processors or the hardened embedded processors like the dual-core ARM Cortex A9, then for once the part phrase game changer may be appropriate.

This is especially the case when one uses these SoCs in conjunction with LINUX, the operating system of choice for embedded systems, when real-time operating systems are not considered (Embedded real-time LINUX will be considered in a separate article). 

In this first blog entry, of this category, we will begin by listing the more current LINUX projects and builds for embedded systems in general and FPGA SoCs in particular.

 002-002-001-000054m.pngOver the last few years or so I have acquired a variety of FPGA development boards, such as the DE0-NanoParallella, the  Arrow SoCkit Evaluation Board, the Microzed containing Xilinx's Zynq-7000 series SoCs, as well as many others. What's unique about all of these boards, apart from their field programmable logic, is the flavour of LINUX ported to them to run on their embedded processors.

In this article we will introduce some Linux for SoCs and ongoing Linux projects. In upcoming articles we will investigate utilising LINUX in SoC FPGAs in all its glory to perform tasks from capturing programmable logic interrupts, programming user space IO control functions and utilising DMA for algorithm development.

For now and to begin with we will introduce Linaro Linux, Petalinux and the Yocto project, for example. However, before we do so we will begin by looking at the architecture of a typical FPGA SoC development board, the Arrow SoCKit.

So what is a FPGA SoC? An example of an FPGA SoC can be seen in the Figure below, which is an image of the SoCKit Development Kit that contains Altera's Cyclone V system-on-chip. Essentially, a SoC consists of two parts, the first of which is the typical sea of logic gates found in the FPGA's fabric, seen on the left hand side of the same image. Attached to the FPGA fabric are peripherals like video and audio DACs.

The second part of this FPGA SoC, seen on the right-hand side, is what is known as the Hard Processor System (HPS), which in this particular case consists of dual ARM Cortex-A9 processors capable of running at 800 MHz each. Like the FPGA fabric the HPS independently connects to a number of external peripherals. The peripherals in this particular system include a UART-to-USB converter, 1GB of DDR3 memory, an Ethernet PHY, as well as a Micro SD card connector.


In the early days of FPGA SoC development applications that ran on the embedded processor were typically quite small and written in C/C++. However, as the processors became faster and their use in controlling and communicating with peripherals expanded a need arose for an operating system.  Linux naturally filled the vacuum that appeared and is favoured by most non-realtime users of FPGA SoC devices.

Hence, when Linux is run on the hardened processors, for example, device drivers are used to interface between the external peripherals attached to the HPS and the Linux operating system. Similarly, the HPS can exchange data with the FPGA fabric, however in this case the FPGA fabric typically communicates with the HPS using a bus protocol like AXI or Avalon. Below are some of the flavours and projects associated with Linux that we will come across over the next couple of articles in the series.

Linaro (

Linaro is used on many FPGA SoC development boards and kits including the Parallela, embedded supercomputer kit. Here is the website blurb:

 "Linaro is a not-for-profit engineering organization that works on free and open-source software such as the Linux kernel, the GNU Compiler Collection (GCC), ARM power management, graphics and multimedia interfaces for the ARM family of instruction sets and implementations thereof as well as for the Heterogeneous System Architecture."

The Yacto Project (

"The Yocto Project is a Linux Foundation workgroup whose goal is to produce tools and processes that will enable the creation of Linux distributions for embedded software that are independent of the underlying architecture of the embedded software itself. The Yocto Project is an open source project whose focus is on improving the software development process for embedded Linux distributions. The Yocto Project provides interoperable tools, metadata, and processes that enable the rapid, repeatable development of Linux-based embedded systems."

 Petalinux (

"The PetaLinux Tools offers everything necessary to customize, build and deploy Embedded Linux solutions on Xilinx processing systems. Tailored to accelerate design productivity, the solution works with the Xilinx hardware design tools to ease the development of Linux systems for Zynq®-7000 All Programmable SoCs, and MicroBlaze."

LINUX(2) - Using LINUX to Set Up a Dedicated  Network for FPGA and Embedded Development Boards and Kits


Before we begin using Linux on the Parallella board, the SoCKit or the MicroZed, for example, there is another, more urgent, task that needs to be performed first. This task is to do with security and the efficient use of a router when multiple devices and FPGA boards are connected on the same network. 

Hence, in the next article in this category I will demonstrate how a Linux system, like the Intel Nuc, can be used as a Gateway to create a Local Area Network (LAN) to isolate ones development cards and kit from ones router.

Last modified on