Changes

Jump to: navigation, search

Introduction to development environment (BELK/BXELK)

1,026 bytes added, 15:28, 22 September 2021
no edit summary
{{Applies To Bora}}
{{Applies To BoraX}}
{{Applies To BoraLite}}
{{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.
|}
<section begin=BTELK/>=Overview=Introduction to development environment==
The following pictures show a simplified scheme of the the development environment for an Embedded Linux system based on BORA or BORAX. The 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]]).
===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)====TBDThese 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:
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><section end=BTELK/>
8,154
edits

Navigation menu