Difference between revisions of "Logical structure of Bora and BoraX Embedded Linux Kits (BELK/BXELK)"

From DAVE Developer's Wiki
Jump to: navigation, search
(Structure of BELK/BXELK reference designs)
(Structure of BELK/BXELK reference designs)
Line 70: Line 70:
  
 
Generally speaking, these parts - in the binary/synthesized form - are combined together in one monolithic file that is stored in a non-volatile memory such as SPI NOR flash. Generating this file is quite easy as described by Vivado documentation. However, in real world products, this may be too rigid because developers may want to handle these parts separately and independently.
 
Generally speaking, these parts - in the binary/synthesized form - are combined together in one monolithic file that is stored in a non-volatile memory such as SPI NOR flash. Generating this file is quite easy as described by Vivado documentation. However, in real world products, this may be too rigid because developers may want to handle these parts separately and independently.
Starting from BELK-4.0.0 and BXELK-2.0.0 developers can take advantages of the flexibility of U-boot dual stage bootloader support that allows handling all binaries separately and independently instead of a unique monolithic file. FSBL creation through Vivado SDK environment is no longer needed. U-boot SPL bootloader is now responsible to correctly initialize the PS (Processing System) based on configurations from the Vivado project.
+
Starting from BELK-4.0.0 and BXELK-2.0.0 developers can take advantages of the flexibility of U-boot dual stage bootloader support that allows handling all binaries separately and independently instead of a unique monolithic file.
  
 
==Basic structure of Vivado Design Suite and integration into BELK/BXELK==
 
==Basic structure of Vivado Design Suite and integration into BELK/BXELK==

Revision as of 14:25, 18 July 2017

Info Box
Bora5-small.jpg Applies to Bora
BORA Xpress.png Applies to BORA Xpress
200px-Emblem-important.svg.png

The structure of the BELK/BXELK evolved over the years as the underlying tools changed. Therefore, the document is divided into different sections. Each one describes the structure of specific versions of the kits.

200px-Emblem-important.svg.png

This document refers to the tools used to build the software for the Processing Subsystem only.

BELK starting from version 4.0.0 / BXELK starting from version 2.0.0[edit | edit source]

Introduction[edit | edit source]

To understand the structure of Bora Embedded Linux Kit (BELK), it is necessary to describe the basic organization of Xilinx Vivado Design Suite/Xilinx SDK and to recall briefly the recent history of development tools provided by Xilinx.

A little bit of history[edit | edit source]

At the time of this writing (October 2013) Xilinx is migrating from mature ISE 14.x Design Suite - that should be the last series of this suite - to the new Vivado environment. Both are composed by several programs and some of these are in common. From the general standpoint, the main difference between ISE and Vivado - even if ISE does support Zynq - is that the latter has been expressively conceived to support newer SoC architectures such as Zynq, besides traditional FPGAs. Thus, adopting Vivado as the default environment for BELK/BXELK would seem the natural choice. However, the migration process mentioned above has just begun and the majority of application notes and reference designs released by Xilinx still refers to ISE suite. Plus Vivado is still a little bit "green" and several bug fixes and improvements are introduced by every new release.

Since Bora was presented in 2013 and because this product addresses long longevity markets such as industrial and biomedical, DAVE Embedded Systems chose to build BELK/BXELK upon Vivado that undoubtedly represents today the future of Xilinx development environments.

Structure of BELK/BXELK reference designs[edit | edit source]

The typical linux-based Zynq design is composed of the following parts:

  • FSBL (or U-boot SPL for BELK-4.0.0 or newer and BXELK-2.0.0 or newer)
  • U-Boot
  • device tree file
  • Linux kernel
  • Root file system
  • Executable image of core #1 (in case of AMP systems)
  • FPGA bitstream.

Generally speaking, these parts - in the binary/sinthesized form - are combined together in one monolithic file that is stored in a non-volatile memory such as SPI NOR flash. Generating this file is quite easy as described by Vivado documentation. However in real world products, this may be too rigid because developers may want to handle these parts separately and independently. Starting from BELK-4.0.0 and BXELK-2.0.0 developers can take advantages of the flexibility of U-boot dual stage bootloader support that allows to handle all binaries separately and independently instead of a unique monolithic file. FSBL creation through Vivado SDK environment is no longer needed. U-boot SPL bootloader is now responsible to correctly initialize the PS (Processing System) based on configurations from the Vivado project.

Basic structure of Vivado Design Suite and integration into BELK/BXELK[edit | edit source]

Vivado/SDK [1] can be viewed as a collection of programs required to deal with all of the development aspects related to Xilinx components (software running on ARM cores, FPGA fabric verification and programming, power estimation etc.). These include strictly FPGA-related tools such as Floorplanner and pure-software development tools such as SDK. The ambitious objective is to provide a complete, user friendly, integrated environment that allows software developers to deal with FPGA development even if they are not familiar with this technology, by hiding a lot of its complexities [2]. As usual this ease of use comes at the expence of control and flexibility. This could not be acceptable in many cases where engineers need to control and customize many aspects of the project to implement what is required by system specifications. For this reason, BELK and BXELK have been built around Vivado but some deviations from the default development approach suggested by Xilinx have been introduced, in order to push the modularization and the maintainability of the projects to the maximum possible extent.

