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.