CONTENT
WiProg v1
WiProg is a simple ESP8266-based wireless SPI flash programmer.
Connect to SPI flash of choice on one side, power on the other, program stuff via its Web UI.
Also supports resetting devices the SPI flash actually belongs to!
More documentation/code can be found here.
This project was originally implemented in ~2022/09.
Features
- Basic SPI flash programming
- Single-threaded
- You can’t use the UI while the device is being flashed
- No frills, one client only
- Supports remote device reset
- Basic REST-ish API
- Useable Web UI
- Flash upload and download
- Built with PlatformIO
- No more manual faffing with Arduino dependencies!
Screenshots
Project Status
WiProg’s software is currently functional and usable, if only as an MVP of sorts. It is quite far from perfect, but it works. And that’s all I currently care about.
The actual code is pretty ugly, and relies on there being only one connection/upload happening at any given time.
No PCB has yet been created for this project, as its prototype currently lives on one of my breadboards, and is rather quick to whip up.
Relation to other projects
WiProg has been successfully used to flash new firmware into the iCEDIP FPGA board.
Scriptability
It should be possible to integrate WiProg programming into firmware build scripts.
Uploading the firmware is a matter of sending one HTTP POST
request with the firmware binary as a payload.
Only “raw” .bin files are supported, no .hex files.
Future improvements
Therefore, a v2 is planned with the following features for its MVP:
- Complete rewrite of the webserver code
- Multithreaded webserver
- Support for PSRAM to pre-load the code into
- Useful for multi-device flashing with the same image
- Useful for retry after failure
- Quicker user experience - Flash images could be uploaded to WiProg faster, while the programming progress could be watched with some progress bar
- Support for partial programming
- Only flash the Flash from a given offset, keeping remaining data untouched.
Nice-to-haves for v2:
- SFDP decoding to tell how big the Flash chips actually are
- SVF player for programming over JTAG
- Serial console for remote debugging
- Easier WiFi configuration