03-12-2020 04:53 PM
I'm using SDK 2018.2 on CentOS 7, trying to build the Zynq 7000 FSBL as generated by SDK. I've gone into the source to remove __TIME__ and __DATE__ so that the code inputs are the same each build.
After I build the FSBL, I assemble the FSBL.elf + bitstream.bit + (pre-compiled ) application ELF into a BOOT.bin and then compute the checksum of said BOOT.bin.
I'm able to get the checksum to be repeatable on my machine, but when I try to build on the configuration managed machine (same OS, same Vivado & SDK version) it consistently outputs a different checksum. On both machines I can reproduce Vivado 2018.2 bitstreams consistently every time.. but apparently not SDK outputs?
My question to Xilinx is this: According to AR 61599 , Vivado results *are* supposed to be repeatable for identical inputs (and OS, scripts, etc).. but does that not apply to SDK results for identical inputs?
If it is still expected that SDK outputs are repeatable, what OS packages or libraries does SDK rely on? I know it ships with its own GCC, does it compile its own libraries? Libc and such?
03-19-2020 09:58 AM
Did you compare both FSBL binaries to check if there are differences rather than using the BOOT.bin? I would expect bootgen to generate exactly the same boot binary image if all the inputs are identical. You could check easily using the same files in both machines just to do a quick check.
My guessing is that your ELF files are slightly different. You properly already removed the __TIME__ and __DATE__ macro usage from the FSBL code but there are still some host related information on your ELF file.