Building an FSBL for the ZC706 using Petalinux
Well, another blog post on how to build a modified FSBL for ZYNQ. Using the patch which I demonstrated how to make in the previous post and a modified version of the fsbl_%.bbappend file which I received from the Xilinx Forum post regarding this I was able to make a working FSBL with my patch. The modified fsbl_%.bbappend file is shown below.
# Force to use embeddedsw repository EXTERNALXSCTsrc="" EXTERNALXSCTSRC_BUILD = "" #Enable FSBL debug flags YAML_COMPILER_FLAGS_append = " -DFSBL_DEBUG" # Patch FSBL SRC_URI_append += "file://0001-fsbl.patch" FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
Here are the steps used to create the FSBL
First run petalinux-create to build a petalinux project. Point it at the appropriate BSP.
$ petalinux-create --type project --source /tools/xilinx/bsp/xilinx-zc706-v2017.4-final.bsp
Then copy the fsbl_%.bbappend file into the project.
$ cp fsbl_%.bbappend xilinx-zc706-2017.4/project-spec/meta-user/recipes-bsp/fsbl $ cp 0001-fsbl.patch xilinx-zc706-2017.4/project-spec/meta-user/recipes-bsp/fsbl/files
Next run a petalinux-build to make the bootloader
$ petalinux-build --project xilinx-zc706-2017.4 -c bootloader
When all is said and done you will get a zynq_fsbl file in xilinx-zc706-2017.4/images/linux/zynq_fsbl.elf.
This procedure works for 2017.4 and 2016.4.
Building from the git checkout
Alternatively you can build from the git checkout where you made the patch. This seems much simpler but it doesn’t work for me with petalinux 2016.4.
From the embeddesw checkout directory cd to lib/sw_apps/zynq_fsbl_src and run the following command.
$ make BOARD=zc706
This should build the file fsbl.elf in the src directory.
When I try to build this for 2016.4 I get a bunch of errors. They differ depending on how I set the CC variable on the make command line. If I don’t set it I get errors about arm-xilinx-eabi-gcc: Command not found. If I set CC=arm-none-eabi-gcc then I get this
arm-none-eabi-gcc -c pcap.c -o pcap.o -I../misc//ps7_cortexa9_0/include -I. In file included from pcap.c:96:0: pcap.h:65:21: fatal error: xdevcfg.h: No such file or directory compilation terminated. Makefile:97: recipe for target 'pcap.o' failed
If anyone knows what to do about this I’m all ears.