Bootloader resources


Does the TinyFPGA BX’s bootloader use any LUTs once a user design is loaded?

I think I read somewhere that the bootloader does not consume any LUTs once a design is loaded as the configuration as the iCE40 is completely reconfigured from the SPI memory. However, reading ZipCPU blog post made me unsure about it.

A corollary question is whether iCE40 FPGAs able to reconfigure themselves using only SPI flash?


The bootloader takes no resources once the user design is running. The bootloader is stored towards the beginning of SPI flash, followed by the user design. The iCE40 has a function called warmboot, allowing it to load one of four images from SPI flash at runtime, that is used to switch from the bootloader to user design.


There is more information on how the boot loader works in this thread - Experiments with BX programmer and bootloader

The Zipcpu article was referring to the LUTs used if you use the bootloader usb stack in your own design as in USB Communication and USB ACM FIFO and RISCV core demo and Programming the TinyFPGA BX with Arduino.


Thank you for the clarification!