The following pictures show respectively the Vivado/SDK default development flow and how this has been integrated in the BELK/BXELK infrastructure.

Vivado/SDK development flow (BELK <= 3.0.2 and BXELK <= 1.0.1)
Vivado/SDK development flow (BELK 4.0.0 or newer and BXELK 2.0.0 or newer)
Vivado/SDK integration into BELK/BXELK


[1] The Software Development Kit (SDK) is the Xilinx Integrated Design Environment for creating embedded applications on Zynq™-7000 All Programmable SoCs. SDK is the first application IDE to deliver true homogenous and heterogenous multi-processor design and debug, it is optionally included with the Vivado Design Suite or ISE Design Suite, or available as a separate free download for application developers.

[2] Nevertheless FPGA developers will find all the traditional tools that allow complete control of FPGA fabric.

BELK from version 2.1.0 to version 3.0.2 / BXELK from version 1.0.0 to version 1.0.1[edit | edit source]

The structure of these kits is the same of the previous releases of BELK. In addition to those, a pre-built root file system image is provided. This image is generated by Yocto.

BELK up to version 2.0.0[edit | edit source]

Introduction[edit | edit source]

To understand the structure of Bora Embedded Linux Kit (BELK), it is necessary to describe the basic organization of Xilinx Vivado Design Suite/Xilinx SDK and to recall briefly the recent history of development tools provided by Xilinx.

A little bit of history[edit | edit source]

At the time of this writing (October 2013) Xilinx is migrating from mature ISE 14.x Design Suite - that should be the last series of this suite - to the new Vivado environment. Both are composed by several programs and some of these are in common. From the general standpoint, the main difference between ISE and Vivado - even if ISE does support Zynq - is that the latter has been expressively conceived to support newer SoC architectures such as Zynq, besides traditional FPGAs. Thus, adopting Vivado as the default environment for BELK/BXELK would seem the natural choice. However, the migration process mentioned above has just begun and the majority of application notes and reference designs released by Xilinx still refers to ISE suite. Plus Vivado is still a little bit "green" and several bug fixes and improvements are introduced by every new release.

Since Bora was presented in 2013 and because this product addresses long longevity markets such as industrial and biomedical, DAVE Embedded Systems chose to build BELK/BXELK upon Vivado that undoubtedly represents today the future of Xilinx development environments.

Structure of BELK/BXELK reference designs[edit | edit source]

The typical Linux-based Zynq design is composed of the following parts:

  • FSBL
  • U-Boot
  • device tree file
  • Linux kernel
  • Root file system
  • Executable image of core #1 (in case of AMP systems)
  • FPGA bitstream.

Generally speaking, these parts - in the binary/synthesized form - are combined together in one monolithic file that is stored in a non-volatile memory such as SPI NOR flash. Generating this file is quite easy as described by Vivado documentation. However, in real world products, this may be too rigid because developers may want to handle these parts separately and independently. Starting from BELK-4.0.0 and BXELK-2.0.0 developers can take advantages of the flexibility of U-boot dual stage bootloader support that allows handling all binaries separately and independently instead of a unique monolithic file.

Basic structure of Vivado Design Suite and integration into BELK/BXELK[edit | edit source]

Vivado/SDK [1] can be viewed as a collection of programs required to deal with all of the development aspects related to Xilinx components (software running on ARM cores, FPGA fabric verification and programming, power estimation etc.). These include strictly FPGA-related tools such as Floorplanner and pure-software development tools such as SDK. The ambitious objective is to provide a complete, user friendly, integrated environment that allows software developers to deal with FPGA development even if they are not familiar with this technology, by hiding a lot of its complexities [2]. As usual this ease of use comes at the expence of control and flexibility. This could not be acceptable in many cases where engineers need to control and customize many aspects of the project to implement what is required by system specifications. For this reason, BELK and BXELK have been built around Vivado but some deviations from the default development approach suggested by Xilinx have been introduced, in order to push the modularization and the maintainability of the projects to the maximum possible extent.

The following pictures show respectively the Vivado/SDK default development flow and how this has been integrated in the BELK/BXELK infrastructure.

Vivado/SDK development flow (BELK <= 3.0.2 and BXELK <= 1.0.1)
Vivado/SDK development flow (BELK 4.0.0 or newer and BXELK 2.0.0 or newer)
Vivado/SDK integration into BELK/BXELK


[1] The Software Development Kit (SDK) is the Xilinx Integrated Design Environment for creating embedded applications on Zynq™-7000 All Programmable SoCs. SDK is the first application IDE to deliver true homogenous and heterogenous multi-processor design and debug, it is optionally included with the Vivado Design Suite or ISE Design Suite, or available as a separate free download for application developers.

[2] Nevertheless FPGA developers will find all the traditional tools that allow complete control of FPGA fabric.