• Have any questions?
  • info.zbook.org@gmail.com

Installing Embedded Linux On ZedBoard

3m ago
21 Views
1 Downloads
482.07 KB
25 Pages
Last View : Today
Last Download : 2d ago
Upload by : Louie Bolen
Share:
Transcription

Installing Embedded Linux on ZedBoardClément FoucherTo cite this version:Clément Foucher. Installing Embedded Linux on ZedBoard. 2015. hal-01232886v2 HAL Id: 1232886v2Preprint submitted on 21 Mar 2017HAL is a multi-disciplinary open accessarchive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come fromteaching and research institutions in France orabroad, or from public or private research centers.L’archive ouverte pluridisciplinaire HAL, estdestinée au dépôt et à la diffusion de documentsscientifiques de niveau recherche, publiés ou non,émanant des établissements d’enseignement et derecherche français ou étrangers, des laboratoirespublics ou privés.

Installing Embedded Linux on ZedBoardClément Foucher (homepage)Clement.Foucher@laas.frLAAS CNRSLaboratoire d'analyse et d'architecture des systèmesVersion 1.1This work is licensed under the Creative CommonsAttribution-ShareAlike 4.0 International License.To view a copy of this license,visit ruary 23, 2017

Contents1 Before starting51.1Document purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.3Tools revisions and OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.4Administrator privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.5Conventions and directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.6Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.7Scripts and logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.85Environment packages and libraries . . . . . . . . . . . . . . . . . . . . . . . . . . .71.8.1Fedora 22 Workstation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.8.2Ubuntu 16.04 LTS8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Additional technical information92.1Downloading required sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2ZedBoard boot process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .992.3Reinitializing the SD card to factory state . . . . . . . . . . . . . . . . . . . . . . .102.3.1Restore partition scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . .102.3.2Restore les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Preparing the environment113.1Con guring the scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113.2Creating the project11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Hardware layout and low-level software4.14.24.34.44.5Creating a base hardware design12. . . . . . . . . . . . . . . . . . . . . . . . . . . .124.1.1Default con guration using script . . . . . . . . . . . . . . . . . . . . . . . .124.1.2Manual procedure12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Generating the device tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134.2.1Downloading the device tree generator . . . . . . . . . . . . . . . . . . . . .134.2.2Generating the device tree . . . . . . . . . . . . . . . . . . . . . . . . . . . .Generating the rst stage boot loader. . . . . . . . . . . . . . . . . . . . . . . . .Generating the bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144.4.1Default con guration using script . . . . . . . . . . . . . . . . . . . . . . . .144.4.2Manual procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14Generating the Binary le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 Generating Linux5.15.21314Generating the kernel17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175.1.1Default con guration using script . . . . . . . . . . . . . . . . . . . . . . . .175.1.2Custom con guration using script5.1.3Manual procedure. . . . . . . . . . . . . . . . . . . . . . .17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18Generating the device tree blob . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182

CONTENTS5.335.2.1Default con guration using script . . . . . . . . . . . . . . . . . . . . . . . .195.2.2Manual procedure19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Generating the le system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195.3.1Default con guration using script . . . . . . . . . . . . . . . . . . . . . . . .195.3.2Custom con guration using script5.3.3Manual procedure. . . . . . . . . . . . . . . . . . . . . . .19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Preparing the board216.1Partitioning the SD card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216.2Copying the le system on the card . . . . . . . . . . . . . . . . . . . . . . . . . . .216.36.2.1Using the script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216.2.2Manually. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22Copying the system les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Working on the board237.1Hardware con guration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237.2On the rst boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237.2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23Using Xilinx SDK to create an application . . . . . . . . . . . . . . . . . . . . . . .247.3SSH con guration

Document revisionsRevision numberDateChanges1.02015/09/21Initial release.1.0.12015/10/02Minor spelling corrections;1.0.22015/10/06Fixed missing sudo in mount commands.Corrected BuildRoot options;Updated provided BuildRoot con g le.1.0.32015/11/261.12017/02/23Corrected emptiness check on SD card in copy script;Added libraries required for Ubuntu.Updated tools version to Ubuntu 16.04 and Vivado 2016.4;Reorganized scripts to mutualize common content;Added section for how to create a Linux application using XSDK;Updated zedboard oob design.zip download address;Minor spelling corrections.4

