- Edited
This questions is about writing a startup kernel into the satellite's startup_kernel
config key.
While running a startup_kernel on the master crate only is possible, that waits until the satellite links comes online, and then executes all necessary initializations on all destinations, this takes some time. In this case around 12s. See log in the end.
It would be better for our case if each destination (master and its satellites) has their own startup_kernel they run when coming up.
As artiq_coremgmt in ARTIQ 8 cannot reach the satellites, my question is now:
Is there another way to write a startup/idle kernel directly to satellites?
System Info:
- OS: NixOS
- ARTIQ version: v8.8999+37a41b2
- Master: Kasli SoC
- 2x Satellite: Kasli SoC
Relevant master log below. Startup kernel starts at around 4s (marked with stars), but Satellite links comes online. Some core_log messages added in startup_kernel.py to see what happens.
__________ __
/ ___/__ / / /
\__ \ / / / /
___/ / / /__/ /___
/____/ /____/_____/
(C) 2020-2022 M-Labs
[ 0.019990s] INFO(szl): Simple Zynq Loader starting...
....
[ 4.062785s] INFO(runtime::comms): Loading startup kernel...
[ 4.068548s] INFO(runtime::rtio_mgt::drtio): [LINK#0] link RX became up, pinging
[ 4.076067s] INFO(runtime::comms): Starting startup kernel...
[ 4.081815s] INFO(ksupport::kernel::core1): kernel starting
[ 4.111360s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 5.087655s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 6.087633s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 7.087608s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 8.087585s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 9.087565s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 10.087536s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 10.644982s] INFO(runtime::rtio_mgt::drtio): [LINK#0] remote replied after 33 packets
[ 10.680238s] INFO(runtime::rtio_mgt::drtio): [LINK#0] link initialization completed
[ 10.687964s] INFO(runtime::rtio_mgt::drtio): [LINK#1] link RX became up, pinging
[ 11.087517s] INFO(ksupport::kernel::api): kernel: Waiting on rtio destination 2..
[ 11.648981s] INFO(runtime::rtio_mgt::drtio): [LINK#1] remote replied after 4 packets
[ 11.684140s] INFO(runtime::rtio_mgt::drtio): [LINK#1] link initialization completed
[ 11.691790s] INFO(runtime::rtio_mgt::drtio): [DEST#0] destination is up
[ 11.698510s] INFO(runtime::rtio_mgt::drtio): [DEST#1] destination is up
[ 11.705234s] INFO(runtime::rtio_mgt::drtio): [DEST#1] buffer space is 128
[ 11.712043s] INFO(runtime::rtio_mgt::drtio): [DEST#2] destination is up
[ 11.718775s] INFO(runtime::rtio_mgt::drtio): [DEST#2] buffer space is 128
[ 12.087491s] INFO(ksupport::kernel::api): kernel: Submitting kernel to satellite 2
[ 12.095392s] INFO(ksupport::kernel::api): kernel: Now running satellite 2 DC voltage init.
[ 12.103748s] INFO(ksupport::kernel::api): kernel: Done running satellite 2 DC voltage init.
[ 13.604827s] INFO(ksupport::kernel::api): kernel: Initializing Fastino 0 on master
[ 13.612395s] INFO(ksupport::kernel::api): kernel: done with startup on all subkernels and master.
[ 14.124918s] INFO(ksupport::kernel::core1): kernel finished
[ 14.130568s] INFO(runtime::comms): Startup kernel finished!
[ 16.136072s] INFO(libboard_zynq::eth): eth: got Link { speed: S100, duplex: Full }