The Linux kernel recently added support for loading firmware into an FPGA via the FPGA Manager Framework. [OpenTechLab] has built a driver for the Lattice iCE40 FPGA (same chip used on the iCEStick and other development boards). One attraction to the iCE40 is there is an open source toolchain called iCEStorm.
Even if you aren’t specifically interested in FPGAs, the discussion about Linux device drivers is good background. The principles would apply to other drivers, and would definitely apply if you want to write another FPGA loader.
The example uses a Raspberry Pi connected to an evaluation board. A cheap Sigrok-based logic analyzer let him troubleshoot and debug. If you think FPGA development is expensive, think again. The board used here is well under $50 and the software is free. An iCEStick is even cheaper, and would probably work here, too. You are likely to have the other bits, but even if you need to buy a Pi and the logic analyzer, the whole thing is way under $100.