Chapter 1Before startingPlease read this chapter carefully before starting, as it contains valuable information that you'llrequire all along this document.1.1 Document purposeThis document is a tutorial describing how to build an Embedded Linux system for use on aZedBoard development board. Following this procedure, you'll obtain an Embedded Linux runningon a persistent le system, which you can use as a base for your further developments. This tutorialdescribes every needed step, from scratch to a running system, and provides scripts to automatemost of the steps.The con guration depicted here will be the very minimum. It is only intended to show youthe global approach, letting you build you own personal system matching your needs once you'veunderstood how to do.The only addition we do to the bare minimum system is to enable anEthernet connection, in order to allow remote control of the board using SSH.All needed tools are open-source and can be downloaded using the scripts provided with thistutorial, except for Xilinx Vivado which requires a license.You should have obtained this document inside an archive containing the scripts and otherles used in the procedure. If you don't have this archive, you can download it at this zedboard-development.Each section in this tutorial presents how to build one speci c le.procedures will be presented using three di erent ways.Most le generationFor each step, choose the way thatcorrespond the most to you.These sections use the following names:Default con guration using scriptThis rst way uses dedicated scripts to run the default con guration without any user interaction.This is the fastest way to build the target, but you'll be dependent on parameters I chose for you.Custom con guration using scriptIf any customization is available for a le generation, I provide this second way of generatingit.It is still scripted, but opens a customization window which let you select your preferredcon guration. This is the fastest way to choose your personal con guration, while still hiding thedetails on how things are done.5

6CHAPTER 1.BEFORE STARTINGManual procedureFinally, this third way will present all required details to perform the full procedure manually.This is how you should proceed to learn the generation steps and re-use them outside this tutorial.1.2 DisclaimerThe procedure depicted in this document is intended to help you build an Embedded Linux systemwhatever your knowledge of the Linux system is.It should be relatively safe, but some steps require advanced manipulations on your host system,ZedBoard platform and related peripherals, including the SD card provided with ZedBoard.The author or its institution cannot be held responsible for any harm caused to your hostsystem, ZedBoard platform or any element manipulated by the following tutorial.Moreover, the author can't be held responsible for English misspelling that is probably presentin this document ;-). Please inform me of any error using my e-mail on the front page.1.3 Tools revisions and OSThe procedure described in this document has been conducted using Xilinx Vivado 2016.4 onFedora 22 Workstation 64 bits and Ubuntu 16.04 LTS 64 bits. Some steps of the procedure areclosely related to tools version, so I cannot guarantee this tutorial will work using a di erentversion of Vivado, a di erent Linux distribution, a di erent Fedora or Ubuntu version, or anyother version of a tool used in this tutorial.If your system does not run a native Linux OS, you can install for free a Linux virtual machinematching the above speci cations.1.4 Administrator privilegesSome of the manipulations described in this document require root privileges. To obtain them,use thesudocommand in order to get administrator privileges for the current command.These commands require you entering your password to work, and the current user must beregistered in the sudo privileges list. If you're not familiar with theneeded information about it online or by typingman sudosudo command,you'll nd allin a console.1.5 Conventions and directoriesThehostsystem is the system used to generate the les, while thetargetsystem is the EmbeddedLinux system that will be generated. .monospaced characters are to be typed as it.Paths are displayed in monospaced blue. Paths ending with a / are directories (e.g., {BASEDIR}/scripts/), while the others are les (e.g., {BASEDIR}/scripts/initialize project.sh).In the current tutorial, we use the syntax {DIRECTORY} to refer to speci c paths. Notably, {BASEDIR}/ is the base working directory provided in the archive coming with this tutorial. Ifyou obtained this le from the complete archive, the current le is located in {BASEDIR}/doc/.Please make sure the {BASEDIR}/ path does not contain any space.Texts beginning by are shell commands to be typed in the console, without the initialOther texts written usingThese kinds of paths are to be replaced by the user when doing the manipulation using matching/home/user/ZedBoard/, user has to understand occurrences {BASEDIR}/scripts/ as /home/user/ZedBoard/scripts/. This can be achieved by manuallydirectory. E.g., if the base directory isofreplacing the variable in the command line, or by de ning the variable content before typing thecommand.Using the previous example, de ning theachieved by typing the following command: {BASEDIR}variable value would be

