1================== 2Serprog (overview) 3================== 4 5This page collects information about the serprog protocol and the programmers implementing it. 6 7Protocol 8======== 9 10See :doc:`/supported_hw/supported_prog/serprog/serprog-protocol`. It is designed to be compact and allow efficient storage in limited memory of programmer devices. 11 12AVR flasher by Urja Rannikko 13============================ 14 15.. image:: 300px-Avr_rs232_programmer.jpg 16 17The Prototype RS232 AVR parallel flash programmer of Urja Rannikko was the first implementation of the serprog protocol. 18 19The source code can be found `here <https://github.com/urjaman/frser-atmega88>`_. 20 21InSystemFlasher by Juhana Helovuo 22================================= 23 24This was the first one that talks to SPI devices via serial over USB. 25Details can be found in the `coreboot wiki <https://www.coreboot.org/InSystemFlasher>`_ and in this 26`coreboot mailing list thread <https://mail.coreboot.org/pipermail/coreboot/2011-February/063349.html>`_. 27 28atmegaXXu2-flasher by Stefan Tauner 29=================================== 30 31Like the InSystemFlasher this one uses LUFA on an AVR microcontroller to tunnel the serial data over USB. 32 33.. image:: 300px-AtmegaXXu2-flasher.jpg 34 35Various Arduino based flashers 36============================== 37 38Frser-duino 39----------- 40 41This project contains `source code <https://github.com/urjaman/frser-duino/>`_ to install on Arduino devices. 42 43This developer also have various ports on `github repo <https://github.com/urjaman?tab=repositories>`_ for several microcontroller boards, such as: 44 45* `frser-teensyflash <https://github.com/urjaman/frser-teensyflash>`_: A port for the teensy microcontroller board 46 47There also various other interesting projects such as: 48 49* `fast-usbserial <https://github.com/urjaman/fast-usbserial>`_: A software to make arduino with 8u2 or 16u2 flashing faster and more reliable] 50* :ref:`arduino shield` 51 52Using a 5v Arduino at 3.3V 53-------------------------- 54 55Information on it can be found in this doc: :doc:`/supported_hw/supported_prog/serprog/arduino_flasher_3.3v` 56 575V arduino with level shifter 58----------------------------- 59 60For detailed instructions on how to use different Arduino models to access SPI flash chips see :doc:`/supported_hw/supported_prog/serprog/arduino_flasher` 61 62.. image:: 300px-Serprog_0001.jpeg 63 64Teensy 3.1 SPI + LPC/FWH Flasher 65-------------------------------- 66 67A Teensy 3.1 based small flasher by Urja Rannikko documented here: :doc:`/supported_hw/supported_prog/serprog/teensy_3_1` 68 69HydraBus multi-tool 70------------------- 71 72HydraBus (hardware) with HydraFW (firmware) is an open source multi-tool for learning, developing, debugging, hacking and penetration testing 73of embedded hardware. It is built upon an ARM Cortex-M4 (STM32F405). The source code for HydraFW is available 74`on GitHub <https://github.com/hydrabus/hydrafw>`_. Refer to `their GitHub Wiki <https://github.com/hydrabus/hydrafw/wiki/HydraFW-SPI-guide#flashrom-usage>`_ 75for more details on how to use HydraBus with flashrom. 76 77.. image:: 300px-HydraFW_Default_PinAssignment.png 78 79stm32-vserprog by Chi Zhang 80----------------------------- 81 82A powerful option is `stm32-vserprog <https://github.com/dword1511/stm32-vserprog#stm32-vserprog>`_, a firmware for various STM32-based boards 83that turns them into serprog-based programmers with SPI clock speeds up to 36 MHz. 84 85pico-serprog 86------------ 87 88`pico-serprog <https://github.com/stacksmashing/pico-serprog>`_ by stacksmashing is a firmware for 89`Raspberry Pi Picos <https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html>`_ and other RP2040 based boards which turns them 90into a serprog programmer. 91 92Notable forks are: 93 94`Riku_V's fork <https://codeberg.org/Riku_V/pico-serprog>`_ which uses the hardware SPI implementation instead of SPI over PIO (programmable IO) which 95sacrifices arbitrary pinouts. The fork also implements custom USB descriptors which allow for custom udev-rules. 96