[meta-xilinx] May I ask Xilinx to remove reference to Elphel in zynq-boot-bin.py?

andrey andrey at elphel.com
Mon Mar 31 13:50:32 PDT 2014

I just realized that https://github.com/Xilinx/u-boot-xlnx/blob/master-next/tools/zynq-boot-bin.py includes Elphel copyright and license as well as my name (Andrey Filippov). Elphel gives Xilinx permission to use the trivial portion of ezynqcfg.py (it should also be easy to re-write that portion in other programming langauge)  but we do not want our company name in the file that is a part of the build that to our understanding provokes violation of the GNU GPLv2 of U-Boot.

And here is why I think so.  zynq-boot-bin.py copies binary image generated from the combined U-Boot source and Xilinx proprietary ps7_init.c ( see beginning of https://github.com/Xilinx/u-boot-xlnx/blob/master-next/arch/arm/cpu/armv7/zynq/spl.c ). That is perfectly OK if you generate the binary for your personal (or company) use, but it is not possible to distribute such binary to others. Elphel (as other manufacturers) makes products and it is not practical for us to ship non-working cameras providing just instructions how the user, before turning the camera on should go to Xilinx web site, register there, download several gigabytes of the software, install it, generate ps7_init.c and then create U-Boot binary.

What I noticed also is that U-Boot builds "successfully" without ps7_init.c - no warnings during build - the result image just does not work. The source code includes line:

puts("Please copy ps7_init.c/h from hw project\n");

But it fails output anything as the binary does not have the code to setup the serial port to print this line. To me personally it all seems like cheating - generating a bogus binary that has to be later replaced with the real (but illegal to distribute) one. And I do not want to be a part of this and risk that our company name in the file header will be confused with our endorsement of this approach.

Before we started working on the Free Software boot loader for Xilinx Zynq, the available loader depended on proprietary FSBL binary that was not linked with the U-Boot, so there was no GPL violation. There was unclear legal status of distributing FSBL with the Zynq-based products, and when I asked that on Xilinx forum (http://forums.xilinx.com/t5/Embedded-Linux/Licensing-distribution-of-the-software-for-the-Zynq-based-system/td-p/346369)  I was directed to discuss licensing of the tools with our Xilinx distributor.  We decided to go other way, but acquiring a private permission to distribute FSBL with the product was at least legal and could work for both developers and product manufacturers. Distribution of the U-Boot binary (compiled with ps7_init.c) even with private permission from Xilinx to provide ps7_init.c to the customers of the products (unless it will be re-licensed under GNU GPL) would clearly violate the terms of the GNU General Public License.

Above I wrote "provokes violation" not "violates", because Xilinx is not distributing U-Boot binaries, but any manufacturer that will use this code and distribute generated binaries with the product will get into this legal trap.

Our Free Software bootloader generator for Zynq ( https://sourceforge.net/p/elphel/ezynq ) was designed both to avoid the legal problems of the software distribution with the products and to facilitate developer to boot new untested hardware - it has multiple configurable debug features, starting from the ROM boot loader. You can make your new board to change state of one of the I/O pins (detected by LED or just oscilloscope) before even a single line of custom code is executed - just with the RBL register set feature. The code programs all the registers that can be programmed before waiting for the PLL (or peripherals) state using this RBL feature and if needed this portion of the code can be easily analyzed or modified with the hex editor. The rest of the configuration is output as a single C file (with plenty of comments) so when needed developer can modify this generated code or make corresponding changes to the generator software. This critical for testing the new hardware step was our target for development to make things easier for other engineers. The software also generates detailed HTML output listing all the register settings, user configuration data and intermediate calculated data. The software is about 10k lines of code (many of them are register descriptions that can be used later to generate header files or device tree segments), zynq-boot-bin.py uses about 100 lines. And these 100 lines can be shrunk much more as most of the used code generates RBL header register setup that is not used with ps7_init.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-xilinx/attachments/20140331/c433afd1/attachment.html>

More information about the meta-xilinx mailing list