1.6.PROJECTS7 export BASEDIR "/home/user/ZedBoard/"If you choose to use manual procedures, you're not required to work in theThus, these sections rather refer to another directory called {CUSTOMDIR}/ {BASEDIR}/tree.which can be anydirectory you want.1.6 ProjectsA project is a set of both hardware design and software environment generation.Projects {BASEDIR}/projects/. The base folder of project {project name} will {BASEDIR}/projects/ {project name}/, and will be referred to as {PROJECT ROOT}/.are located inbe {project name} and {PROJECT ROOT} can be set the same way as vari {BASEDIR} (see Section 1.5).Variablesable1.7 Scripts and logsMost of the manipulations depicted in this document provide scripts to automate the procedure.These scripts should work whatever the directory they are called from, but if anything fails, youshould try cd to {BASEDIR}/scripts/./ script name .sh syntax. {PROJECT ROOT}/logs/ script name .log.directory and use theThese scripts usually create a log le inYoucan check for this le after a script run for more information about errors that might have occurred.1.8 Environment packages and librariesFirst, Vivado is required, and the installation must provide SDK, which is facultative in theinstallation process, so make sure it is installed.2016.4 version in used in this tutorial.AsVivado only supports 64-bit OS versions, the procedure depicted here assumes you run in such anenvironment.Moreover, some libraries and tools are required on the host system to execute this procedure.The following sections list the required packages.1.8.1 Fedora 22 WorkstationHere are the main packages required for a bare Fedora 22 Workstation installation, but some othermay be required depending on your con guration. gcc gcc-c git qt4-devel ex bison patch ncurses-devel openssl-devel gparted glibc.i686

8CHAPTER 1.BEFORE STARTINGBefore starting, you can use the following command in order to ensure all needed libraries areavailable on your system: sudo dnf install gcc gcc-c git qt4-devel flex bison patch ncurses-devel \ openssl-devel gparted glibc.i6861.8.2 Ubuntu 16.04 LTSHere are the main packages required for a bare Ubuntu 14.04 LTS installation, but some othermay be required depending on your con guration. gcc g git qt4-dev-tools ex bison patch libncurses5-dev libssl-dev gparted device-tree-compiler glibc:i386Before starting, you can use the following command in order to ensure all needed libraries areavailable on your system: sudo apt-get install gcc g git qt4-dev-tools flex bison patch libncurses5-dev \ libssl-dev gparted device-tree-compiler sudo dpkg -i force-architecture i386 glibc

Chapter 2Additional technical informationThe information depicted in this chapter is optional.You may refer to this section for speci cneeds.2.1 Downloading required sourcesApart from the libraries required by the host, some sources are used in this procedure which arenot provided in the archive (E.g. Linux kernel, boot loader generator, etc.). When a script requiresone of these, it will ask the user for download on the rst run.If you just want to download some or all sources in order to use them manually or for anyother reason, a dedicated script is available which can be used as follows: {BASEDIR}/scripts/download sources.shAnd follow the instructions from there.Note that this script will not download already existing sources. If for any reason you want toforce source re-download, please delete or move existing source before launching this script.2.2 ZedBoard boot processTo boot the ZedBoard on Linux using the SD card, you need the following elements: A rst stage boot loader, in charge of early loading, A bitstream representing the FPGA fabric con guration, A boot loader, in charge of loading the Linux kernel, A Linux kernel, A device tree blob, A le system.When you use the SD card to boot the ZedBoard, the boot process is as follows:It begins with the First Stage Boot Loader (FSBL) which is in charge of the early boot process.The FSBL rst recon gures the FPGA fabric of the Zynq, and then launches the boot loader. Thenthe boot loader boots the Linux kernel.9

