BORA Lite SOM/BELK-L/Development/How to create a bootable microSD card
Info Box
|
Contents
History[edit | edit source]
Version | Date | BELK version | Notes |
---|---|---|---|
1.0.0 | November 2015 | 3.0.0 | First release |
2.0.0 | December 2016 | BELK 3.0.1 / BXELK 1.0.0 | Added information about new kits |
3.0.0 | July 2017 | BELK 4.0.0 / BXELK 2.0.0 | Added information about new kits |
Introduction[edit | edit source]
BELK provides a bootable microSD that can be used not only to quickly start the system, but also as a recovery method in case the primary boot device (eg. QSPI NOR flash) gets erased or corrupted. The following sections describe how to create a bootable SD card and how to configure the system for booting from SD. This article, for example, shows how to make use of such a card to restore the U-Boot image onto the NOR flash.
![]() |
It is worth remembering that the bootable microSD card described in this article is not configured to perform a full boot sequence, including the operating system bootstrap. The bootable microSD card delivered along with the kit is set up to do a full bootstrap sequence, instead. For more details, please refer to this section. | ![]() |
How to create a bootable microSD card[edit | edit source]
BELK <= 3.0.2 / BXELK <= 1.0.1[edit | edit source]
This section describes how to create a new bootable microSD card from scratch for BELK <= 3.0.2 and BXELK <= 1.0.1. The following components must be available:
- FSBL built with Vivado 2014.4 as described here
- U-boot built in elf format, as described in here
- FPGA bitstream (optional).
The procedure is the following:
- from the Vivado 2014.4 SDK, apply the required patches to the
main.c
project file.This step can be done in two ways:- manually, directly modifying the
main.c
file adding the following code snippets:
- manually, directly modifying the
----CUT---- /* * Unlock SLCR for SLCR register write */ SlcrUnlock(); + *((u32 *)0xF8000830) = 0x003F003F; + *((u32 *)0xF8000834) = 0x003F003F; /* If Performance measurement is required * then read the Global Timer value , Please note that the ----CUT---- ----CUT---- /* * Read bootmode register */ BootModeRegister = Xil_In32(BOOT_MODE_REG); BootModeRegister &= BOOT_MODES_MASK; + // always init QSPI + InitQspi(); /* * QSPI BOOT MODE */ #ifdef XPAR_PS7_QSPI_LINEAR_0_S_AXI_BASEADDR ----CUT----
- automatically, using the Apply Patch function and selecting the
belk-sd-boot.patch
file provided with the BELK (please refer to the following images):
- automatically, using the Apply Patch function and selecting the
- once the patch is applied, rebuild the FSBL project
- from the Xilinx Tools menu, select Create Zynq Boot Image
- select Create New BIF file and insert path and name of the .bif file
- in the Boot image partitions section, click on Add to browse and add the following files:
- FSBL in .elf format, with bootloader as partition type
- (optional) FPGA bitstream in .bit format, with partition type datafile
- U-boot binary with .elf extension, with partition type datafile
- in the Output path section, browse and select the path where saving the
boot.bin
file - on a PC, format the microSD card creating a FAT32 partition
- copy the
boot.bin
file to the microSD card FAT32 partition.
BELK-4.0.0 / BXELK-2.0.0[edit | edit source]
This section describes how to create a new bootable microSD card from scratch for BELK-4.0.0 and BXELK-2.0.0. The following components must be available:
- U-boot SPL and U-boot second stage built as described in here
- FPGA bitstream (optional).
The procedure is the following:
- on a PC, format the microSD card creating a FAT32 partition
- copy the following files to the microSD card FAT32 partition:
- U-boot SPL:
boot.bin
- U-boot second stage:
u-boot.img
- Fpga bitstream .bit (optional):
fpga.bit
- U-boot SPL:
How to configure the system for microSD boot[edit | edit source]
For Bora/BoraEVB systems please refer to this link.
For BoraX/BoraXEVB systems please refer to this link.
![]() |
In case the microSD card provided along with the kit is used, the Programmable Logic is automatically programmed with the example design during the boot process. | ![]() |