Sebastien Bourdeauducq
d38755feff
drtio: implement destination state checks on operations
2018-09-15 15:55:45 +08:00
Sebastien Bourdeauducq
95432a4ac1
drtio: remove old debugging features
2018-09-12 13:01:27 +08:00
whitequark
38d60100ff
firmware: optimize dma_record_output.
...
This removes a number of bounds checks and adds a fast path for
outputting exactly one word to DMA, which is the most common
operation.
2018-08-12 19:17:45 +00:00
whitequark
2648b1b7a1
firmware: migrate to Rust 1.28.0.
...
This also updates / is a prerequisite for updating smoltcp.
Rationale for changes made:
* compiler_builtins is now shipped in the rust prefix.
* rustc's libpanic_unwind no longer works for us because it
has a hard dependency on Box (and it's a horrible hack);
fortunately, we only ever needed a personality function
from it.
* panic and oom handlers are now set in a completely different
way.
* allocators are quite different (and finally stable).
* NLL caused internal compiler errors in runtime, so code using
NLL was rewritten to not rely on it and it was turned off.
2018-08-12 19:17:45 +00:00
whitequark
a74958f01f
ksupport: raise RuntimeError on reraise with no inflight exception.
...
Fixes #1123 .
2018-08-07 05:53:13 +00:00
whitequark
b6dd9c8bb0
runtime: support builds without RTIO DMA.
...
Fixes #1079 .
2018-06-23 00:56:21 +00:00
whitequark
31c6c79204
firmware: implement an edge profiler.
...
It doesn't work extremely well, and the results can be somewhat
confusing, and it needs a libunwind patch, but it's the best I could
do and it seems still useful.
2018-05-16 21:53:53 +00:00
whitequark
b54926134c
firmware: update the signature of #[lang="panic_fmt"].
2018-05-15 15:05:19 +00:00
whitequark
514eab3d39
Update Rust to 1.26.0.
2018-05-15 12:47:51 +00:00
whitequark
140ca729aa
firmware: rename io::Error::{UnexpectedEof→UnexpectedEnd}.
...
We don't even have files.
2018-05-15 08:27:45 +00:00
whitequark
ce0593315b
firmware: move {ProtoRead,ProtoWrite} to the root of libio.
2018-05-15 08:16:09 +00:00
whitequark
ae50196186
firmware: rename libproto to libproto_artiq.
...
libproto_artiq only has ARTIQ-specific protocols.
2018-05-14 18:09:44 +00:00
whitequark
02b8426f60
firmware: rename libboard to libboard_misoc.
...
By analogy with libbuild_misoc. Hopefully one day it actually gets
moved to misoc...
2018-05-14 18:09:44 +00:00
whitequark
1ff42683d9
firmware: merge libamp into libboard_artiq.
...
All gateware interfaces live in libboard_artiq, but libamp predates
libboard_artiq.
2018-05-14 17:33:25 +00:00
whitequark
6a10d54432
firmware: migrate rpc_proto to new libio.
...
This closes an old and horrible issue in that some code in ksupport
may implicitly try to allocate and we'll never know until it crashes
at runtime inside liballoc_stub.
This also removes liballoc_stub.
This also removes ReadExt and WriteExt from libproto.
Hooray!
2018-05-14 17:26:59 +00:00
whitequark
623614f835
Update LLVM to 6.0.0 and Rust to 1.25.0.
2018-05-01 08:57:37 +00:00
Sebastien Bourdeauducq
432e61bbb4
drtio: add kernel API to check for link status. Closes #941
2018-03-05 00:23:55 +08:00
Sebastien Bourdeauducq
928d5dc9b3
drtio: raise RTIOLinkError if operation fails due to link lost ( #942 )
2018-03-04 01:02:53 +08:00
Sebastien Bourdeauducq
ba74013e3e
runtime: add a missing overflow flag reset
2018-03-03 13:16:21 +08:00
Robert Jördens
a7720d05cd
firmware, sayma: port converter_spi to spi2
...
* ksupport/nrt_bus
* port ad9154, hmc830, hmc7043
* port local_spi and drtio_spi
* port kernel_proto libdrtioaux, satman
* change sayma_rtm gateware over
* add spi2 NRTSPIMaster
* remove spi NRTSPIMaster
* change sayma device_db
* change HMC830 to open mode and explicitly sequence open mode
2018-03-01 11:19:18 +01:00
Sebastien Bourdeauducq
94d51d1364
firmware: fix drtio_dbg module syntax
2018-01-10 12:15:23 +08:00
Sebastien Bourdeauducq
dc593ec0f0
Merge branch 'rtio-sed' into sed-merge
2018-01-10 12:04:54 +08:00
whitequark
b8f3d28bc0
firmware: update compiler_builtins dependency and move it to libboard.
...
This is so that we only specify it once.
2017-12-31 09:16:11 +00:00
whitequark
b9754e7108
firmware: deduplicate libbuild_misoc and libbuild_artiq.
2017-12-28 13:18:51 +00:00
whitequark
7687a34285
firmware: remove dependency on compiler-rt.
2017-12-28 04:08:29 +00:00
whitequark
4dfe71676e
firmware: remove dependency on libbase.
2017-12-28 04:03:27 +00:00
whitequark
68f128944a
firmware: clean up makefiles.
2017-12-27 23:10:47 +00:00
whitequark
230f2e5e18
runtime: print (address-only) backtraces on core device panics.
2017-12-25 18:32:41 +00:00
whitequark
3eec15c01d
firmware: fix compatibility with newer rustc. NFC.
2017-12-25 17:16:05 +00:00
whitequark
2404a0d8c8
runtime: allow #[cfg(not(has_rtio))] builds.
2017-11-03 15:49:30 +00:00
Sebastien Bourdeauducq
0d8bad5128
runtime: fix rtio::log
2017-11-03 09:25:37 +08:00
Sebastien Bourdeauducq
4387b0be1e
clean up rtio_log
2017-11-03 00:52:53 +08:00
whitequark
2684aec4c6
firmware: use read_unaligned instead of a hack. NFC.
2017-10-02 03:38:31 +00:00
whitequark
73c76ebb9a
firmware: eliminate most transmutes and document the rest. NFC.
2017-10-02 03:09:46 +00:00
Sebastien Bourdeauducq
5437f0e3e3
rtio: make sequence errors consistently asychronous
2017-09-29 14:40:06 +08:00
whitequark
7799413a41
firmware: update Rust from 1.18.0 to 1.20.0.
2017-09-24 22:51:44 +00:00
Sebastien Bourdeauducq
20d79c930c
drtio: use SED and input collector
2017-09-24 12:23:47 +08:00
Sebastien Bourdeauducq
928cffb09b
firmware: export floor() in ksupport. Closes #828
2017-09-10 12:07:06 +08:00
Sebastien Bourdeauducq
264d5fde83
runtime: fix Rust types in RTIO
...
Previous code assumed all RTIO registers were u32, but this was changed
by misoc c5edcd08.
2017-09-06 19:21:39 +08:00
Sebastien Bourdeauducq
9045b4cc19
drtio: initial firmware support for multi-link
2017-07-18 00:40:21 +08:00
Sebastien Bourdeauducq
c86029bca2
i2c: expose restart as syscall, add structure for I2C-over-DRTIO
2017-06-19 23:44:51 +08:00
Sebastien Bourdeauducq
5d63489080
i2c,spi: add busno error detection
2017-06-19 14:27:30 +08:00
Sebastien Bourdeauducq
8399f8893d
add kernel access to non-realtime SPI buses ( #740 )
2017-06-18 12:45:07 +08:00
Robert Jördens
2a76034fbc
cri: add note about clearing of o_data
2017-06-16 19:06:00 +02:00
whitequark
d0e92067c3
ksupport: fix UB.
2017-06-09 06:18:20 +00:00
Sebastien Bourdeauducq
fe05aede78
firmware: DmaPlayback → DMARetrieve
2017-04-19 11:11:42 +08:00
Sebastien Bourdeauducq
e8f7f8ef9c
DMA: speed up playback
...
Time reduced from 1.53µs to 1.37µs.
2017-04-19 10:59:12 +08:00
whitequark
41c4de4556
DMA: add API for a much faster replay using handles.
2017-04-18 08:20:12 +00:00
whitequark
0531dc45c3
DMA: erase trace before re-recording it.
...
Or we could needlessly OOM replacing a large trace.
2017-04-15 07:48:02 +00:00
whitequark
9dfe9c1248
DMA: improve recording performance.
...
This commit moves DMA serialization code to the kernel CPU
(to cope with the existence of rtio_output_wide) and batches
the resulting sequences. This results in less data being transferred
between kernel and comms CPUs (24 octets with one pointer before,
18 octets with no pointers now, for the common case of rtio_output),
but most importantly reduces cache flushes, which now happen
once per 64k octets.
On average, it now takes about 15us to record a single RTIO event
in a DMA trace.
Fixes #712 .
2017-04-15 07:29:52 +00:00