David Nadlinger
8e0229d265
si5324: crystal_{ref -> as_ckin2} [nfc]
...
This makes it clear that by itself, the flag does not
cause the input mux to be changed.
2022-12-17 01:33:50 +00:00
David Nadlinger
2ddb4d259f
Undo most of Si5324 unification ( 5c054cc901
)
...
This reverts most of 5c054cc901
, as it turns out that
si5324::setup is in fact also used to configure the
chip for operation as a DRTIO satellite.
2022-12-17 01:31:14 +00:00
David Nadlinger
5c054cc901
Unify Si5324 setup code with main ARTIQ repository [nfc]
...
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
2022-12-12 23:22:01 +00:00
c834e4f503
enable network and mgmt during Rust panic, make RTIO PLL lock failure a panic
...
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>
2022-10-21 17:56:34 +08:00
dc862a9051
match ident message with mainline
2022-10-21 12:08:11 +08:00
a546d0f95b
Implement reboot for artiq_coremgmt
2022-10-07 18:31:11 +08:00
b638fce069
update SEEN_ASYNC_ERRORS in destination_survey ( #195 )
...
Co-authored-by: kk105 <kkl@m-kabs.hk>
Reviewed-on: M-Labs/artiq-zynq#195
Co-authored-by: kk105 <kkl@m-labs.hk>
Co-committed-by: kk105 <kkl@m-labs.hk>
2022-06-20 17:41:08 +08:00
e3ed41ff32
fix index table reference type
2022-06-01 18:35:50 +08:00
7a8f96dbd9
rtio_mgt: use mutex's async_lock
2022-05-25 10:39:06 +08:00
4f457d9c24
moninj: log link down at debug level
2022-05-25 10:37:38 +08:00
24df52268e
moninj: restructure timeout
...
stop logging errors if satellite is unavailable
drtio: don't even send message if link is down
2022-05-25 10:37:38 +08:00
48c9b43171
moninj: make it use async drtioaux
2022-05-25 10:37:38 +08:00
78bc162749
rtio_clocking: remove loop
2022-04-12 13:33:52 +08:00
14f7778732
update libconfig features
2022-04-08 10:30:21 +08:00
433a9cdaf1
runtime: fix warnings on nondrtio systems
2022-03-29 10:05:11 +08:00
a79bef2243
runtime: provide/fix more libc mem functions
2022-03-28 13:24:01 +08:00
c6ef9b117c
fix previous commit
2022-03-26 20:08:11 +08:00
dcfaf587ec
firmware: add UnwrapNoneError exception
2022-03-26 15:29:40 +08:00
a92561b9d3
implement rtio_get_destination_status ( #177 )
...
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2022-03-25 18:20:05 +08:00
161044e78f
drop support for big-endian moninj
2022-03-19 23:01:36 +08:00
426500d2f9
firmware: support 64-bit moninj probes
2022-03-17 20:26:44 +08:00
0530e596ba
mgmt: remove spurious config write warning
2022-03-16 08:24:52 +08:00
7502f3a765
update dependencies
2022-03-10 17:25:40 +08:00
ae0d724bf8
runtime: use &CSlice for lists
2022-03-10 16:30:34 +08:00
6c834899e9
si5324: fix clock source
2022-03-09 13:55:36 +08:00
4f2a0986da
rtio_clocking: fix wrong descriptions
2022-03-03 10:24:13 +08:00
4a2218641f
fix BorrowMutError in moninj
2022-03-02 15:45:17 +08:00
9a06cd9d27
expose pca954x_select api ( #167 )
...
PR accompanying to ARTIQ's PCA954X support (#1860 ).
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2022-03-02 10:52:27 +08:00
b56b50b147
add comment about EXCEPTION_ID_LOOKUP sync
2022-03-01 09:50:28 +08:00
f38117774f
runtime/eh_artiq: updated exception IDs
...
Fixes #166
2022-02-28 21:15:07 +08:00
880ba6b206
runtime: add nac3 exception symbols
2022-02-23 11:05:08 +08:00
6f5ba46e89
runtime/eh_artiq: support exception allocation
...
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.
2022-01-23 21:31:22 +08:00
8923feceac
runtime/eh_artiq: use forced unwind
...
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.
2022-01-14 13:35:24 +08:00
acaf388dbb
eh_artiq: handle catch clauses appropriately
2022-01-06 13:41:47 +08:00
8788d6458e
runtime/rpc: fixes alignment and size problem
2022-01-04 18:25:53 +08:00
84becfe2c0
report async errors upon kernel termination
...
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>
2021-12-06 17:38:55 +08:00
31fb2b388a
Support for DRTIO 100MHz ( #155 )
...
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2021-12-03 17:19:42 +08:00
8be5048cd3
upgrade to new clock configuration system ( #152 )
...
As mentioned in https://github.com/m-labs/artiq/issues/1735 - this is the Zynq version.
Reviewed-on: M-Labs/artiq-zynq#152
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2021-11-29 11:17:59 +08:00
a5e3580d18
Revert "runtime: expose rint from libm"
...
This reverts commit 3582af564d
.
2021-10-11 08:13:26 +08:00
3582af564d
runtime: expose rint from libm
2021-10-10 20:40:29 +08:00
8d2bb09149
add satman firmware ( #136 )
...
Reviewed-on: M-Labs/artiq-zynq#136
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2021-10-08 16:04:50 +08:00
aaec0abdf6
fix build/warnings before drtio is fully merged
2021-10-06 16:17:19 +08:00
50262b3f0c
runtime: link_thread -> link_task
2021-10-06 07:59:55 +02:00
827c6c1306
runtime: switch to libio/libboard_artiq, add DRTIO mastering support
...
Reviewed-on: M-Labs/artiq-zynq#137
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2021-10-06 13:05:45 +08:00
e3d3cb2311
si5324: bring on par with mainline ARTIQ ( #132 )
...
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>
2021-08-04 09:12:38 +08:00
f543501012
si5324: remove debug print
2021-08-02 14:14:59 +08:00
111ac0c716
runtime: clock Si5324 from its crystal
2021-07-30 17:07:58 +08:00
8128dc0b56
Revert "kasli-soc: work around I2C breakage ( #130 )"
...
This reverts commit f1fd55dee5
.
2021-07-30 16:55:06 +08:00
f1fd55dee5
kasli-soc: work around I2C breakage ( #130 )
2021-05-29 17:13:41 +08:00
21d98711c1
use new smoltcp error code
2021-05-29 17:13:22 +08:00
0ae2138034
kasli-soc: preliminary si5324 support
2021-05-29 16:15:27 +08:00
506c741238
support absence of gateware RTIO clock selection mux
2021-02-15 21:41:30 +08:00
8d4e42be32
remove redpitaya and coraz7 support
2021-02-15 19:30:13 +08:00
fcb38fae6c
runtime: disable TCP delayed ack
2021-02-08 03:24:18 +01:00
bb65074254
updated zynq-rs and IRQ handling
2021-01-28 12:56:54 +08:00
c2a6fb72f7
updated zynq-rs dependency
2021-01-26 12:38:09 +08:00
faa335461d
runtime: modified protocols to use device endian
2021-01-22 13:36:38 +08:00
be01fbd943
runtime/irq: use assembly for naked IRQ handler
...
and solves the bug introduced due to stack unwinding...
2021-01-18 17:08:04 +08:00
9e8b554c6d
runtime/kernel/core1: use correct ABI
2021-01-18 16:43:30 +08:00
b4ff6dda24
runtime: use naked function for IRQ
...
non-naked IRQ would somehow trigger interrupts after several kernel
restarts, investigating
2021-01-18 10:38:50 +08:00
35204d4716
fixed new compiler warnings
2021-01-15 17:55:58 +08:00
28fe61b061
runtime: add feature target_kasli_soc
2020-12-23 20:11:43 +01:00
07b425a67a
fix other compilation warnings
2020-11-16 14:57:20 +08:00
57ae8619f8
remove unnecessary no_mangle
...
no_mangle does nothing on extern items as per https://github.com/rust-lang/rust/issues/78989#issuecomment-726163973
Closes #115
2020-11-16 14:51:30 +08:00
113c8eb0b8
add coraz7 + redpitaya targets
2020-11-13 20:17:18 +01:00
9259cffeb2
i2c: add stubs for targets without i2c
2020-11-12 15:26:06 +01:00
David Nadlinger
7c336f7770
kernel/api: Add additional binary libm functions
...
Also factored out (f64, f64) -> f64 libm wrappers into
a macro, similar to the unary ones.
2020-11-11 01:24:44 +01:00
291a782db0
fix compiler warning
...
Feature is now stable.
2020-11-06 12:22:34 +08:00
7dbffadf08
mgmt: implemented config write
2020-11-04 21:16:47 +08:00
a374d8a02f
runtime/kernel/dma: reduced replay overhead
...
We can just flush the cache once when we get the handle, instead of
everytime before replay.
2020-09-09 21:25:03 +08:00
03d9827a5a
acpki: working
2020-09-09 21:24:49 +08:00
86b9045417
use liconfig, libcoreio, szl from zynq-rs
2020-09-09 18:44:12 +08:00
2fe73505c8
improve i2c error reporting
2020-09-06 00:38:28 +08:00
36d8ffec3b
expose i2c to kernels
2020-09-06 00:11:19 +08:00
5e4bf8bbf7
runtime/comms: Faster RPC alloc
...
We do busy polling for some time before doing await, for small
allocations we could avoid the context switching and reduce the latency.
2020-09-03 16:58:44 +08:00
cdc8ad8aee
runtime/kernel/control: fixed memory leak
2020-09-03 16:51:51 +08:00
805f1d4eff
runtime: increased heap size
2020-09-02 10:15:52 +08:00
ae07c05db4
runtime: optimize for speed and fix deadlock
...
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.
2020-09-02 10:15:52 +08:00
b0706f470d
runtime: set default log level to Info
2020-09-01 17:11:21 +08:00
050b2457a4
runtime/main: removed bitstream loading code
2020-09-01 15:43:54 +08:00
afecc83ecf
libconfig/net_settings: made ipv6 optional feature
...
This is to prepare for szl, which cannot use ipv6 due to memory
limitation.
2020-09-01 14:48:19 +08:00
42f94487cf
split config code into libconfig
2020-09-01 14:48:09 +08:00
d474cf58a5
runtime/rpc: optimizations for list and arrays
...
Requires https://github.com/m-labs/artiq/pull/1510
This is the commit producing the result in the table.
2020-08-26 13:47:41 +08:00
71427f8ec8
runtime/proto_async: simplify functions
...
And the compiler can use its intrinsic for byte rev.
2020-08-26 13:46:51 +08:00
321a8e1522
runtime/kernel/core1: reset rtio after interrupted
2020-08-25 14:51:39 +08:00
0fb278f7cb
runtime/kernel/core1: allows getting backtrace when kernel is not loaded
2020-08-25 14:51:39 +08:00
fa187fb37a
runtime/kernel: use mutable static for shared channel
...
Mutex would prevent restart if we failed while waiting for RPC.
2020-08-25 14:51:39 +08:00
e592efb2b8
enabled L2 cache and optimized ethernet
2020-08-25 14:51:39 +08:00
760f46a115
update dependencies
2020-08-17 19:17:42 +02:00
David Nadlinger
6ccd0cb389
runtime/kernel: Expose libm::atanh
2020-08-09 20:06:09 +01:00
David Nadlinger
63250240d2
runtime/kernel: Expose __powidf2
2020-08-09 19:17:38 +01:00
David Nadlinger
9f898dd2b8
runtime/rpc: Support new TArray layout (ndarrays)
...
This is a port of the respective commit in the main ARTIQ
repository.
2020-08-09 19:17:38 +01:00
3a8a025d5f
update dependencies, zc706 -> zynq-rs
2020-08-06 20:33:23 +08:00
8dabc8e6fd
runtime: remove access to obsolete i_overflow_reset CSR
2020-08-06 20:23:36 +08:00
1eeee43d64
acpki: implement input interface
2020-08-06 18:15:34 +08:00
0354699ae3
runtime/kernel/dma: fixed missing end of buffer marker.
...
The DMA transfer would halt before.
2020-08-06 14:00:20 +08:00
7873565917
runtime: expose libm tan
2020-08-06 11:45:41 +08:00
05e1614313
runtime/kernel: fixed duration bug.
...
Fixes #89 .
2020-08-06 11:12:24 +08:00
323191b9fc
runtime: expose more libm functions
2020-08-06 10:32:20 +08:00
5becf0af0a
runtime/kernel: fixed memory corruption for cache and DMA.
2020-08-06 10:29:31 +08:00
e7752a3d6d
runtime/kernel: fixes core0 memory leak.
...
Fixes #85
2020-08-06 09:39:49 +08:00
de2d7ecf48
typo
2020-08-05 18:52:08 +08:00
c85e85aa6d
runtime/logger: use blocking wait.
...
Fixes #84 using the first solution.
If the performance is considered too slow,
we can do the second option later.
2020-08-05 18:51:27 +08:00
4b6c5d5679
runtime/kernel: store DMA and cache buffer on core0.
...
Closes #77 .
2020-08-05 15:33:40 +08:00
72427dbebb
runtime: cleanup core_log
2020-08-05 00:40:54 +08:00
6d654de3d5
runtime: implement core_log
2020-08-04 23:27:51 +08:00
3092bfc21a
runtime: expose __aeabi_idivmod to kernel
2020-08-04 22:45:28 +08:00
b915176b29
runtime: implement acpki RTIO output
2020-08-04 17:32:43 +08:00
fc21fcc920
runtime/comms: removed sync_channel hack.
...
Fixes #80
2020-08-04 14:40:02 +08:00
6a4d871917
runtime/irq: use spinlock functions instead of asm.
...
Closes #81
2020-08-04 14:40:02 +08:00
8337c9173e
runtime: share rtio_log format function
2020-08-04 13:27:18 +08:00
f8d4036451
add ACP kernel initiator
...
Based on work by Chris Ballance
https://github.com/m-labs/artiq/issues/1167#issuecomment-427188287
M-Labs/artiq-zynq#55
Work-in-progress, only gateware part and build system, untested.
2020-08-04 13:15:26 +08:00
c9bac028bf
dma: call rtio module to get time cursor position
...
More portable across RTIO implementations.
2020-08-04 13:14:00 +08:00
56e7cc822c
runtime/comms: limited concurrent connections to 1 only.
2020-08-04 10:31:03 +08:00
d58a3ef12c
runtime/comms: restart core1 before kernel load.
2020-08-04 10:17:19 +08:00
fa00ab211d
Updated zc706 dependency and fixed compiler errors.
2020-08-04 10:15:57 +08:00
7caee2bf88
improve DMA logging
2020-07-30 22:25:49 +08:00
2e7090a359
remove unused import
2020-07-30 22:07:44 +08:00
b388b529ad
dyld: remove KERNEL_EXIDX_START/END globals, move dl_unwind_find_exidx() into runtime::kernel::core1
...
Gitea issue #16
2020-07-27 19:56:06 +02:00
7f983a453d
implement core device cache
2020-07-25 17:04:40 +08:00
630dcc274e
fix compilation warning with new rustc
2020-07-25 12:15:50 +08:00
e64f59723c
dma: use const initializer for manager
2020-07-25 12:12:56 +08:00
26874030fc
retry RTIO PLL lock
2020-07-25 11:15:33 +08:00
0ce45b145e
kernel: proper type for static shared variables.
...
* Changed the KERNEL_CHANNEL_* to Mutex<T> with proper type, remove the
need for unsafe.
* Exposed a const pointer to KernelImage, with UnsafeCell holding
the library field for unbind with interior mutability.
2020-07-24 12:24:01 +08:00
0310421085
RTIO DMA: Compiled but not working.
...
* Cache flush should be done before playback instead when getting the
handler.
* `csr::rtio_dma::enable_read()` would loop forever, probably bug in the
gateware.
2020-07-23 17:04:15 +08:00
64dad88a32
Kernel exception: fixed top level finally. ( #70 )
...
Fixes #70 .
2020-07-23 14:09:15 +08:00
4846f2891b
use blocking timer api, update microseconds api
2020-07-22 23:58:55 +02:00
9b07468e50
add libm functions from legacy runtime
2020-07-21 22:58:56 +08:00
d11e3fdad8
runtime/mgmt: mgmt.rs consistency
...
Closes #67 .
2020-07-21 13:54:32 +08:00
e0560a2db9
expose libm functions to kernel
2020-07-21 13:50:33 +08:00
21135c6a41
analyzer: report AXI bus errors
2020-07-20 19:51:22 +08:00
0b47ac75f0
comms,mgmt: log connections as soon as they arrive
2020-07-20 19:09:56 +08:00
8c60947291
moninj: better connection logging
2020-07-20 19:07:44 +08:00
4af29e8eca
comms: report error on incorrect connection start pattern
2020-07-20 19:07:12 +08:00
d65e893d1c
more conservative RTIO PLL reset timing
2020-07-20 14:19:13 +08:00
db2a8e7726
implement RTIO log
2020-07-20 14:10:46 +08:00
f5db0e06f4
update dependencies, use new libasync smoltcp recv API
2020-07-19 16:16:39 +08:00
3ec9788eb1
proto_async: always consume one byte in recv
2020-07-19 16:07:55 +08:00
6e75741aa3
analyzer: remove debug print
2020-07-16 18:37:15 +08:00
a9f725dd33
kernel: added error message after uncaught exception
2020-07-16 17:11:35 +08:00
caef2a9f84
runtime/panic: prevent nested panic and added core ID in panic msg.
2020-07-16 17:11:35 +08:00
16158acfa9
analyzer: close connection gracefully
2020-07-16 17:10:24 +08:00
84630d66e3
rpc: added #[repr(C)]
for structs.
2020-07-16 15:48:17 +08:00
4457af7277
rpc: Fixed alignment problem.
...
Fixes issue #42 .
Previously there was no fix for the variable alignment.
We calculate the position of the variable based on the size
of the previous variable, so we could break the alignment requirement
for variables. For example, having a `i64` after `bool` could break
the alignment required for `i64` and trigger DataAbort or data
corruption.
However, this requires the same data layout and LLVM type for the
variables. If this cannot be maintained, this would break the alignment
on the other side of the RPC, either from host to kernel or kernel to
host.
2020-07-16 14:06:39 +08:00
2e10922715
analyzer: implement firmware part
2020-07-16 11:47:55 +08:00
b62fbce826
mgmt: log incoming connection
2020-07-16 11:36:26 +08:00
92405ffe91
logger: changed from RefCell to Mutex.
2020-07-15 17:04:16 +08:00
2568d62865
mgmt: fixed pull log
2020-07-15 16:05:00 +08:00
8e3574080c
core1: added cache flush and barriers.
2020-07-14 10:53:35 +08:00
fa2d71615a
report async RTIO errors
2020-07-13 16:06:05 +08:00