Commit Graph

73 Commits

Author SHA1 Message Date
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