10CHAPTER 2.ADDITIONAL TECHNICAL INFORMATIONFrom there, the Linux kernel searches for a le system. Usually, the le system is placed in aRAMdisk. But as the RAMdisk is loaded in RAM, its content disappears when board is turnedo . This tutoral uses a persistent le system which is stored on the SD card.Moreover, the Linux kernel needs the device tree blob to be aware of the hardware con gurationsurrounding the processor core.As the FSBL, the bitstream and the boot loader are packaged together within a binary le,the following les are needed on the SD card:A rst partition containing: The binary le, The Linux kernel, The device tree blob.And a second partition, containing the Linux le system.2.3 Reinitializing the SD card to factory stateThis section is only to be followed if you need to restore the SD card lesystem to its originalstate. It is not needed as part of this procedure, but it can be used to revert your SD card to itsoriginal state, as we modify its partition scheme during this procedure.2.3.1 Restore partition schemeLaunch GParted.In the jumplist, select the entry matching your SD card (E.g.,On each existing partitions, right-click, and selectselect menuDeviceCreate Partition Table. ,Unmount ./dev/sdc/).When all partitions are unmounted,make sure MS-DOS type is selected and click onApply .Add .SelectRight-click on the empty space, select New , choose a fat32 le system andApply All Operations and validate using Apply . When nished, exit GParted.select2.3.2 Restore lesThe card partition scheme is now ready; all you need now is to put back the original leson it.These les are contained in the archive provided at this address:digilentinc.com/ media/zedboard/zedboard oob design.zip.copy the content of folder sd image/ back to the card.Your card is now ready as new.https://reference.Download it, expand it, and

Chapter 3Preparing the environment3.1 Con guring the scriptsFirst, le {BASEDIR}/scripts/user-config/environment.sh must be edited.This le containscon guration variables that are used by other scripts. Each variable purpose is described in thele, and must be set according to your host system con guration. Some may require a little bitof Linux knowledge, such as mount directories, so be careful when you set them.Please take some time to ensure variables in this les have a correct value, or some scripts usedin this document may not work.3.2 Creating the projectFirst, choose a name for the project. This name must not contain any space character. Choosinga name ensures you may have various projects at the same time, with di erent con gurations.This name will have to be used in replacement of all {project name} occurrences in thisdocument.To begin, we must create a placeholder for the project. To do so, open a shell and type: {BASEDIR}/scripts/initialize project.sh {project name}This will create the root folder of your project, as well as some sub-folders and les that willbe used in the following steps.11

Chapter 4Hardware layout and low-levelsoftwareIn this chapter, we will generate the lower part of the system:the hardware design and thelow-level software running before Linux takes on.4.1 Creating a base hardware designThe hardware layout depends on what you want to do with your design. Only you can know whatyou want or don't want to instantiate on the recon gurable fabric of your Zynq device.Thus, we provide here a guide to build a simple design for the sole purpose of this tutorial,containing the very minimum.For further information about creating a design using Vivado, please refer to Xilinx user guides.4.1.1 Default con guration using scriptOpen a shell and type: {BASEDIR}/scripts/generate bitstream.sh {project name}When done, the bitstream should be located inbitstream.bit. {PROJECT ROOT}/output/hardware design/4.1.2 Manual procedureFirst, open Vivado and selectEnter project nameis checked, and clickCreate New Project .hardware design and browse to {CUSTOMDIR}/.Make sureCreate project subdirectoryNext .RTL Project , check Do not specify sources at this time , and click Next . Select Boards , highlightNext then Finish .Once the project is loaded, click Create Block Design under the IP Integrator section of the leftmenu bar, and click OK in the pop-up window.You now have a blank design. Hit the Add IP button, and select ZYNQ7 Processing System fromthe list. Double-click on the processing system block, and click on Presets and select ZedBoard .Close the window using the OK button.At this point, a green banner should be displayed, click on Run Block Automation . Select OK onSelectthe ZedBoard in the boards list, and clickthe pop-up window.12

