Commit Graph

339 Commits

Author SHA1 Message Date
pca006132 fc21fcc920 runtime/comms: removed sync_channel hack.
Fixes #80
2020-08-04 14:40:02 +08:00
pca006132 6a4d871917 runtime/irq: use spinlock functions instead of asm.
Closes #81
2020-08-04 14:40:02 +08:00
Sebastien Bourdeauducq 8337c9173e runtime: share rtio_log format function 2020-08-04 13:27:18 +08:00
Sebastien Bourdeauducq 1e20259c36 fix acpki selection 2020-08-04 13:26:45 +08:00
Sebastien Bourdeauducq 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
Sebastien Bourdeauducq c9bac028bf dma: call rtio module to get time cursor position
More portable across RTIO implementations.
2020-08-04 13:14:00 +08:00
pca006132 56e7cc822c runtime/comms: limited concurrent connections to 1 only. 2020-08-04 10:31:03 +08:00
pca006132 d58a3ef12c runtime/comms: restart core1 before kernel load. 2020-08-04 10:17:19 +08:00
pca006132 fa00ab211d Updated zc706 dependency and fixed compiler errors. 2020-08-04 10:15:57 +08:00
Sebastien Bourdeauducq 7caee2bf88 improve DMA logging 2020-07-30 22:25:49 +08:00
Sebastien Bourdeauducq 2e7090a359 remove unused import 2020-07-30 22:07:44 +08:00
Astro 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
Astro 641204425e dyld: obtain EXIDX offsets from section headers
Gitea issue #16
2020-07-27 01:58:42 +02:00
Sebastien Bourdeauducq 7f983a453d implement core device cache 2020-07-25 17:04:40 +08:00
Sebastien Bourdeauducq 630dcc274e fix compilation warning with new rustc 2020-07-25 12:15:50 +08:00
Sebastien Bourdeauducq e64f59723c dma: use const initializer for manager 2020-07-25 12:12:56 +08:00
Sebastien Bourdeauducq 26874030fc retry RTIO PLL lock 2020-07-25 11:15:33 +08:00
pca006132 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
pca006132 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
pca006132 64dad88a32 Kernel exception: fixed top level finally. (#70)
Fixes #70.
2020-07-23 14:09:15 +08:00
Astro 4846f2891b use blocking timer api, update microseconds api 2020-07-22 23:58:55 +02:00
Astro 536f50f122 update dependencies 2020-07-22 23:51:09 +02:00
Sebastien Bourdeauducq 9b07468e50 add libm functions from legacy runtime 2020-07-21 22:58:56 +08:00
pca006132 d11e3fdad8 runtime/mgmt: mgmt.rs consistency
Closes #67.
2020-07-21 13:54:32 +08:00
Sebastien Bourdeauducq e0560a2db9 expose libm functions to kernel 2020-07-21 13:50:33 +08:00
Sebastien Bourdeauducq 59cf2764ce dma: report AXI bus error 2020-07-21 12:47:20 +08:00
Sebastien Bourdeauducq 21135c6a41 analyzer: report AXI bus errors 2020-07-20 19:51:22 +08:00
Sebastien Bourdeauducq 9a8f8e2d7b szl: add startup banner 2020-07-20 19:51:09 +08:00
Sebastien Bourdeauducq 0b47ac75f0 comms,mgmt: log connections as soon as they arrive 2020-07-20 19:09:56 +08:00
Sebastien Bourdeauducq 8c60947291 moninj: better connection logging 2020-07-20 19:07:44 +08:00
Sebastien Bourdeauducq 4af29e8eca comms: report error on incorrect connection start pattern 2020-07-20 19:07:12 +08:00
Sebastien Bourdeauducq d65e893d1c more conservative RTIO PLL reset timing 2020-07-20 14:19:13 +08:00
Sebastien Bourdeauducq db2a8e7726 implement RTIO log 2020-07-20 14:10:46 +08:00
Sebastien Bourdeauducq f5db0e06f4 update dependencies, use new libasync smoltcp recv API 2020-07-19 16:16:39 +08:00
Sebastien Bourdeauducq 3ec9788eb1 proto_async: always consume one byte in recv 2020-07-19 16:07:55 +08:00
Sebastien Bourdeauducq 523524c319 zc706: add RTIO log channels 2020-07-19 14:05:35 +08:00
Sebastien Bourdeauducq 6e75741aa3 analyzer: remove debug print 2020-07-16 18:37:15 +08:00
Sebastien Bourdeauducq f69e41af5e gateware: fix VADJ I/O standard conflict 2020-07-16 17:58:31 +08:00
Sebastien Bourdeauducq 6a361893c2 gateware: make LEDs common to all variants
Makes quick testing easier.
2020-07-16 17:36:27 +08:00
Sebastien Bourdeauducq ae7ca22db9 dma: fix endianness issues 2020-07-16 17:27:08 +08:00
pca006132 a9f725dd33 kernel: added error message after uncaught exception 2020-07-16 17:11:35 +08:00
pca006132 caef2a9f84 runtime/panic: prevent nested panic and added core ID in panic msg. 2020-07-16 17:11:35 +08:00
Sebastien Bourdeauducq 16158acfa9 analyzer: close connection gracefully 2020-07-16 17:10:24 +08:00
Sebastien Bourdeauducq 10a12245a3 analyzer: fix endianness issue 2020-07-16 17:10:09 +08:00
pca006132 84630d66e3 rpc: added `#[repr(C)]` for structs. 2020-07-16 15:48:17 +08:00
pca006132 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
Sebastien Bourdeauducq 2e10922715 analyzer: implement firmware part 2020-07-16 11:47:55 +08:00
Sebastien Bourdeauducq b62fbce826 mgmt: log incoming connection 2020-07-16 11:36:26 +08:00
Sebastien Bourdeauducq 0c6db0d12c analyzer: use 32-bit byte_count 2020-07-16 11:36:04 +08:00
Sebastien Bourdeauducq 36338ea3b2 Makefile: fix pl.rs dependencies 2020-07-16 11:35:40 +08:00
Sebastien Bourdeauducq 0b0ca8de49 analyzer: drive wid and wstrb 2020-07-15 23:11:19 +08:00
Sebastien Bourdeauducq 8e758ecc17 add RTIO analyzer core (untested) 2020-07-15 23:06:34 +08:00
Sebastien Bourdeauducq b68cb137e5 dma: style 2020-07-15 23:06:14 +08:00
pca006132 92405ffe91 logger: changed from RefCell to Mutex. 2020-07-15 17:04:16 +08:00
pca006132 2568d62865 mgmt: fixed pull log 2020-07-15 16:05:00 +08:00
pca006132 5149d37be9 szl: added cache flush and memory barriers.
Resolves #50.
2020-07-14 17:02:42 +08:00
pca006132 8e3574080c core1: added cache flush and barriers. 2020-07-14 10:53:35 +08:00
Astro 49d93e20dd dyld: add Image.rebind() 2020-07-14 01:31:54 +02:00
Sebastien Bourdeauducq 12ba867268 dma: fix and cleanup test 2020-07-13 18:58:08 +08:00
Sebastien Bourdeauducq 5c3c3c26b5 dma: fix inflight_cnt and eop generation 2020-07-13 18:51:55 +08:00
Sebastien Bourdeauducq fa2d71615a report async RTIO errors 2020-07-13 16:06:05 +08:00
Sebastien Bourdeauducq b42ab0634b complete RTIO exceptions 2020-07-13 15:47:34 +08:00
pca006132 62f39e2c08 mgmt: Implemented network log access. 2020-07-13 15:15:06 +08:00
pca006132 855b26aa19 Logger: ported log_buffer. 2020-07-13 14:59:56 +08:00
Sebastien Bourdeauducq ea96cf96d3 dma: add simulation test (WIP) 2020-07-13 12:04:10 +08:00
Sebastien Bourdeauducq 10888cc6c6 dma: remove unneeded import 2020-07-13 10:42:02 +08:00
Sebastien Bourdeauducq a7073edf79 add DMA core (untested) 2020-07-13 10:37:17 +08:00
Sebastien Bourdeauducq e3ff21b1b5 create gateware folder 2020-07-11 17:49:54 +08:00
pca006132 7aec419ed6 kernel: added core1 instruction cache flush 2020-07-10 17:21:55 +08:00
pca006132 68d27ca2ee comms: removed core1 restart 2020-07-10 17:21:55 +08:00
Sebastien Bourdeauducq 407e18a6a0 fix typos 2020-07-10 16:36:45 +08:00
pca006132 2d58193930 Panic: single line backtrace for addr2line. 2020-07-10 12:26:28 +08:00
Sebastien Bourdeauducq c935e450df makefile: automate runtime dependencies 2020-07-09 09:41:45 +08:00
Sebastien Bourdeauducq 656e768f06 makefile: update dependencies 2020-07-09 09:31:36 +08:00
Astro 2c1773b91b kernel: refactor main_core1 into KernelImage 2020-07-08 23:49:43 +02:00
Astro b3d4590eec kernel: split into {api,control,core1,rpc} 2020-07-08 23:49:32 +02:00
Sebastien Bourdeauducq 68045ce0c5 mark RTIO clock as asychronous to system clock 2020-07-08 20:37:53 +08:00
Sebastien Bourdeauducq 7ee67db8e3 use IOSERDES TTL 2020-07-08 20:02:46 +08:00
Sebastien Bourdeauducq bd7d58e239 add RTIO PLL and clock source selection 2020-07-08 19:58:13 +08:00
Sebastien Bourdeauducq 6454315cd2 config: refactor and share 2020-07-08 19:24:26 +08:00
pca006132 e263814546 Kernel: Added startup kernel 2020-07-08 15:54:50 +08:00
Sebastien Bourdeauducq a8de572014 set up PL clocks 2020-07-07 19:40:32 +08:00
Sebastien Bourdeauducq b13da96835 increase CSR bus width to 32 bits
Before:
Minimum interval for sustained TTL output switching ... 1.554e-06

After:
Minimum interval for sustained TTL output switching ... 5.17e-07
2020-07-07 17:22:07 +08:00
Sebastien Bourdeauducq 7bfe882710 eh_artiq: reduce verbosity 2020-07-07 17:21:28 +08:00
pca006132 c071507ff8 RTIO: implemented exceptions 2020-07-07 16:26:33 +08:00
pca006132 f1750cf8cd Kernel: Fixed use-after-free 2020-07-07 15:51:12 +08:00
pca006132 0f797284e2 SdReader: fixed write cache bug. 2020-07-07 14:02:13 +08:00
Sebastien Bourdeauducq e6cf3e90d3 update zc706 2020-07-07 12:50:05 +08:00
Sebastien Bourdeauducq 0119022b2c remove compiler warning 2020-07-06 21:55:30 +08:00
Sebastien Bourdeauducq de2c2af523 use new exception vectors 2020-07-06 21:16:32 +08:00
Sebastien Bourdeauducq 8c0b7cdcf2 runtime: adjust stack and heap sizes 2020-07-06 20:48:22 +08:00
Sebastien Bourdeauducq 7661b2a288 remove unused import 2020-07-06 20:41:24 +08:00
pca006132 c59772dca3 Exception handling: Implemented RPC exception. 2020-07-06 15:34:49 +08:00
Sebastien Bourdeauducq f895773535 runtime: do not use slcr soft_reset in panic 2020-07-06 13:07:52 +08:00
Sebastien Bourdeauducq 33d12801b7 runtime: use network addresses from config 2020-07-06 12:59:51 +08:00
Sebastien Bourdeauducq bbc1ffec8e szl: disable ps7_init 2020-07-06 12:31:13 +08:00
Sebastien Bourdeauducq bbe6812792 add network address config code 2020-07-06 12:04:22 +08:00
Sebastien Bourdeauducq e207c073ee config: remove unnecessary mut 2020-07-06 12:04:22 +08:00
Sebastien Bourdeauducq 0c1de42547 use simplified ps7_init 2020-07-06 00:54:44 +08:00
Sebastien Bourdeauducq 3bd4643009 use fpu_enable from zc706 2020-07-06 00:18:28 +08:00
Sebastien Bourdeauducq de8da59e56 adjust logging levels 2020-07-05 23:46:23 +08:00
Sebastien Bourdeauducq 60d42b1aaa remove duplicated write_chunk function 2020-07-05 17:13:14 +08:00
pca006132 e65d4e0e84 Kernel: implemented KernelException 2020-07-03 17:21:42 +08:00
pca006132 f3c3bd7384 Backtrace: panic handler with proper backtrace. 2020-07-02 13:12:12 +08:00
pca006132 3f2024e4e0 runtime: Updated dependency to disable default panic handler 2020-07-02 13:08:18 +08:00
pca006132 57da6f05fd szl: enabled FPU 2020-07-02 13:06:36 +08:00
pca006132 214337387f cc: fixed error and compiled unlzma using cc 2020-07-02 11:41:58 +08:00
Sebastien Bourdeauducq b0aa77c73f fix compilation warning 2020-07-02 10:34:43 +08:00
Sebastien Bourdeauducq bdcae0db64 fix permissions 2020-07-02 10:28:40 +08:00
pca006132 24bd541dfd Exception handling: added dependencies to makefile 2020-07-02 10:13:47 +08:00
pca006132 eb750eb1f0 Exception handling: patched exception handling for ARTIQ. 2020-07-02 10:13:42 +08:00
pca006132 26ac3194d1 Exception handling: copied eh_artiq from current artiq firmware. 2020-07-02 10:08:16 +08:00
pca006132 0a35f68562 Added libpanic_unwind/dwarf from rustc as libdwarf. 2020-07-02 09:51:47 +08:00
pca006132 6be44c3483 Libunwind: build libunwind with rust bindings 2020-07-02 09:51:44 +08:00
pca006132 9282dcffdb Dyld: provides unwind section for libunwind 2020-07-02 09:50:53 +08:00
pca006132 d915211264 Libunwind: patched phase1 end of stack detection. 2020-07-02 09:50:53 +08:00
pca006132 f82ffe8cf2 Libunwind: use dyld instead of static linker symbols for unwind section. 2020-06-30 17:12:02 +08:00
pca006132 b21cccb4d2 Libunwind: added system header 2020-06-30 17:10:45 +08:00
pca006132 fd229a1b26 Copied LLVM Libunwind from commit 3e6ec2a 2020-06-30 16:52:49 +08:00
pca006132 29dd311c0f Runtime config: fixed warning 2020-06-29 10:05:15 +08:00
Sebastien Bourdeauducq 8d1b9f7f23 dyld: fix compilation warning 2020-06-28 18:15:48 +08:00
Astro 53d931dccc szl: invoke ps7_init::apply() at start 2020-06-27 02:36:36 +02:00
Astro d8745074b4 update dependencies 2020-06-27 02:29:45 +02:00
Sebastien Bourdeauducq a71ee143ac update dependencies 2020-06-25 20:21:44 +08:00
Sebastien Bourdeauducq 507edb5a78 make config demo errors non-fatal 2020-06-25 11:27:50 +08:00
Astro 654d65a6d5 dyld: keep exidx p_vaddr as it is contained in LOAD sections already
should fix Gitea issue #17
2020-06-25 02:03:29 +02:00
Astro 571ab66114 dyld: keep EXIDX section data through program header entry 2020-06-24 00:18:34 +02:00
Astro 64cdf0ade3 sd_reader: use const for magic numbers 2020-06-18 23:56:32 +02:00
Astro d9bd42389f kernel: flush now write-buffered dcache of image before execution 2020-06-18 20:14:02 +02:00
Astro 06ad8dfe27 szl: flush now write-buffered dcache of DDR pages before executing instructions in them 2020-06-18 18:33:47 +02:00
Astro f750234cb5 update dependencies 2020-06-18 18:33:32 +02:00
Sebastien Bourdeauducq 24853ab090 szl: move bss and stack to OCM3 to save space 2020-06-18 17:28:34 +08:00
pca006132 6608c16f46 Config: Renamed ConfigNotFound into KeyNotFoundError. 2020-06-18 12:05:24 +08:00
pca006132 f43ad05be5 Testing for config. 2020-06-18 11:33:52 +08:00
pca006132 a55a6291a4 SD reader: optimized stack and binary size 2020-06-18 11:33:18 +08:00
pca006132 2b1b0dc49f Load PL: simplify logic by using fatfs find_file directly. 2020-06-18 11:32:23 +08:00
pca006132 228c0c813d SD reader: changed from &mut to owning. 2020-06-18 11:31:46 +08:00
pca006132 f7bb339275 Config: implemented config struct. 2020-06-18 11:29:33 +08:00
Sebastien Bourdeauducq e43511c95f update dependencies 2020-06-16 18:08:12 +08:00
pca006132 0dc0bb391d
add support for loading bitstream from bootimage. 2020-06-16 17:45:54 +08:00
Sebastien Bourdeauducq f9ccf908dd update dependencies 2020-06-15 17:14:03 +08:00
pca006132 e4b17f9473 Fixed incorrect byte_addr after multiple block read... 2020-06-15 15:12:22 +08:00
Sebastien Bourdeauducq da6bda9a06 add config skeleton 2020-06-13 16:44:54 +08:00
Sebastien Bourdeauducq f52f10abc2 remove unnecessary dereferencing 2020-06-13 16:43:32 +08:00
pca006132 1138db34a2 add SD card FAT filesystem interface 2020-06-13 15:33:28 +08:00
Sebastien Bourdeauducq e77cb5de7e fix comment in previous commit 2020-06-13 15:27:51 +08:00
Astro e6b8bf5481 provide many move __aeabi_* calls 2020-06-11 22:49:52 +02:00
Sebastien Bourdeauducq dc78868109 update dependencies and add fatfs 2020-06-11 17:36:23 +08:00
Sebastien Bourdeauducq 81b8fc8916 implement attribute writeback 2020-06-10 17:01:17 +08:00
Sebastien Bourdeauducq bc81fa2e48 handle recursive RPC return values 2020-06-09 13:03:08 +08:00
Sebastien Bourdeauducq 7387e42306 provide __aeabi_l2d 2020-06-09 12:57:13 +08:00
Sebastien Bourdeauducq b16ec2c6a8 provide mockups for all exception functions 2020-06-09 12:56:58 +08:00
Sebastien Bourdeauducq 12c2d658f3 tune heap/stack sizes 2020-06-09 12:56:18 +08:00
Sebastien Bourdeauducq 4d03ecc187 decode RPC exception 2020-06-08 18:32:44 +08:00
Sebastien Bourdeauducq bdf0831eb2 style 2020-06-08 18:16:38 +08:00
Sebastien Bourdeauducq c980b3e634 dyld: reduce verbosity 2020-06-08 17:57:13 +08:00
Sebastien Bourdeauducq b1161a0f71 process RPC replies (WIP) 2020-06-08 13:11:09 +08:00
Sebastien Bourdeauducq 06915ec25d rpc: make alloc async 2020-06-07 21:47:36 +08:00
Sebastien Bourdeauducq 7df6ab2149 rpc: use async-recursion 2020-06-07 21:30:33 +08:00
Sebastien Bourdeauducq f0588c49ed rpc: make receive async 2020-06-07 20:24:41 +08:00
Sebastien Bourdeauducq ef4bdbb668 rpc: enable logging 2020-06-07 20:23:43 +08:00
Sebastien Bourdeauducq 4b8bbdc3dc send RPC requests to host 2020-06-07 15:13:20 +08:00
Sebastien Bourdeauducq 1f23a1b86c enable FPU on Core1 2020-06-07 15:12:34 +08:00
Sebastien Bourdeauducq ed21457f28 replace libio with core_io
* based on https://github.com/jethrogb/rust-core_io but could not get the packaging scripts to work
  and the repos is unmaintained anyway, so just copied the result
* more features and more up-to-date
* compatible with the fatfs crate
2020-06-05 17:14:36 +08:00
Sebastien Bourdeauducq a915ed172a send RPC requests to comms CPU, handle kernel termination 2020-06-05 11:48:34 +08:00
Sebastien Bourdeauducq 8e68e65ca7 remove dead code 2020-06-05 11:47:36 +08:00
Sebastien Bourdeauducq d65df2f454 rpc: revert to libio
* Recursive async fns in Rust are a mess and not usable.
* When doing ARTIQ async RPCs, it is simpler to encode the buffer on the kernel CPU and pass that to the comms CPU,
  instead of tracking when kernel CPU memory with the RPC values can be freed.
2020-06-03 11:17:49 +08:00
Sebastien Bourdeauducq 9c0cf7e84c remove unneeded import 2020-06-03 11:17:37 +08:00
Sebastien Bourdeauducq 6454f994af add libio from ARTIQ 2020-06-03 11:17:28 +08:00
Sebastien Bourdeauducq cb24b82e68 rpc: strings 2020-06-01 18:21:04 +08:00
Sebastien Bourdeauducq 7aa9a95c21 add RPC protocol module (WIP) 2020-06-01 18:02:21 +08:00
Sebastien Bourdeauducq 15b2b253cf build for NIST variants 2020-05-14 15:30:50 +08:00
Sebastien Bourdeauducq af08b1ad00 update dependencies 2020-05-14 09:28:16 +08:00
Sebastien Bourdeauducq 1222db56e1 use different user_led to avoid VADJ problems with NIST backplanes 2020-05-14 09:23:43 +08:00
Sebastien Bourdeauducq aeefdc862d update dependencies 2020-05-09 13:48:27 +08:00
Sebastien Bourdeauducq 7c6f57540e prevent cargo xbuild from creating sysroot in source tree. Closes #6 2020-05-09 13:21:55 +08:00
Sebastien Bourdeauducq b2fe33f6ea zc706: add support for NIST backplanes 2020-05-07 17:05:00 +08:00
Sebastien Bourdeauducq 4464b85ab3 move build artifacts out of tree 2020-05-07 13:52:40 +08:00
Sebastien Bourdeauducq 743b0e198d cargo: remove outdated runner entry 2020-05-07 13:50:21 +08:00
Sebastien Bourdeauducq 47261a1d84 update comment/message 2020-05-07 12:43:53 +08:00
Astro d08f4552ab libdyld: fix pltrel_sz, remove debug output 2020-05-07 01:44:26 +02:00
Sebastien Bourdeauducq 90faeb6fa2 use new core1 startup mechanism 2020-05-06 22:16:34 +08:00
Sebastien Bourdeauducq 198985cd6d runtime: check PL DONE 2020-05-04 22:27:15 +08:00
Sebastien Bourdeauducq 07efdc6799 szl: cleanup 2020-05-04 22:17:59 +08:00
Sebastien Bourdeauducq cbd591b86b update dependencies 2020-05-03 09:59:24 +08:00
Sebastien Bourdeauducq b7695d9313 typo 2020-05-02 11:50:29 +08:00
Sebastien Bourdeauducq bca2b3fe50 comms: add comment about closed connection handling 2020-05-02 11:44:10 +08:00
Sebastien Bourdeauducq 90a19f9986 Merge branch 'master' of git.m-labs.hk:M-Labs/artiq-zynq 2020-05-01 10:08:17 +08:00
Sebastien Bourdeauducq 2439ba1f88 add impure incremental build process, document 2020-05-01 10:07:38 +08:00