The iCEBlaster Uses an STM32 to Make FPGA Bitstream Loading as Easy as Drag-and-Drop

Just connect a Lattice iCE40 FPGA via SPI and the iCEBlaster will program the bitstream of your choice, no software required.

Gareth Halfacree
2 years ago β€’ FPGAs / HW101

Maker Thipok "Austin" Jiamjarapan has been working on a tool designed to make field-programmable gate array (FPGA) more accessible, by allowing bitstreams to be loaded as easily as dragging-and-dropping a file onto a flash drive: the iCEBlaster.

"iCEBlaster is a drag and drop firmware loader via SPI for [the Lattice] iCE40 FPGA," Austin explains of his work. "The brain of this project is based on STM32 Arm Cortex microcontroller."

This neat STM32-based programmer lets you drag-and-drop a bitstream file onto an FPGA. (πŸ“Ή: Thipok "Austin" Jiamjarapan)

Exactly how the iCEBlaster operates depends on the model. There are two variants, and while both show up as a USB Mass Storage Device ready to accept a bitstream file how they do so differs: The original iCEBlaster exposed the STM32's internal flash memory as a USB drive, while the second variant uses a virtual filesystem.

"[The original] version of iCEBlaster only support[s] iCE40 with 1K LUTs [Look-Up Tables]," Austin explains. "The benefit of using VFS [Virtual Filesystem] is that you can send virtually any bitstream size. This allow iCEBlaster to not only support just iCE40LP1K and UL1K, but other higher density iCE40 can now be used with iCEBlaster. Plus, when not rely[ing] on internal flash, this doesn't wear out the flash and kill the STM32 fast."

The iCEBlaster is designed to do away with the need to upload a bitstream using host-based software. Instead, the user need only connect the iCEBlaster via USB and drag the bitstream file across to the removable drive that appears; once transferred, it will be automatically programmed onto the connected FPGA via the SPI bus.

Austin has been experimenting with the iCEBlaster concept using an off-the-shelf Maple Mini development board, but is ready to take the project to the next stage. "I'm thinking about making an actual USB stick board to be the actual iCEBlaster," he explains.

"Right now the iCEBlaster with VFS virtually works on any STM32 that have USB MSC. Then I recalled that there's the 20 pins STM32F042F6P6. And it might work with the original code. But need to do some code shrinking to fit the 32kBytes flash and 6kBytes SRAM. Code is done but untested. I also designed the PCB for iCEBlaster too."

More details on the iCEBlaster are available on Austin's Hackaday.io project page; source code for both the original design and the VFS variant are available on GitHub under the reciprocal GNU General Public License 3.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles