Commit Graph

660 Commits

Author SHA1 Message Date
Florent Kermarrec 9de08f85c6 firmware/ad9154: reduce verbosity of dac_sysref_cfg 2018-05-09 10:57:00 +02:00
whitequark c646409dbe firmware: fix order of bits clocked into hmc542.
Fixes #993.
2018-05-05 03:12:25 +00:00
whitequark fd2b8d5f8f firmware: raise hmc542 log level to INFO. 2018-05-05 02:59:49 +00:00
whitequark 9704fb837f firmware: fix warnings in ad9154 driver. 2018-05-05 01:55:42 +00:00
whitequark 8a70c18d1e firmware: add debug output to hmc542 driver. 2018-05-05 01:53:30 +00:00
whitequark 68ef09ed73 firmware: stop profiler before rebooting too. 2018-05-05 01:52:44 +00:00
whitequark 4f29d9134f firmware: update log_buffer.
Fixes #986.
2018-05-05 01:18:59 +00:00
whitequark b1d349cc1b firmware: implement a sampling profiler.
Does not yet support constructing call graphs.
2018-05-05 00:44:40 +00:00
whitequark 9857dfcd7d firmware: add irq::Exception to libboard. 2018-05-04 18:41:03 +00:00
whitequark 623614f835 Update LLVM to 6.0.0 and Rust to 1.25.0. 2018-05-01 08:57:37 +00:00
Florent Kermarrec 4e2d9abaf7 firmware/ad9154: combine analog and digital delay of hmc7043 for sysref scan 2018-04-27 14:32:03 +02:00
Florent Kermarrec 3802c7badb firmware/ad9154: add sysref scan/conf for jesd sc1 2018-04-27 13:20:20 +02:00
whitequark 3b054855ec firmware: add allocator debug feature, invoked by artiq_coredebug frontend. 2018-04-21 19:39:46 +00:00
whitequark 873324d52b firmware: don't truncate queued RPCs (fixes #985). 2018-04-21 19:39:46 +00:00
whitequark 0d5fd1e83d runtime: fix race condition in log extraction code paths (#979).
The core device used to panic if certain combinations of borrows
of the log buffer happened. Now they all use .try_borrow_mut().
2018-04-20 15:26:00 +00:00
Florent Kermarrec fe689ab4f2 firmware/serwb: add link test, use info! instead of debug! for link settings (useful to analyze logs from others boards) 2018-04-17 19:24:22 +02:00
Sebastien Bourdeauducq 416232cb64 runtime: do not reset RTIO PHY on core.reset(). Closes #971 2018-03-28 10:51:07 +08:00
Sebastien Bourdeauducq f2cc2a5ff2 firmware: reset local RTIO PHYs on startup (#958) 2018-03-22 16:29:31 +08:00
Robert Jördens f4719ae24b sdram: clean up console output 2018-03-20 15:42:49 +01:00
Robert Jördens 206664afd9 sdram: compact read_level output 2018-03-20 10:16:05 +00:00
Robert Jördens 495625b99d bootloader: repeat memory test 4 times 2018-03-20 09:57:49 +00:00
Robert Jördens 6fb0cbfcd3 sdram: clean up, make read_level robust to wrap around
* fix a few rust warnings
* also do eye scans on kintex
2018-03-20 09:57:49 +00:00
Robert Jördens 3abb378fbe i2c: unused variable 2018-03-20 09:56:26 +00:00
Robert Jördens 276b0c7f06 sdram: reject read delay wrap arounds 2018-03-20 00:28:41 +01:00
Robert Jördens 4b3f408143 sdram: simplify read level scan 2018-03-19 18:41:56 +00:00
Robert Jördens 845784c180 kusddrphy: use first and last tap that yield many valid reads 2018-03-19 17:54:26 +00:00
Robert Jördens ed2e0c8b34 sayma/sdram/scan: test each tap 1024 times 2018-03-20 00:59:31 +08:00
whitequark c86df8e13e firmware: try to unstuck the I2C bus if it gets stuck.
Fixes #957.
2018-03-19 06:23:23 +00:00
whitequark 9ea7d7a804 firmware: allow building without system UART. 2018-03-14 18:34:31 +00:00
Sebastien Bourdeauducq 999ec40e79 bootloader: print gateware ident 2018-03-13 00:11:25 +08:00
Sebastien Bourdeauducq 2caeea6f25 update copyright year 2018-03-13 00:09:13 +08:00
Sebastien Bourdeauducq 1d081ed6c2 drtio: print diagnostic info on satellite write underflow (#947) 2018-03-12 23:41:19 +08:00
Florent Kermarrec 5af4609053 libboard/sdram: limit write leveling scan to "512 - initial dqs taps delay" on ultrascale 2018-03-09 19:06:47 +01:00
Florent Kermarrec a95cd423cc libboard/sdram: add gap for write leveling 2018-03-09 18:53:57 +01:00
Florent Kermarrec 8f6f83029c libboard/sdram: add write/read leveling scan 2018-03-09 13:50:51 +01:00
Florent Kermarrec b0b13be23b libboard/sdram: rename read_delays to read_leveling 2018-03-09 09:23:20 +01:00
Florent Kermarrec 8475c21c46 firmware/libboard/sdram: kusddrphy now use time mode for odelaye3/idelaye3, now reloading dqs delay_value (500ps) with software 2018-03-08 10:00:00 +01:00
Sebastien Bourdeauducq 0adbbd8ede drtio: reset aux packet gateware after locking to recovered clock
Closes #949
2018-03-08 15:41:13 +08:00
Robert Jördens 7afb23e8be runtime: demote dropped and malformed packets msgs to debug 2018-03-07 14:28:21 +01:00
Sebastien Bourdeauducq 916197c4d7 siphaser: cleanup 2018-03-07 11:15:44 +08:00
Sebastien Bourdeauducq 74d1df3ff0 firmware: implement si5324 skew calibration 2018-03-07 10:57:30 +08:00
Sebastien Bourdeauducq e6e5236ce2 firmware: fix si5324 select_recovered_clock 2018-03-07 10:57:30 +08:00
Sebastien Bourdeauducq c2d2cc2d72 runtime: fix setup_si5324_as_synthesizer 2018-03-07 10:57:30 +08:00
Sebastien Bourdeauducq c34d00cbc9 drtio: implement Si5324 phaser gateware and partial firmware support 2018-03-07 10:57:30 +08:00
Robert Jördens 257bef0d21 slave_fpga: print more info 2018-03-06 14:26:26 +01:00
Sebastien Bourdeauducq a274af77d5 runtime: fix compilation without DRTIO 2018-03-05 00:43:42 +08: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 1c57d27ae2 slave_fpga: use sayma_rtm magic 2018-03-01 18:32:19 +01:00
Robert Jördens de63e657b8 kasli/si5324: lock to 100 MHz with highest available bandwidth 2018-03-01 14:49:53 +01:00
Robert Jördens abd160d143 slave_fpga: check DONE before loading 2018-03-01 19:53:34 +08:00
Robert Jördens a04a36ee36 firmware: move wait for write completion to read() 2018-03-01 11:37:33 +01:00
Robert Jördens a6ae08d8b8 firmware/spi: work around cs_polarity semantics
The semantics differ between the RTIO and CSR interface.
2018-03-01 11:19:18 +01:00
Robert Jördens 6fbe0d8ed8 hmc830: be explicit about SPI mode selection 2018-03-01 11:19:18 +01: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
Robert Jördens 68278e225d slave_fpga: check for INIT low 2018-03-01 17:28:01 +08:00
whitequark 14f6fa6699 firmware: fix a warning. 2018-03-01 01:25:55 +00:00
whitequark d051cec0dd firmware: remove useless module. 2018-03-01 01:22:52 +00:00
Robert Jördens 0c49201be7 firmware: add slave fpga serial load support
based on whitequark's work in f95fb27

m-labs/artiq#813
2018-02-28 19:27:52 +01:00
Robert Jördens cedecc3030 Revert "firmware: Sayma RTM FPGA bitstream loading prototype (#813)."
This reverts commit f95fb273f1.

Will be replaced with a bitbang/GPIO based version.
2018-02-28 18:43:56 +01:00
whitequark f95fb273f1 firmware: Sayma RTM FPGA bitstream loading prototype (#813). 2018-02-28 16:46:23 +00:00
Sebastien Bourdeauducq 96423882f2 fix 4d6619f3b 2018-02-22 15:27:54 +08:00
Sebastien Bourdeauducq 4d6619f3bc satman: send ResetAck 2018-02-22 15:17:44 +08:00
Florent Kermarrec 5eda894db4 firmware/libboard/sdram: increase read_delays dead zone to 32 on KU 2018-02-21 19:36:37 +01:00
whitequark 96f697ec96 firmware: update compiler_builtins to unbreak __gtdf2.
Fixes #883.
2018-02-21 15:21:48 +00:00
Florent Kermarrec afc16a67b6 firmware/liboard/sdram.rs: iterate read multiple times in read_delays to avoid false positives 2018-02-21 14:15:35 +01:00
Sebastien Bourdeauducq 738654c783 drtio: support remote RTIO resets 2018-02-20 18:48:54 +08:00
Sebastien Bourdeauducq ad2c9590d0 drtio: rewrite/fix reset and link bringup/teardown 2018-02-20 17:26:43 +08:00
Sebastien Bourdeauducq 83abdd283a drtio: signal stable clock input to transceiver 2018-02-18 22:29:30 +08:00
Robert Jördens c87636ed2b si5324: fix cfb21ca 2018-02-18 11:38:20 +01:00
Sebastien Bourdeauducq 039dee4c8e si5324: rename SI5324_FREE_RUNNING to SI5324_AS_SYNTHESIZER
The previous name was causing confusion with the FREE_RUN bit
that connects the crystal to CLKIN2.
2018-02-17 13:54:50 +08:00
Sebastien Bourdeauducq cfb21ca126 si5324: fix usage of external CLKIN2 reference 2018-02-17 13:52:01 +08:00
Sebastien Bourdeauducq fb8b36cd41 clean up ccc279b8 2018-02-17 12:10:46 +08:00
hartytp ccc279b8da rewrite HMC7043 init code without using ADI GUI outputs, working analog/digital delay 2018-02-17 12:07:11 +08:00
Robert Jördens e41f49cc75 kasli: opticlock 125 MHz, mark external reference case broken 2018-02-16 17:23:15 +00:00
Sebastien Bourdeauducq 4d42df2a7c kasli: set up Si5324 in standalone operation 2018-02-15 20:32:58 +08:00
Sebastien Bourdeauducq c5ae81f452 satman: remove unused 62.5MHz Si5324 settings 2018-02-15 20:29:51 +08:00
Sebastien Bourdeauducq d7387611c0 sayma: print RTM gateware version 2018-02-15 19:31:58 +08:00
whitequark fe50018037 firmware: make network tracing runtime switchable. 2018-02-14 23:03:20 +00:00
Sebastien Bourdeauducq df177bfd5b use new misoc identifier 2018-02-13 20:38:48 +08:00
Sebastien Bourdeauducq 00f42f912b rename 'RTM identifier' to 'RTM magic number'
Avoids confusion with the MiSoC identifier (containing the ARTIQ version).
2018-02-13 20:02:51 +08:00
Florent Kermarrec e80b481032 firmware/libboard_artiq/hmc830_7043.rs: add template for sys_ref phase configuration for dac1/dac2 and fpga 2018-02-05 13:40:17 +01:00
Florent Kermarrec e50bebb63d firmware/liboard_artiq/ad9154.rs: add checks for jesd subclass 1 (verify that we receive the sysref and that phase error is within the specified window error threshold). 2018-02-05 13:39:30 +01:00
whitequark 807eb1155b Update smoltcp.
Fixes #902.
2018-01-30 03:29:08 +00:00
whitequark d58393a1e5 runtime: build with -Cpanic=unwind.
This is required for backtraces to function. I'm not sure how it
turned out that master had -Cpanic=abort.
2018-01-26 23:01:24 +00:00
Sebastien Bourdeauducq 0d2f89db53 si5324: chip does not ack RST_REG write 2018-01-25 11:06:19 +08:00
Sebastien Bourdeauducq cfffd9e13d si5324: kasli support 2018-01-23 13:17:03 +08:00
Sebastien Bourdeauducq c3323f0d57 hmc830: improve lock failure error report 2018-01-20 15:42:53 +08:00
hartytp 37fa3b29da firmware: add register dump on HMC830 lock timeout. 2018-01-20 00:19:31 +00:00
Florent Kermarrec 9eb13aba3c liboard_artiq/hmc830_7043: allow sysref digital/analog delay configuration (will need to be adjusted for jesd subclass1) 2018-01-19 17:19:02 +01:00
whitequark 80cbef0031 firmware: always reset PHY when initializing Ethernet.
Fixes #897.
2018-01-19 04:56:11 +00:00
whitequark 1f82ceaa85 firmware: add HMC542 (Allaki) support. 2018-01-19 04:47:26 +00:00
Florent Kermarrec 07f4e2e35a libboard_artiq/ad9154: fix prbs test (only keep prbs7) and
always do it after ad9154 initialization
2018-01-18 08:19:37 +01:00
whitequark 1e896d4ba8 firmware: fix warnings. 2018-01-17 00:48:46 +00:00
Florent Kermarrec 702c35821b libboard_artiq/ad9154: add dac_status and dac_prbs (untested) 2018-01-15 22:15:35 +01:00
Chris Ballance 7429ee4fb6 firmware: make read leveling robust for KUS SDRAM
Increases the initial delay step into the valid read window as
with the original delay I was not getting out of the noisy
transition window, as evidenced by seeing read delay windows
of only 8 LSB ~10% of the time, leading to failing memory
tests
2018-01-12 10:35:38 +08: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 267c699835 firmware: support DDRPHY without write leveling (fixes #886).
Currently, this is kasli.
2018-01-09 02:41:02 +00:00
whitequark 07ccb9eebd firmware: support configuration without ethphy (#886).
Currently, this is kasli.
2018-01-08 22:16:17 +00:00
whitequark 3a3f44af53 firmware: update smoltcp. 2018-01-08 21:41:53 +00:00
whitequark 987a9c8308 conda: update rustc to 1.23.0. 2018-01-08 21:39:15 +00:00
Sebastien Bourdeauducq 161a414567 serwb: debug print on error 2018-01-04 22:23:59 +08:00
Sebastien Bourdeauducq e1a75ac1c1 runtime: set log level early
We want to debug startup.
2018-01-04 22:19:48 +08:00
whitequark fc9766d2fa firmware: reset ethphy before initializing smoltcp (fixes #884). 2018-01-04 11:42:35 +00:00
whitequark b7f38b123b frimware: update to log 0.4. 2018-01-01 11:45:55 +00:00
whitequark a371b25525 bootloader: allow using without Ethernet. 2017-12-31 09:21:28 +00:00
whitequark 70ebe431fd satman: fix build after b8f3d28b. 2017-12-31 09:21:02 +00:00
whitequark e1253db0e8 firmware: update crc dependency, use it in libdrtioaux. 2017-12-31 09:16:11 +00: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
Sebastien Bourdeauducq a897d82324 ad9154: retry initialization (#727) 2017-12-31 11:27:43 +08:00
whitequark 3505878176 bootloader: add basic network support. 2017-12-28 15:26:12 +00:00
whitequark d2687ce3c4 firmware: fix a typo replacing spiflash::SECTOR_SIZE with PAGE_SIZE. 2017-12-28 15:26:12 +00:00
whitequark 33e0393e4a firmware: move mod ethmac to libboard. 2017-12-28 14:40:15 +00:00
whitequark 55cfdec644 firmware: enlarge bootloader partition to 4 sectors. 2017-12-28 14:39:26 +00:00
whitequark acd13837ff firmware: implement the new bootloader. 2017-12-28 13:18:51 +00:00
whitequark b9754e7108 firmware: deduplicate libbuild_misoc and libbuild_artiq. 2017-12-28 13:18:51 +00:00
whitequark d94db1de5d Revert accidentally committed parts of 1b9b5602. 2017-12-28 08:23:34 +00:00
whitequark fcc438524c firmware: use main.rs as the root source for non-library crates. NFC. 2017-12-28 08:20:23 +00:00
whitequark 1b9b560242 firmware: use libbuild_misoc in libdrtioaux. NFC. 2017-12-28 08:20:23 +00:00
whitequark 8f33061a6d firmware: fix sayma_amc_standalone build with sawg. 2017-12-28 08:20:23 +00:00
Sebastien Bourdeauducq 4ea801b2ea firmware: si5324 moved to board_artiq 2017-12-28 15:45:45 +08:00
whitequark 3b18ece3b7 satman: update for changes in firmware elsewhere. 2017-12-28 07:36:33 +00:00
whitequark d3066e5044 firmware: oops, misoc #[cfg]s were missing from libboard_artiq. 2017-12-28 07:36:33 +00:00
whitequark ca419aa3c2 firmware: split out libboard_artiq from libboard. 2017-12-28 07:07:00 +00:00
whitequark b443fbd8f7 runtime: remove #[repr(simd)] hack. 2017-12-28 04:46:27 +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 d7cb4963e1 firmware: prepare config block for access from BIOS/bootloader.
* remove liballoc dependency from mod config,
  * move mod config to libboard,
  * move config sector immediately after BIOS sector.
2017-12-27 21:28:40 +00:00
whitequark 5a2cbe7088 runtime: remove borrow_mut!() in favor of backtraces. 2017-12-27 19:15:25 +00:00
whitequark edfacbd063 conda: ship runtime.elf in board-specific packages.
This is so that backtraces may be symbolized.
2017-12-26 21:50:31 +00:00
whitequark 8b4a006855 runtime: update smoltcp. 2017-12-26 14:33:56 +00:00
whitequark 71eca5ad61 runtime: fix some final flash storage issues. 2017-12-26 14:09:17 +00:00
whitequark 188764693e runtime: we're growing, put storage at 1M instead of 512K. 2017-12-26 03:34:16 +00:00
whitequark e2513a2401 runtime: ensure flash storage never overlaps with runtime sections. 2017-12-26 03:31:37 +00:00
whitequark 6e341da3a1 runtime: simplify. NFC. 2017-12-26 02:31:28 +00:00
whitequark 061fb3dcd5 runtime: remove accidentally committed parts of a Makefile. 2017-12-25 20:30:13 +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
Sebastien Bourdeauducq 00ed51f6f4 satman: use new alloc_list (#880) 2017-12-23 22:15:39 +08:00
Sebastien Bourdeauducq a6ffe9f38d drtio: add Sayma top-level designs 2017-12-21 23:08:56 +08:00
Sebastien Bourdeauducq a23251276d Revert "sayma: set up Si5324 for RGMII clock rerouting"
This reverts commit 2b01aa22b6.
2017-12-21 14:42:15 +08:00
whitequark 701308474f runtime: update smoltcp. 2017-12-19 15:51:03 +00:00
whitequark aaba36be7a runtime: log moninj messages at TRACE level, like all others. 2017-12-16 22:39:13 +00:00
whitequark 8cece4f260 runtime: hotswap slightly more carefully.
This generally lets some last characters out of UART, last ACKs
out of queues, etc. Nothing guaranteed though.
2017-12-16 22:39:13 +00:00
whitequark 4a9d8c9459 runtime: fix a warning. 2017-12-16 22:39:13 +00:00
Sebastien Bourdeauducq 2b01aa22b6 sayma: set up Si5324 for RGMII clock rerouting 2017-12-17 00:25:33 +08:00
Sebastien Bourdeauducq f02c74cb7b libboard/si5324: enable both clock outputs 2017-12-15 16:56:44 +08:00
Sebastien Bourdeauducq 9caef3c1d3 libboard/si5324: configure I2C mux on Sayma 2017-12-15 16:45:26 +08:00
Sebastien Bourdeauducq 77977932f2 firmware: remove AD9516 support
This was only used in KC705 phaser.
2017-12-14 19:16:39 +08:00
Sebastien Bourdeauducq 5809e08686 runtime: no startup_clock config is not an error 2017-12-14 12:39:26 +08:00
whitequark 9e8bb1d51c runtime: update smoltcp. 2017-12-08 07:36:56 +00:00
Sebastien Bourdeauducq 66e089b376 libboard/serwb: more explicit retry log message 2017-12-02 10:51:13 +08:00
Florent Kermarrec 0eb9f93611 libboard/serwb: retry serwb initialization on error 2017-12-01 22:45:05 +01:00
Sebastien Bourdeauducq 2e5b20d53d libboard/hmc830_7043: enable HMC830 2017-11-30 12:06:54 +08:00
Sebastien Bourdeauducq ad2a32d381 libboard/ad9154: small cleanup 2017-11-30 11:33:58 +08:00
Florent Kermarrec bd75954192 libboard/ad9154: update for sayma (spi, jesd parameters, linerate), breaks kc705/ad9154 fmc support 2017-11-29 18:09:39 +01:00
Florent Kermarrec 8b8da39a8f libboard/hmc830_7043.rs: fix HMC7043 comments 2017-11-29 17:59:42 +01:00
Sebastien Bourdeauducq 19498e59f9 libboard: fix JESD reset release 2017-11-29 18:18:41 +08:00
Sebastien Bourdeauducq cfb41e71a8 libboard: print serwb settings at the debug log level 2017-11-28 01:23:33 +08:00
whitequark 8e8f037971 runtime: print ethmac preamble error count.
Also, print total error count, not the difference (but still compute
the difference to determine *when* to print).
2017-11-26 22:35:26 +00:00
whitequark 26fdd42f8f runtime: update smoltcp. 2017-11-22 08:09:06 +00:00
Florent Kermarrec a3383c340c firmware/satman/lib.rs: has_serwb_phy to has_serwb_phy_amc 2017-11-18 18:09:35 +01:00
Florent Kermarrec 39a8fc682d artiq/firmware/libboard/hmc830_7043.rs: some cleanup, don't use hmc830 for now 2017-11-18 18:08:31 +01:00
Florent Kermarrec aff1609a53 firmware/libboard: use correct jesd clocking 2017-11-10 10:56:45 +01:00
Florent Kermarrec d90d624877 firmware/libboard/serwb: revert init reset, show delay 2017-11-10 10:53:20 +01:00
Florent Kermarrec 76ddb063cf gateware/targets/sayma: get hmc830/7043 spi working (still need to test clock generation) 2017-11-06 12:08:28 +01:00
whitequark fcd660d682 runtime: remove accidentally deleted code. 2017-11-03 16:10:59 +00:00
whitequark dfb2fe0b80 runtime: allow #[cfg(not(has_ethmac))] builds. 2017-11-03 16:09:22 +00:00
whitequark 4835431ac3 runtime: allow #[cfg(not(has_kernel_cpu))] builds. 2017-11-03 16:04:17 +00:00
whitequark ad8fcb8b86 runtime: has_rtio -> has_rtio_core.
has_rtio is the cfg for the kernel CPU, has_rtio_core is the one
for the comms CPU.

Also remove a few useless #[cfg]s.
2017-11-03 15:59:59 +00:00
whitequark 2404a0d8c8 runtime: allow #[cfg(not(has_rtio))] builds. 2017-11-03 15:49:30 +00:00
Florent Kermarrec b3e920b3c8 firmware/libboard/serwb: fix init 2017-11-03 12:16:16 +01: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 b03e36e4e9 conda: update misoc. 2017-10-30 09:33:02 +00:00
whitequark 7f32ae31de runtime: fix a typo. 2017-10-30 08:48:35 +00:00
whitequark a66450b0af runtime: temporarily revert ethmac statistics collection. 2017-10-30 08:27:51 +00:00
whitequark ae2d7abbed runtime: update smoltcp. 2017-10-30 08:26:54 +00:00
whitequark cdf63c5ea0 runtime: interrogate ethmac error counters and display changes. 2017-10-30 07:46:23 +00:00
whitequark 978c0d98aa runtime: update smoltcp. 2017-10-30 07:22:47 +00:00
whitequark 8e91856426 runtime: parse the "ip" configuration as IP, not CIDR.
Or it defaults to the default IP on settings that were previously
perfectly valid.
2017-10-30 04:25:58 +00:00
whitequark 6bdeddd201 runtime: remove UDP-related code. 2017-10-25 02:55:01 +00:00
whitequark cdba330845 Update smoltcp.
Fixes #840.
2017-10-25 02:31:27 +00:00
whitequark 9d356ed93b firmware: implement board::pcr. 2017-10-18 11:04:13 +00:00
Robert Jördens e1e1f58ba9 libboard: fix use 2017-10-13 12:26:34 +02:00
whitequark e7dac530c1 runtime: avoid hardcoding ethmac slot layout, use info from CSR. 2017-10-03 19:16:11 +00:00
Sebastien Bourdeauducq a89b053473 firmware: wait for HMC830 lock 2017-10-04 01:42:57 +08:00
whitequark 2684aec4c6 firmware: use read_unaligned instead of a hack. NFC. 2017-10-02 03:38:31 +00:00
whitequark fd07c3f4d7 runtime: get rid of config_dummy.rs. NFC.
Use the same strategy as elsewhere.
2017-10-02 03:20:50 +00:00
whitequark 73c76ebb9a firmware: eliminate most transmutes and document the rest. NFC. 2017-10-02 03:09:46 +00:00
whitequark 7ad54e1dcf firmware: unbreak heap view.
This was missing since 7799413a for no good reason.
2017-10-02 02:02:45 +00:00
Sebastien Bourdeauducq b4c52c34f7 Merge branch 'sinara' 2017-09-30 01:11:16 +08:00
Sebastien Bourdeauducq 6c049ad40c rtio: report channel numbers in asynchronous errors 2017-09-29 16:32:57 +08:00
Sebastien Bourdeauducq 5437f0e3e3 rtio: make sequence errors consistently asychronous 2017-09-29 14:40:06 +08:00
whitequark c00b3fe8cd firmware: update smoltcp. 2017-09-24 22:57:27 +00: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
whitequark c1829f3eda runtime: update smoltcp. 2017-09-22 19:05:18 +00: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 2b2b345eb9 firmware: wait for serwb to be ready before proceeding further 2017-09-06 11:07:07 +08:00
Sebastien Bourdeauducq 33f053cff8 libboard: complete but undebugged support for HMC830/7043 programming 2017-09-06 10:46:02 +08:00
Sebastien Bourdeauducq 4baf17cebe libboard: generate HMC7043 register write list 2017-09-05 21:46:03 +08:00
Sebastien Bourdeauducq 091bb28043 libboard: use libbuild_artiq 2017-09-05 21:13:04 +08:00
whitequark 74b7010d67 runtime: allow safely pulling logs even on TRACE log level.
Before this commit, this resulted in a packet flood, because
sending a TRACE log message to the host caused more TRACE log
messages to be emitted.
2017-08-31 14:13:51 +00:00
Sebastien Bourdeauducq b609366c6f runtime: fix Rust types in RTIO
Previous code assumed all RTIO registers were u32, but this was changed
by misoc c5edcd08.
2017-08-31 13:42:32 +08:00
Sebastien Bourdeauducq 44edba0c65 firmware: add placeholder code for HMC830/7043 initialization 2017-08-31 13:35:47 +08:00
Sebastien Bourdeauducq 0a5904bbaa firmware: support for multiple JESD DACs 2017-08-31 13:05:48 +08:00
whitequark 4883eea252 libproto: simplify (NFC). 2017-08-31 02:48:59 +00:00
whitequark 20f43d5792 firmware: fix ethmac MTU value.
1500 is the maximum payload size, not maximum frame size.
2017-08-31 00:57:35 +00:00
whitequark 737c1044a4 firmware: update smoltcp. 2017-08-31 00:45:56 +00:00
whitequark f26e698f31 Revert "firmware: reduce ethmac maximum burst size by one."
This reverts commit 2231b16e0a.

Only made a difference with TRACE log level to UART, i.e. only
because UART was the bottleneck.
2017-08-30 15:22:20 +00:00
whitequark 39ecbc0d68 firmware: update smoltcp. 2017-08-30 14:35:45 +00:00
whitequark 2231b16e0a firmware: reduce ethmac maximum burst size by one.
Empirically, this much reduces packet loss. I'm not really sure why,
but it seems safe to do the change.
2017-08-30 14:35:25 +00:00
whitequark e6e176fa14 Revert "firmware: update smoltcp."
This reverts commit 7c340f6b48.
2017-08-25 12:03:01 +00:00
whitequark 7c340f6b48 firmware: update smoltcp. 2017-08-25 07:20:38 +00:00
whitequark f5e1d9568d firmware: update smoltcp. 2017-08-24 05:50:59 +00:00
Sebastien Bourdeauducq ac83bfbd8e runtime: add support for targets without SPI flash 2017-08-20 11:28:57 -04:00
Sebastien Bourdeauducq 8459cfe8db firmware: remove unnecessary git_describe rust-cfg 2017-08-15 08:14:17 -06:00
whitequark dd87508a7f Implement forwarding of logs from core device to master.
Fixes #691.
2017-07-18 05:31:59 +00:00
whitequark 819440f839 runtime: split log timestamp into secs.micros. 2017-07-18 05:31:59 +00:00
Sebastien Bourdeauducq 9045b4cc19 drtio: initial firmware support for multi-link 2017-07-18 00:40:21 +08:00
whitequark d06d53b00d firmware: don't bail out if building not from a git checkout (#783). 2017-07-15 03:16:21 +00:00
whitequark 1e2603572a runtime: fix a bug causing sockets to get stuck in CLOSE-WAIT. 2017-07-05 16:27:36 +00:00
whitequark ee1d5dbccb runtime: allow a much larger log buffer and avoid hacks. 2017-07-04 18:18:31 +00:00
whitequark 6a49c114c8 runtime: update smoltcp. 2017-06-28 00:27:22 +00:00
whitequark 370f22541c runtime: update smoltcp. 2017-06-27 21:06:45 +00:00
whitequark f17a6616b2 runtime: ensure management interface buffer can hold log buffer.
Otherwise we get weird edge cases where the network stack could try
to append to log buffer while management interface is holding
the log buffer and trying to push it out, and it's just no good.

The serialized log buffer at its maximum length is slightly longer
than 32 KiB, so we just allocate the largest possible TCP buffer
to the management interface to keep it simple.
2017-06-24 17:09:28 +00:00
whitequark 12357d884e runtime: update smoltcp. 2017-06-24 16:55:59 +00:00
Sebastien Bourdeauducq 66dee9d1ad drtio: send/process I2C and SPI aux packets (#740) 2017-06-21 16:50:51 +08:00
Sebastien Bourdeauducq f58f16ccd4 drtioaux: add default timeout 2017-06-21 16:23:11 +08:00
Sebastien Bourdeauducq 7675dd063b drtioaux: add I2C and SPI packets (#740) 2017-06-21 14:07:16 +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 6c6bb67618 libboard: fix compiler warning on not(has_i2c) 2017-06-19 14:57:15 +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
Sebastien Bourdeauducq 8fea361412 firmware: always use 8 characters to abbreviate git commit hashes 2017-06-17 14:43:50 +08:00
Robert Jördens 2a76034fbc cri: add note about clearing of o_data 2017-06-16 19:06:00 +02:00
whitequark 284382b1f5 compiler: add support for bytearray values in RPC (#714). 2017-06-09 07:15:25 +00:00
whitequark 66a683f583 compiler: add support for bytes values in RPC (#714). 2017-06-09 07:10:48 +00:00
whitequark d0e92067c3 ksupport: fix UB. 2017-06-09 06:18:20 +00:00
Chris Ballance 0b6fb95deb firmware: fix revision of compiler_builtins for satman 2017-05-13 15:12:53 +01:00
Florent Kermarrec 79c339d4ac gateware/targets/phaser: jesd core now handles jsync completely 2017-04-26 22:25:08 +02:00
whitequark a820ae98cf ksupport: avoid allocations on I/O error paths.
Fixes #715.
2017-04-21 17:20:50 +00:00
whitequark b913d1d6f2 runtime: make a copy of startup/idle kernel firmware before loading.
Fixes #716.
2017-04-21 16:46:40 +00:00
whitequark 726ee7370a runtime: update smoltcp.
This brings in correct TIME-WAIT handling. Fixes #722.
2017-04-21 16:08:04 +00:00
whitequark 0e68eaa879 runtime: print a heap dump on out-of-memory condition. 2017-04-21 14:48:10 +00:00
whitequark db494967c5 firmware use Rust 0.18.0. 2017-04-19 09:38:24 +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 c6e8d5c901 runtime: allow setting UART log level explicitly.
This is way more convenient than commenting out parts
of session.rs when debugging.
2017-04-15 08:27:18 +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
whitequark ea753bed17 runtime: advise to set panic_reboot=1 on panic. 2017-04-15 07:29:36 +00:00
whitequark 296dc3b0c4 artiq_coreboot: allow hot-rebooting the device. 2017-04-11 03:24:24 +00:00
whitequark 14ae1cc100 runtime: advance now on DMA replay.
Fixes #700.
2017-04-05 18:34:36 +00:00
Sebastien Bourdeauducq 5e3aef45dc drtio: support collision/replace + detect sequence errors at satellite 2017-04-06 01:06:56 +08:00
whitequark 391660e545 gateware: simplify the CRI arbiter to use a plain mux. 2017-04-05 15:09:19 +00:00
Sebastien Bourdeauducq 008678b741 drtio: add infrastructure for reporting busy/collision errors 2017-04-02 23:45:55 +08:00
Sebastien Bourdeauducq 0a687b7902 drtio: report satellite errors through firmware 2017-04-01 12:18:00 +08:00
whitequark d04d7ed120 runtime: show a more informative message for interrupted sessions.
Fixes #690.
2017-03-29 03:36:49 +00:00
whitequark 948ed6fb0a Extract core device management interface from session interface (#691). 2017-03-29 03:36:21 +00:00
Sebastien Bourdeauducq 2c3f720301 runtime: report asynchronous RTIO errors (collision, busy) in log. Closes #681 2017-03-27 17:14:14 +08:00
Sebastien Bourdeauducq b74d6fb9ba make collision and busy asynchronous errors, and simplify CPU/gateware handshake for output errors and reads 2017-03-27 16:32:23 +08:00
Sebastien Bourdeauducq f5aa73b8fa satman: unbreak after c586035c 2017-03-15 17:26:09 +08:00
whitequark c586035caa runtime: add an option to reboot after a panic. 2017-03-14 09:02:28 +00:00
whitequark 80c75ed505 firmware: fix for unwinder update. 2017-03-14 08:50:32 +00:00
whitequark 5bbb05362b runtime: update smoltcp. 2017-03-07 11:36:28 +00:00
whitequark d52723d5bc runtime: allow setting log level in configuration. 2017-03-07 11:36:28 +00:00
whitequark 795a3e24d8 artiq_coreboot: block until hotswap image is actually received. 2017-03-07 11:36:28 +00:00
whitequark b0cdef3211 firmware: implement hotswap through artiq_coreboot tool. 2017-03-06 16:01:28 +00:00
whitequark 98454e9bda runtime: remove unnecessary dcache flush.
Data cache is write-through, so sending data to DMA doesn't need
a flush.
2017-03-04 09:46:55 +00:00
whitequark 924ae73000 firmware: fix DMA trace alignment and flush caches. 2017-03-04 09:40:22 +00:00
whitequark 30ac42de3f ksupport: fix an exception safety issue.
Raising from inside a recv! will never send an acknowledgement.
2017-03-04 09:40:22 +00:00
Sebastien Bourdeauducq 1e6a33b586 rtio: handle input timeout in gateware
The information passed by the runtime will be used by the DRTIO core
to poll the remote side appropriately.
2017-03-03 17:37:47 +08:00
whitequark 4f94709e9f firmware: move packet dumps to the DEBUG log level. 2017-03-03 06:11:35 +00:00
whitequark e8c093deb3 Allow changing runtime log level without recompilation.
This shouldn't affect performance much, as the log crate guards
every log statement with a branch, adding just two instructions.
2017-03-03 06:06:26 +00:00
whitequark fe77fcc45f firmware: fix a warning. 2017-03-03 05:35:28 +00:00
whitequark 3070a2fac1 runtime: fix more bugs in DMA trace encoder. 2017-03-03 05:15:54 +00:00
Sebastien Bourdeauducq 0b4922e0f4 dma: request RTIO control 2017-03-01 18:59:45 +08:00
whitequark a4ece19614 Implement DMA playback. 2017-02-28 21:28:40 +00:00
Sebastien Bourdeauducq 7481eaff52 moninj: use smaller network buffer 2017-02-27 11:44:29 +08:00
whitequark 88bf7d2233 firmware: specialize protocol read/write functions.
Before this commit, proto::io::{read,write}_* functions were taking
a &mut {Read,Write}. This means a lot of virtual dispatch.
After this commit, all these functions are specialized for
the specific IO trait.

This could be achieved with just changing the signature from
  fn read_x(reader: &mut Read)
to
  fn read_x<R: Read>(reader: &mut R)
but the functions were also grouped into ReadExt and WriteExt
traits as a refactoring.

Initially, it was expected that the generic traits from
the byteorder crate could be used, but they require endianness
to be specified on every call and thus aren't very ergonomic.
They also lack the equivalent to our read_string and read_bytes.

Thus, it seems fine to just define a slightly different extension
trait.

This also optimized the test_rpc_timing test: 1.7ms→1.2ms.
2017-02-26 18:24:37 +00:00
Sebastien Bourdeauducq dff23293c7 Merge branch 'master' of github.com:m-labs/artiq 2017-02-27 01:05:40 +08:00
whitequark 5d3b00cf12 Implement recording of DMA traces on the core device. 2017-02-26 02:50:20 +00:00
whitequark a07bd918f0 firmware: use Rust naming conventions for enum variants. 2017-02-25 22:34:11 +00:00
whitequark 2a81819eb0 firmware: restructure to avoid #[path = "..."] mod ...;
Such code is fragile, introduces mess in dependencies, and
inflates compile times.
2017-02-25 17:54:14 +00:00
whitequark d04e611232 firmware, compiler: rename rpc functions to be more consistent. 2017-02-25 14:12:58 +00:00
Sebastien Bourdeauducq 98be556143 drtioaux: fix compiler warnings 2017-02-25 12:18:57 +08:00
Sebastien Bourdeauducq 5a16660aa2 runtime: new moninj protocol, TCP-based, with DRTIO support 2017-02-25 12:07:00 +08:00
Sebastien Bourdeauducq 7d568b4bac style 2017-02-25 12:06:12 +08:00
whitequark 13c6e96760 firmware: implement dyld::Library::rebind. 2017-02-25 00:10:40 +00:00
whitequark 04ad267055 firmware: rewrite the dynamic linker in Rust. 2017-02-24 18:57:29 +00:00
whitequark 907589fb58 satman: simplify Makefile. 2017-02-23 10:29:25 +00:00
whitequark 623a605d3b satman: refactor type conversions. 2017-02-23 08:59:27 +00:00
Sebastien Bourdeauducq b34c6ba6b9 satman: process moninj packets 2017-02-23 16:24:05 +08:00