Summary written for ourselves on our wiki:
Booting over JTAG does not persist across power cycles, so new firmware would have to be flashed with artiq-zynq/local_run.sh or artiq-zynq/remote_run.sh after every single power outage. Also, booting over JTAG cannot be combined with booting from SD card because SW11 and SW12 have to be physically flipped on the Kasli SoC board to change boot mode, see BOOT MODE in Kasli SoC PCB layout with highlighted components.
Conclusion: Booting over JTAG allows fast proto-typing when modifying and testing the firmware but is useless to regular operation in the lab, where persistence across power cycles is required.
As it currently stands, we only have 2 options to flash our Kasli SoCs:
- Kasli SoC
master or standalone with a functioning Ethernet connection and with SW11 and SW12 permanently set to SD: artiq_coremgmt config write -f boot [path]/boot.bin + artiq_coremgmt reboot (or power cycle).
- Kasli SoC
satellite or no functioning Ethernet connection: We have to power down the Kasli SoC, physically disconnect the peripherals' ribbon cables from its EEM slots and physically take the it out of its cassette in our electronics rack, which is very annoying.
Note: Booting over JTAG could be made useful to regular operation in the lab if:
In that case, one could go to any Kasli SoC and:
- set
SW11 and SW12 on the front panel to JTAG,
- boot over JTAG,
- replace
boot.bin on the SD card inside the Kasli SoC via artiq_coremgmt config write -f boot [path]/boot.bin,
- write a bunch of core config keys & values to
/config.txt on the SD card inside the Kasli SoC via artiq_coremgmt config write -s KEY VALUE and,
- finally, set
SW11 and SW12 to SD for regular operation.