How to reprogram your KCU105 board’s QSPI Boot Prom
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.
Make sure SW15 is setup for QSPI booting (refer to Hardware Setup)
Build the firmware (refer to How to build the firmware) to that there is .MCS files in the “targets/SimplePgp4Kcu105Example/images” directory.
Setup rogue software (refer to Rogue Software Setup)
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