4.2.GENERATING THE DEVICE TREE13Finally, we need to connect the system clock. Click on the wire going out theout pin, and drag a connection to theM AXI GP0 ACLKSave the design, and close the block design.design 1Right-click theGenerate Output Products.item underDesign sourcesGenerate .and hitFCLK CLK0input pin.Project Managerof thetab, and selectWait until generation is over.design 1 i - design 1, then select Create HDL Wrapper. . In the pop-upLet Vivado manage wrapper and auto-update and hit OK .generate the bitstream by clicking on Generate Bitstream under the Program and DebugRight-click again onwindow, selectFinally,section of the left menu bar. If a dialog warns you about missing synthesis and implementation,selectYes .This procedure will probably last for a couple minutes. You can follow the completion state intheDesign Runstab of the bottom section.When generation is over,write bitstream Complete!may appear depending on your settings. If so, just hitshould be displayed, and a pop-up windowCancel .Hardware generation is over, and the bitstream le is located atdesign/hardware design.runs/impl 1/design 1 wrapper.bit.steps, selectFileExportExport Hardwareand validate using {CUSTOMDIR}/hardwareIn order to prepare the nextOK .We now need to generate the device tree, so you may not want to close Vivado immediately.4.2 Generating the device tree4.2.1 Downloading the device tree generatorThe rst time you reach this step, you need to download some sources. Other projects can usethe same les, so if you already did it, there is no need to repeat this step.We will use the generic script {BASEDIR}/scripts/download sources.shto download thedevice tree generator. Launch the script using the following command: {BASEDIR}/scripts/download sources.shFrom there, make sure you answer yes ( y ) when asked for device tree generator download. Ifyou're in a hurry, you may want to skip the other downloads ( n ), as they will be automaticallyperformed when required.4.2.2 Generating the device treeDue to scripting issues with SDK, I do not provide a script for this part, so here is the manualway of doing things.First, you need to open the previously created Vivado project. If you used the script to generatethe hardware design, the project is located in {PROJECT ROOT}/hardware design/.In Vivado GUI, launch XSDK by selectingFileLaunch SDK ,and validating.You're now in the Xilinx Software Development Kit (XSDK) environment. We need to tell itwhere to nd the device tree generator. SelectThen, select theNew.want to re-use it later. Browse toand then selectOpen .Xilinx ToolsRepositories .button, either in the local area for this project only or in global if you {BASEDIR}/resources/device tree/device tree-generator/,Now that the tool is known by the environment, selectBoard Support Package OS section, selectdevice treeFileIn the settings window which opens automatically selectvide thevalue:NewBoard Support Package . In theFinish .device tree . We need to pro-and validate usingOverviewbootargs variable, which represent the Linux kernel boot arguments.Set the followingconsole ttyPS0,115200 root /dev/mmcblk0p2 rw rootfstype ext4 earlyprintk rootwait

14CHAPTER 4.HARDWARE LAYOUT AND LOW-LEVEL SOFTWAREMoreover, if you plan on using an Ethernet connection, you may add theipargument to auto-matically connect at startup. If your board will be plugged on a DHCP-managed network, addthe following to the bootargs list:ip :::::eth0:dhcpYou can also setup a static IP address using theip boot argument, but it will be very dependenton your network con guration, so it is recommended to get some insight online about how thisargument is to be used.Once done, validate usingOKand wait for generation. {PROJECT ROOT}/hardware design/hardware design.sdk/devicetree bsp 0/system.dts. Copy this le to the {PROJECT ROOT}/output/device tree/ folder.Copy as well les zynq-7000.dtsi and skeleton.dtsi, which are needed as they are referencedThe output le is thenin the device tree le.You're done with the device tree, but you may not want to exit XSDK as the FSBL generationwill continue with it.4.3 Generating the rst stage boot loaderDue to scripting issues with SDK, I do not provide a script for this part, so here is the manualway of doing things.In XSDK, selectisstandaloneandFileRight-click on theSet ActiveNewLanguageRelease .isApplication Project .C, and then clickSet project nameNext .FSBL, make sure OS PlatformSelect templateZynq FSBL and then Finish .Build Con gurationsFSBL project in the Project explorer section, and selectRight-click again and selectto continue by clicking onBuild Project .You can follow the generation process in thegeneration is over, the output le issdk/FSBL/Release/FSBL.elf.boot loader/ folder.CopyClean Project .If auto-build is disabled, you wantConsole tab at the bottom of the screen.Once {PROJECT ROOT}/hardware design/hardware design.this le to the {PROJECT ROOT}/output/first stageYou may not want to exit XSDK, as the step after the next (which is quite fast) will requireit.4.4 Generating the bootloader4.4.1 Default con guration using scriptIf the board has to be used on an Ethernet network, you'll need to de ne a MAC address forthe board. This address will be asked as part of the following script. If you have no use of thenetwork, just answer n when asked for MAC address.Open a shell and type: {BASEDIR}/scripts/generate boot loader.sh {project name}When done, the boot loader should be located inu-boot.elf. {PROJECT ROOT}/output/boot loader/4.4.2 Manual procedureThe procedure consists in downloading U-Boot, con guring it, and generating the boot loader.First, download U-Boot using the following commands:

