How to reprogram your KCU105 board’s QSPI Boot Prom

  1. The KCU105 MUST have a version of the SimplePgp4Kcu105Example firmware loaded. If first time to program KCU105 with SimplePgp4Kcu105Example, then use the JTAG and load the .bit file into the FPGA.

  2. Make sure SW15 is setup for QSPI booting (refer to Hardware Setup)

  3. Build the firmware (refer to How to build the firmware) to that there is .MCS files in the “targets/SimplePgp4Kcu105Example/images” directory.

  4. Setup rogue software (refer to Rogue Software Setup)

  5. Run the reprogramming script

    $ python scripts/updateBootProm.py --path <PATH_TO_IMAGE_DIR>*)
    

    Example of the script output:

    $ python scripts/updateBootProm.py --path ../firmware/targets/SimplePgp4Kcu105Example/images/
    Rogue/pyrogue version v5.8.0. https://github.com/slaclab/rogue
    Start: Started zmqServer on ports 9107-9109
    Root.Core.AxiVersion count reset called
    ###################################################
    #                 Old Firmware                    #
    ###################################################
    Path         = Root.Core.AxiVersion
    FwVersion    = 0x1000000
    UpTime       = 16:32:03
    GitHash      = dirty (uncommitted code)
    XilinxDnaId  = 0x4002000100f1cd4544618485
    FwTarget     = SimplePgp4Kcu105Example
    BuildEnv     = Vivado v2021.1
    BuildServer  = rdsrv307 (Ubuntu 20.04.2 LTS)
    BuildDate    = Thu 15 Jul 2021 01:44:36 PM PDT
    Builder      = ruckman
    0 : ../firmware/targets/SimplePgp4Kcu105Example/images/SimplePgp4Kcu105Example-0x01000000-20210715134436-ruckman-dirty
    1 : ../firmware/targets/SimplePgp4Kcu105Example/images/SimplePgp4Kcu105Example-0x01000000-20210716121151-ruckman-50550dd
    Enter image to program into the PCIe card's PROM: 1
    Root.Core.AxiMicronN25Q[0].LoadMcsFile: ../firmware/targets/SimplePgp4Kcu105Example/images/SimplePgp4Kcu105Example-0x01000000-20210716121151-ruckman-50550dd_primary.mcs.gz
    PROM Manufacturer ID Code  = 0x20
    PROM Manufacturer Type     = 0xbb
    PROM Manufacturer Capacity = 0x19
    PROM Status Register       = 0x2
    PROM Volatile Config Reg   = 0xfb
    Reading .MCS:    [####################################]  100%
    Erasing PROM:    [####################################]  100%
    Writing PROM:    [####################################]  100%
    Verifying PROM:  [####################################]  100%
    LoadMcsFile() took 0:00:50 to program the PROM
    
    
                ***************************************************
                ***************************************************
                The MCS data has been written into the PROM.
                To reprogram the FPGA with the new PROM data,
                a IPROG CMD or power cycle is be required.
                ***************************************************
                ***************************************************
    
    
    Root.Core.AxiMicronN25Q[1].LoadMcsFile: ../firmware/targets/SimplePgp4Kcu105Example/images/SimplePgp4Kcu105Example-0x01000000-20210716121151-ruckman-50550dd_secondary.mcs.gz
    PROM Manufacturer ID Code  = 0x20
    PROM Manufacturer Type     = 0xbb
    PROM Manufacturer Capacity = 0x19
    PROM Status Register       = 0x2
    PROM Volatile Config Reg   = 0xfb
    Reading .MCS:    [####################################]  100%
    Erasing PROM:    [####################################]  100%
    Writing PROM:    [####################################]  100%
    Verifying PROM:  [####################################]  100%
    LoadMcsFile() took 0:00:49 to program the PROM
    
    
                ***************************************************
                ***************************************************
                The MCS data has been written into the PROM.
                To reprogram the FPGA with the new PROM data,
                a IPROG CMD or power cycle is be required.
                ***************************************************
                ***************************************************
    
    
    
    Reloading FPGA firmware from PROM ....
    
    Reloading FPGA done
    ###################################################
    #                 New Firmware                    #
    ###################################################
    Path         = Root.Core.AxiVersion
    FwVersion    = 0x1000000
    UpTime       = 0:00:04
    GitHash      = 0x50550dd2881fed3f48af0ca0db8a78da9f3e2363
    XilinxDnaId  = 0x4002000100f1cd4544618485
    FwTarget     = SimplePgp4Kcu105Example
    BuildEnv     = Vivado v2021.1
    BuildServer  = rdsrv307 (Ubuntu 20.04.2 LTS)
    BuildDate    = Fri 16 Jul 2021 12:11:51 PM PDT
    Builder      = ruckman