This ports over the following commits from the main ARTIQ repo:
- 8740ec3dd52d85084237797881ea137492bfe070
- dbbe8e8ed4f852e623775b7bd3aec818cdd03376
- b9f13d48aa7e2c0652210152b971b21c3c419347
I chose the version from the main repository for two
reasons:
- Explicitly specifying si5324_ref_input every time would
not work for the different Kasli/… hardware versions.
- Having `crystal_ref` as a setting in the configuration
is misleading if it does not actually activate the crystal
for use as a reference (but rather does
`route_crystal_to_ckin2`).
Related m-labs/artiq commits:
- 740543d4e284245248e3ff838c46505938dcae7a
- 3c7a394eff553ab75a7ea78bdd17830366504dc6
Closes#198#200
Making it a soft panic makes it more involved with a bit of code duplication - setting up mgmt requires setting up the interface and sockets. Maybe can be done a bit cleaner.
```
[spaqin@hera:~/m-labs/artiq-zynq]$ artiq_sinara_tester
****** Sinara system tester ******
[...]
ConnectionRefusedError: [Errno 111] Connection refused
[spaqin@hera:~/m-labs/artiq-zynq]$ artiq_coremgmt -D 192.168.1.56 log
[ 0.000067s] INFO(runtime): NAR3/Zynq7000 starting...
[ 0.005238s] INFO(runtime): detected gateware: GenericMaster
[ 0.016152s] INFO(libboard_zynq::i2c): PCA9548 detected
[ 0.023004s] WARN(runtime): config initialization failed: SD error: Card initialization error: No card inserted, check if the card is inserted properly.
[ 0.036730s] WARN(runtime::rtio_clocking): error reading configuration. Falling back to default.
[ 0.213000s] ERROR(runtime::rtio_clocking): RTIO PLL failed to lock
[ 0.224443s] INFO(libboard_zynq::i2c): PCA9548 detected
[ 0.256197s] INFO(runtime::comms): network addresses: MAC=e8-eb-1b-13-49-8b IPv4=192.168.1.56 IPv6-LL=fe80::eaeb:1bff:fe13:498b IPv6: no configured address
[ 0.270183s] ERROR(runtime::comms): There has been an error configuring the device: RTIO PLL failed to lock. Only mgmt interface will be available.
[ 4.000095s] INFO(libboard_zynq::eth): eth: got Link { speed: S1000, duplex: Full }
[ 33.148521s] INFO(runtime::mgmt): received connection
```
Reviewed-on: M-Labs/artiq-zynq#199
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
The backtrace is now nested, and should be used together with the stack
pointer array to construct the full backtrace for each exception.
We now allocate exception objects in a stack, but their names are still
not allocated. This is fine for exceptions raised in the driver or artiq
code, but we will have to implement allocation for names of exceptions
raised in RPC calls. The compiler should also emit code to store the
exception names once they catch it, to prepare for later reraising.
This patches ports the LLVM libunwind newly added forced unwinding
function. This enables us to run forced unwinding to obtain correct
backtrace when uncaught exceptions occur.
This patch also changes the exception handling scheme from the standard
two-phase unwinding to single phase using forced unwinding. This brings
some performance improvement and prepared for later nested exception
support. For nested exceptions, we will have to record the backtrace
regardless if the exception is an uncaught exception, as there can be
another exception being thrown while executing the finally block for
caught exceptions, and we will lose the backtrace if we don't store it
earlier before running the cleanup pads.
Port of 4a6bea479a
Co-authored-by: Steve Fan <sf@m-labs.hk>
Reviewed-on: M-Labs/artiq-zynq#156
Co-authored-by: stevefan1999 <sf@m-labs.hk>
Co-committed-by: stevefan1999 <sf@m-labs.hk>
si5324 driver in runtime should be now equal in function to the one in artiq.
kasli-soc has no way of doing a hard reset on the peripheral, but zc706 does.
Reviewed-on: M-Labs/artiq-zynq#132
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
The previous method of taking the channel could cause deadlock, we now
use semaphore to signal if the channel is available instead of busy
polling the mutex.