4.5.GENERATING THE BINARY FILE15 git clone https://github.com/Xilinx/u-boot-xlnx.git {CUSTOMDIR}/boot loader git -C {CUSTOMDIR}/boot loader checkout xilinx-v2016.4We then need to edit the default con guration to match our needs. Open leboot loader/include/configs/zynq-common.h. {CUSTOMDIR}/All lines numbers in the following are given forthe speci c Vivado version supported in this guide, and may di er if using a di erent version.sdboot (line 259)."load mmc 0 {ramdisk load address} {ramdisk image} && " \the next line to remove the {ramdisk load address} part, replacing itFirst, we don't use a ramdisk image. Search for section beginning withWe must remove the line(line 264). Then, editby a -' character. The line should now look like this:"bootm {kernel load address} - {devicetree load address}; " \We also need to editfdt highvalue, fromx20000000tox19000000(line 221).Then, if the board has to be used on an Ethernet network, you'll need to de ne a MAC addressfor the board. To do so, edit the lineethaddr 00:0a:35:00:01:22(line 206) to introduce the MACaddress desired for the board, and save the le. If you have no use of the network, just ignore thisstep.The following steps require your cross-compilation environment to be set. If you have a standard Xilinx con guration, you can type the following in the console: export PATH /opt/Xilinx/SDK/2016.4/gnu/arm/lin/bin: PATH export CROSS COMPILE arm-xilinx-linux-gnueabiThen con gure U-boot using the following commands: make -C {CUSTOMDIR}/boot loader distclean make -C {CUSTOMDIR}/boot loader zynq zed configFinally, generate the boot loader image: make -C {CUSTOMDIR}/boot loaderIf everything went well, the output le containing the boot loader isloader/u-boot. {CUSTOMDIR}/bootIt is recommended copying this le in some other place, using nameu-boot.elf.Indeed, the missing extension is needed in the following step.4.5 Generating the Binary leDue to scripting issues with SDK, I do not provide a script for this part, so here is the manualway of doing things.Xilinx ToolsCreate a new bif le. .In XSDK, selectcheckIn eldCreate Boot Image .Output BIF le path:,generation/boot.bif.click onBrowseMake sure target architecture is Zynq, andand navigate to {PROJECT ROOT}/binaryThis .bif le can be re-used to generate the binary le if you update anyof the les used for the binary generation.Output path eld, type {PROJECT ROOT}/output/bin/boot.bin.Boot image partitions list already contains elements, clean it by selecting them one byone and clicking Delete . In Boot image partition, click on Add , add le {PROJECT ROOT}/output/InIf the

16CHAPTER 4.HARDWARE LAYOUT AND LOW-LEVEL SOFTWAREfirst stage boot loader/FSBL.elfand make sureOK .usingClick onAddagain, and select the bitstream.bootloaderis the partition type. ValidateIf you followed this tutorial for hardware {PROJECT ROOT}/output/hardware design/bitstream.in your Vivado folder, under the project .runs/impl 1/generation, it should be available atbit.If not, the bitstream should befolder. Make sure the partition type isSelectwith aAdddata le {PROJECT ROOT}/output/bootloader/u-boot.elf,partition type.Finally, selectThe ledata le, and validate.a third time, and then chooseCreate Image . {PROJECT ROOT}/output/bin/boot.binYou may now exit XSDK and Vivado.has been created.

Chapter 5Generating LinuxThis chapter concerns the Linux kernel and le system generation. This is the software part thatcan be customized and tailored to your needs.5.1 Generating the kernelThe kernel generation requires the boot loader. Please make sure you already generated the bootloader before running into this step (see Section 4.4).5.1.1 De

ZedBoard platform and related peripherals, including the SD card provided with ZedBoard. The author or its institution cannot be held responsible for any harm caused to your host system, ZedBoard platf