Changes

Jump to: navigation, search

Introduction to development environment (BELK/BXELK)

1,110 bytes added, 14:13, 19 July 2017
no edit summary
{{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]] first.
}}
{{ImportantMessage|text=This document refers to the tools used to '''build the software for the Processing Subsystem (PS) only'''.
}}
== History ==
==Overview==
The following pictures show a simplified scheme of the the development environment for an Embedded Linux system based on BORA or BORAX. The tmw two main blocks are a host machine and a target machine. [[File:BELK-4.0.0 belk-development-flow.png|thumb|center|600px|BORA/BORAX development environment (BELK 4.0.0 or newer, BXELK 2.0.0 or newer)]]
[[File:Belk-development-flow.png|thumb|center|600px|BORA/BORAX development environment (BELK version up to 3.0.2, BXELK version up to 1.0.1)]]
[[File:BELK-4.0.0 belk-development-flow.png|thumb|center|600px|BORA/BORAX development environment (BELK 4.0.0 or newer, BXELK 2.0.0 or newer)]]
In a typical environment, the host is used by the developer to (cross-)compile the code that is to run on the target. In our case, the target is a SOM, while the host is assumed to be a PC running the Linux operating system, either in a physical installation or as a virtual machine (for recent kits, this is the [[Logical_structure_of_Bora_and_BoraX_Embedded_Linux_Kits_(BELK/BXELK)#BELK_starting_from_version_4.0.0_.2F_BXELK_starting_from_version_2.0.0|MVM]]).
====Vivado® Design Suite====
Xilinx provides the Vivado® Design Suite, a SoC-strength, IP-centric and system-centric, next generation comprehensive development environment for All Programmable SoCs. The Vivado® Design Suite is used to configure the PS for embedded processor hardware system development. Specification of the microprocessor, memory parameters, boot peripherals, MIO settings and the interconnection of these components, along with their respective detailed configuration, takes place in Vivado IP Integrator.
 
For any version of BELK/BXELK, Vivado is required to generate the PL bitstream.
 
====Xilinx Software Development Kit====
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 homogeneous and heterogeneous 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. It is based on Eclipse and CDT and it directly interfaces to the Vivado embedded hardware design environment. The SDK offers support for complete software design and debug flows including multi-processor multiprocessor and hardware/software debug capabilities, integrating editor, compilers, build tools, flash memory management, JTAG/GDB debug, custom libraries and device drivers.====Zynq application development flow====The following diagram describes the development flow for Zynq-based Linux applications:As described [[File:Belk-vivado-sdk-development-flow.png|thumb|center|600pxLogical_structure_of_Bora_and_BoraX_Embedded_Linux_Kits_(BELK/BXELK)|here]], in the context of BELK development flow (/BXELK, the SDK is no longer required for the version of BELK <= 3starting from 4.0.2 0 and for the version of BXELK <= 1starting from 2.0.0.1)]]
[[File:BELK-4.0.0 belk-vivado-sdk-development-flow.png|thumb|center|600px|BELK development flow (BELK 4.0.0 or newer and BXELK 2.0.0 or newer)]]
===Toolchain===
With the term ''toolchain'' we refer to the set of programs that allow the building of a generic application. For applications built to run on the same platform as the tool chain, we use a native toolchain. On the contrary, for applications built to run on a target architecture different from the host architecture, we use a cross-toolchain. In this case , all the tools involved in this process are lead by the “cross-” prefix. So we talk about cross-compiler, cross-toolchain and so on. The cross-toolchain used to build U-Boot, the Linux kernel and the applications is the GNU toolchain for the ARM architecture built for x86 hosts. In other words, the toolchain runs on x86 machines but generates binaries for ARM processors. As for all the software compliant to the GPL license, it is released in source code. Thus the first thing to do to set up the developing environment should be building the cross-toolchain. This is not a trivial task, it takes a lot of time and hard disk space. To avoid this tedious task, we suggest using a pre-built toolchain as explained in the following sections. ===First -stage bootloader===Two different first-stage bootloaders are used, depending on the version of the kit.====U-Boot SPL (BELK 4.0.0 or newer, BXELK 2.0.0 or newer)====These kits use U-Boot SPL as first-stage bootloader. It is loaded by the internal bootrom during the boot process. U-Boot SPL is run to set up the PS and load the second stage bootloader (U-Boot).  U-Boot SPL is built with the same tool chain used to build the the other software modules, such as the Linux kernel and the applications.  Please note that U-Boot SPL is based on one file (<code>ps7_init.c</code>) that is generated by Vivado. In turn, this file contains some initialization parameters that are set according to Zynq configuration. The U-Boot sources provided by the BELK/BXELK include such file. Unless you need to modify the initial Zynq configuration, you don't need to generate a new <code>ps7_init.c</code> file. Therefore, from the standpoint of the software running on PS, Vivado is genrally not required. ====FSBL(BELK version up to 3.0.2, BXELK version up to 1.0.1)====
The first stage bootloader is loaded by the internal bootrom during the boot process. FSBL is run to set up the PS and load the second stage bootloader (U-Boot). The FSBL must be created using the Xilinx development tools and must be stored into the boot memory.
 
===Second stage bootloader: U-Boot===
U-Boot is a very powerful boot loader and it became the "de facto" standard on non-x86 embedded platforms. The main tasks performed by U-Boot are:
For further information on the use of U-Boot, please refer to http://www.denx.de/wiki/view/DULG/UBoot.
===Kernel===
Linux kernel for Zynq processors is maintained primarily by Xilinx, that constantly works in close cooperation with Linux community in order to push all the released drivers into mainstream the mainline kernel.
Kernels released within BELK derive directly from Xilinx Zynq kernels, with patches added by DAVE Embedded Systems to support the BORA and BORAX hardware platforms.
===Target root file system===
The Linux kernel running on the target needs to mount a root file system. Building a root file system from scratch is definitively a complex task because several well -known directories must be created and populated with a lot of files that must follow some standard rules. Again we will use pre-packaged root file systems that make makes this task much easier. <u>Please note that using a pre-packaged root file system can lead to conflicts with the application binaries obtained using the pre-built cross-toolchain: as a general rule, dynamically linking an application against libraries built with a different toolchain can cause malfunctioning.</u>
4,650
edits

Navigation menu