Changes

Jump to: navigation, search

Build system (BELK/BXELK)

533 bytes added, 14:50, 19 July 2017
no edit summary
{{Applies To BoraX}}
{{InfoBoxBottom}}
{{ImportantMessage|text=As the structure of the BELK/BXELK is based on several tools, it is strongly recommended the reading of [[Logical_structure_of_Bora_and_BoraX_Embedded_Linux_Kits_(BELK/BXELK)|this document]] and [[Introduction_to_development_environment_(BELK/BXELK)|this document]] first.
}}
==Introduction==
A build system is a set of tools, source trees, Makefiles, patches, configuration files and scripts that makes make it easy to generate all the components of a complete embedded Linux system. A build system, once properly set up, automates the configuration and cross-compilation processes, generating all the required targets (userspace packages such as libraries and programs, the o.s. kernel, the bootloader and root filesystem images) depending on the configuration. In particular, using an integrated build system prevents from problems caused by misaligned toolchains, since a unique toolchain is used to build all the software components, including the customer application. Some well known structured build systems are the following:
*OpenEmbedded (http://wiki.openembedded.net/index.php/Main_Page)
*Yocto (https://www.yoctoproject.org/)
*Buildroot (http://buildroot.uclibc.org).
 
In the following section, we will refer to the system running the Xilinx tools (that can be either a Microsoft Windows machine or a GNU/Linux machine) as the "Zynq development server", and to the machine running the GNU/Linux tools as the "Linux development server".
 
As described [[Logical_structure_of_Bora_and_BoraX_Embedded_Linux_Kits_(BELK/BXELK)|here]], the structure of the BELK/BXELK has changed over the years. That's why the istructions here indicated may differ accoording to the kit version.
 
===BELK 4.0.0 or newer, BXELK 2.0.0 or newer===
[[File:Belk-yocto.png|thumb|center|600px|Simplified flow of Yocto-based building process]]
 
===BELK version up to 3.0.2, BXELK version up to 1.0.1===
Since various heterogeneous tools are required to build the software components for the BORA/BORAX SOM, BELK/BXELK does not provide a fully structured build system. In particular, the Xilinx Zynq 7000 development tools are required to configure the system and build the FSBL, while the standard GNU tools are required to build U-Boot, kernel and user-space applications.
In the following section, we will refer to the system running the Xilinx tools (that can be either a Microsoft Windows machine or a GNU/Linux machine) as the “Zynq development server”, and to the machine running the GNU/Linux tools as the “Linux development server”.
==Setting up the Zynq development server environment==
The following software packages must be installed on the Zynq development server:
*Vivado® Design Suite version 20142017.4 1 (for '''BELK <= 34.0.0 or newer, BXELK 2''' and '''BXELK <= 1.0.10 or newer''')*Vivado® Design Suite version 20172014.1 4 (for '''BELK-4version up to 3.0.0''' and '''2, BXELK-2version up to 1.0.01''')
*Xilinx Software Development kit (same version as the Vivado® Design Suite)
*Python 2.7.x (C:\Python27 must be the installation directory on Windows)
N.B. <u>Sometimes the download of the Vivado 2014.4 full package fails because of some download system malfunctioning, but the problem is barely noticeable, except by performing the MD5 check of the downloaded file. In case of problems, we suggest using the Multi-File Download (available on the same web page), that splits the full package in a collection of smaller files. If you use the Multi-File Download to get the "Vivado (No SDK)" package, you must also download the "Software Development Kit - 2014.4" package.</u>
 
===How BORA/BORAX project files are managed===
Since a Vivado project for the Zynq device is composed by of a lot of files (including temporary and GUI-managed files), providing the BORA project files with the BELK is not considered as an efficient and user-friendly solution, for two main reasons:
*we should provide a compressed archive for each version (updates, new features, bug fixes) of the project, wasting storage space and download bandwidth, introducing redundancy and complicating file management
*there is no version control, which means that it's not possible to track changes to the project files, making development and release management complicated and error-prone
The best solution to these problems is that we create and maintain a Git repository to store and track only the main files of the Vivado project. Therefore, the developer can clone the repository and keep it in sync with our modifications.
The following diagram shows how the solution works:
 
[[File:Belk-vivado-sdk-integration.png|thumb|center|600px|git-based Vivado project management]]
 
BELK also provides the tools for keeping the files modified within the Vivado tools in sync with the local Git repository: with this solution, all the modifications are tracked and developers can take advantage of all the benefits of using git as a version control system.
4,650
edits

Navigation menu