Skip to main content

Use an External Programmer to Flash the C0-microSD

You can flash the C0-microSD on-board SPI flash chip using an external programmer, and the iceprog toolkit, which is part of the IceStorm suite. This example uses the Tigard board, which can interface with SPI ports that operate at 1.8V and is compatible with the iceprog toolkit.

warning

Do not attempt to manually flash the C0-microSD using an external programmer unless you know what you are doing. Overriding the Bootloader bitstream, the Signaloid SoC bitstream, or the first 512 KiB of the non-volatile memory may disable the bootloader and SD interface of the C0-microSD. Nevertheless, this method can be used to re-flash the Bootloader and Signaloid SoC in case they are corrupted, and bring the device to its initial state. You can find the official C0-microSD configuration bitstreams in the C0-microSD-Hardware repository.

  1. Make sure that the Tigard board is configured correctly, with the Target switch set to 1.8V and the Mode switch set to JTAG/SPI (Figure 1).

  2. Connect the C0-microSD to the Tigard board as follows (Figure 1):

    C0-microSD PinSilkScreenTigard Board PinNotes
    VDD--Supply voltage of 3.3V must be externally provided
    VSS-GNDGround
    CONFIG_SCLKCTCKClock pin of SPI configuration port
    CONFIG_DONED-Configuration done pin, not connected
    CONFIG_CRESETnRSRSTFPGA reset pin (active low)
    CONFIG_MISOOTDOMISO pin of SPI configuration port
    CONFIG_CSnSTRSTChip select of SPI configuration port (active low)
    CONFIG_MOSIITDIMOSI pin of SPI configuration port
    note

    The form-factor of the C0-microSD requires the use of special tooling for accessing the configuration pins mentioned above. We recommend one of the following methods:

    • Using a probing system like PCBite from SensePeek.
    • Using a data recovery jig like the iDili probe, the PC-3000 spider board, or something similar.
    • Soldering small wires to the bottom pads. This is a cheap solution but might cause fitment issues if you don't thoroughly clean the pads from any remaining solder after you have completed the flashing process.
  3. Connect a power supply of 3.3V to the C0-microSD, make sure that the ground pins of the power supply and the Tigard board are tied together (Figure 1).

    C0-microSD Tigard Connection Diagram
    Figure 1: Tigard connection diagram using the pads located at the bottom layer of the C0-microSD.
  4. Use the iceprog tool from the IceStorm suite to flash a new bitstream to the device. Assuming your bitstream is named c0-microsd.bin use the following command and wait for the flashing process to finish:

    iceprog -I B -p c0-microsd.bin

    init..
    cdone: high
    reset..
    cdone: high
    flash ID: 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42
    0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42 0x18 0x1F 0x42
    file size: 104157
    erase 64kB sector at 0x000000..
    erase 64kB sector at 0x010000..
    programming..
    done.
    reading..
    VERIFY OK
    cdone: high
    Bye.

    A console message stating VERIFY OK means that flashing the new bitstream was successful. You need to power cycle the device for the new bitstream to take effect.

Next steps