Florent Kermarrec
bcb9c3d09d
firmware/serwb: move prbs_test outside of wait_init, add wishbone_test
2018-05-24 16:53:47 +02:00
Florent Kermarrec
353767bfdb
firmware/hmc830: add VCO subsystem register 6 programming (suggested by hartytp, tested on hardware without regression)
2018-05-24 16:49:49 +02:00
Florent Kermarrec
ad89c42acc
firmware/serwb: automatically adjust prbs test delay to prbs test cycles, increase prbs test cycles
2018-05-24 10:20:55 +02:00
Florent Kermarrec
19e5280824
firmware/ad9154: cleanup DAC init
...
- Split dac_setup in dac_reset, dat_detect & dac_setup.
- Only do one reset/detection.
- Configure before doing SYSREF scan (otherwise scan don't work at the first scan after power up).
- Do the spi_setup in each function.
2018-05-24 09:34:00 +02:00
Florent Kermarrec
fa3b48737b
firmware/hmc830: Added magic word to HMC830 init sequence (from gkasprow & marmeladapk)
2018-05-24 09:23:00 +02:00
b10d3ee4b4
make RTIO clock switch optional and simplify
...
Kasli no longer has an internal RTIO clock.
Switching clocks dynamically is no longer supported.
2018-05-18 17:41:34 +08:00
whitequark
5744d97d59
firmware: adjust backtrace addresses correctly.
2018-05-17 08:13:55 +00:00
d4f074b1e1
firmware: fix Allaki addressing. Closes #993
2018-05-17 16:02:21 +08: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
a640041844
firmware: improve ad9154/hmc830/hmc7043 messaging
2018-05-16 23:15:17 +08:00
fedf7f0c87
firmware/ad9154: cleanup sysref scan and run everytime
2018-05-16 23:01:19 +08:00
1364cd2948
firmware/hmc830_7043: break out HMC830 SPI mode selection
2018-05-16 22:46:45 +08:00
0aadd3a361
firmware/hmc830_7043: improve messaging
2018-05-16 22:46:45 +08:00
whitequark
4d06c1d84b
coredevice.CommKernel: modernize. NFC.
2018-05-16 14:40:14 +00:00
whitequark
ca93b94aea
firmware: move config requests to management protocol.
...
They were only in session protocol because of historical reasons.
2018-05-16 14:32:49 +00:00
Florent Kermarrec
7fe49a78d2
firmware/runtime/session: fix compilation when no rtio core
2018-05-15 23:47:47 +02:00
whitequark
8128a814f6
firmware: update dependencies.
2018-05-15 18:17:32 +00:00
whitequark
1b0384c513
firmware: fix satman build.
2018-05-15 16:35:05 +00:00
whitequark
07b713fdad
firmware: use upstream log_buffer.
2018-05-15 15:19:20 +00:00
whitequark
9f5b76253c
firmware: remove some unnecessary unwraps.
2018-05-15 15:05:19 +00:00
whitequark
e5796e26e1
firmware: remove unused #![feature(untagged_unions)].
2018-05-15 15:05:19 +00:00
whitequark
b54926134c
firmware: update the signature of #[lang="panic_fmt"].
2018-05-15 15:05:19 +00:00
Florent Kermarrec
c18a73d45f
sayma_amc/rtm: use new serwb low-speed phy
2018-05-15 16:40:50 +02:00
whitequark
9347f6e00c
firmware: use a dedicated error type in the scheduler.
...
After this commit, error handling does not normally allocate
(session::Error::{Load,Unexpected} still allocate, but those two
are very rare).
Good riddance to libstd_artiq.
2018-05-15 14:19:44 +00:00
whitequark
479cb9a857
firmware: use dedicated error types for every protocol and thread.
...
Good riddance to io::Error::Unrecognized.
2018-05-15 13:27:23 +00:00
whitequark
514eab3d39
Update Rust to 1.26.0.
2018-05-15 12:47:51 +00:00
whitequark
26faaad2b7
firmware: remove io::Result<T, E> in favor of Result<T, impl Fail>.
...
This doesn't yet use impl Fail since std_artiq::io::Error doesn't
impl it.
2018-05-15 08:29:03 +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
4416c04ae1
firmware: use the failure crate in libio.
2018-05-15 07:40:13 +00:00
whitequark
9e8f8bb669
firmware: extract io::Cursor into its own file.
...
Also remove unused io::CursorError.
2018-05-15 06:24:04 +00:00
whitequark
a4ab236af3
firmware: simplify some use
s.
2018-05-14 19:24:14 +00:00
whitequark
d93aa13fd6
firmware: use upstream compiler_builtins again.
...
I've fixed i128 in LLVM, so there is no need in our fork anymore.
2018-05-14 19:11:57 +00:00
whitequark
5ead27f2e1
firmware: eliminate uses of std_artiq::io::{Read,Write} from runtime.
2018-05-14 19:11:57 +00:00
whitequark
cf33ba748d
firmware: eliminate non-io uses of std_artiq from runtime.
...
Just replace these with references to alloc.
2018-05-14 19:11:57 +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
764386c9e3
firmware: split libdrtioaux into libproto and libboard_artiq modules.
...
All other protocol code lives in libproto, and all other gateware
interfaces live in libboard_artiq.
2018-05-14 17:26:59 +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
09617c9f5e
firmware: migrate session_proto to new libio.
2018-05-14 15:17:32 +00:00
whitequark
e9c88e32e6
firmware: migrate moninj_proto to new libio.
2018-05-14 15:17:32 +00:00
whitequark
e292c8ab65
firmware: migrate mgmt_proto to new libio.
2018-05-14 15:17:32 +00:00
whitequark
976bb5e935
firmware: migrate analyzer_proto to new libio.
2018-05-14 12:51:59 +00:00
whitequark
2999756493
firmware: impl std_artiq::io::{Read,Write} for io::{Read,Write}.
2018-05-14 12:51:59 +00:00
whitequark
bfc8fd0807
firmware: add io::Error::Unrecognized variant and use it in drtioaux.
2018-05-14 12:51:59 +00:00
whitequark
7e299563df
firmware: mark many functions in libio as #[inline].
2018-05-14 11:22:56 +00:00
whitequark
368d6f9bfb
satman: remove useless _Unwind_Resume.
2018-05-14 11:22:56 +00:00
whitequark
42420e094a
satman: don't unwrap so much in process_aux_packet.
...
This shrinks the code by almost 4K.
2018-05-14 11:22:56 +00:00
whitequark
56a29b91fc
firmware: implement ConsoleLogger, use it in satman.
2018-05-14 10:45:11 +00:00
whitequark
5d43d457d2
satman: eliminate heap.
2018-05-14 10:05:02 +00:00
whitequark
46c8afc56c
firmware: implement libio and use in in drtioaux.
2018-05-14 10:02:39 +00:00
whitequark
d543c9aa63
firmware: backtrace_artiq → unwind_backtrace.
...
This crate isn't ARTIQ-specific.
2018-05-14 07:33:00 +00:00
whitequark
f383a470fe
satman: do not debug print unexpected aux packets.
...
This shrinks firmware by 2.8K.
2018-05-13 13:43:39 +00:00
whitequark
aa42a69849
libdrtioaux: always inline read/write helpers.
...
This shrinks Packet::{read_from,write_to} by 1K.
2018-05-13 13:39:14 +00:00
whitequark
32522be413
satman: use 1K log buffer and 4K stack.
...
This reduces memory requirements in half.
2018-05-13 13:28:00 +00:00
Florent Kermarrec
6b4bbe31f7
firmware/ad9154: use fixed hmc7043 sysref phase (found with scan)
2018-05-12 00:12:59 +02:00
Florent Kermarrec
3c49eba0a0
firmware/hmc830_7043: put hmc7043 in sleep mode before hmc830 initialization
...
hmc7043 seems to generate broadband noise when not initialized. This allows isolating issues. If hmc830 still does not always lock correctly, then this is not related to hmc7043 broadband noise.
2018-05-12 00:06:49 +02:00
2cece47b10
firmware/si5324: fix compilation warning
2018-05-09 20:00:08 +08:00
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
416232cb64
runtime: do not reset RTIO PHY on core.reset(). Closes #971
2018-03-28 10:51:07 +08:00
f2cc2a5ff2
firmware: reset local RTIO PHYs on startup ( #958 )
2018-03-22 16:29:31 +08:00
f4719ae24b
sdram: clean up console output
2018-03-20 15:42:49 +01:00
206664afd9
sdram: compact read_level output
2018-03-20 10:16:05 +00:00
495625b99d
bootloader: repeat memory test 4 times
2018-03-20 09:57:49 +00:00
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
3abb378fbe
i2c: unused variable
2018-03-20 09:56:26 +00:00
276b0c7f06
sdram: reject read delay wrap arounds
2018-03-20 00:28:41 +01:00
4b3f408143
sdram: simplify read level scan
2018-03-19 18:41:56 +00:00
845784c180
kusddrphy: use first and last tap that yield many valid reads
2018-03-19 17:54:26 +00:00
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
999ec40e79
bootloader: print gateware ident
2018-03-13 00:11:25 +08:00
2caeea6f25
update copyright year
2018-03-13 00:09:13 +08:00
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
0adbbd8ede
drtio: reset aux packet gateware after locking to recovered clock
...
Closes #949
2018-03-08 15:41:13 +08:00
7afb23e8be
runtime: demote dropped and malformed packets msgs to debug
2018-03-07 14:28:21 +01:00
916197c4d7
siphaser: cleanup
2018-03-07 11:15:44 +08:00
74d1df3ff0
firmware: implement si5324 skew calibration
2018-03-07 10:57:30 +08:00
e6e5236ce2
firmware: fix si5324 select_recovered_clock
2018-03-07 10:57:30 +08:00
c2d2cc2d72
runtime: fix setup_si5324_as_synthesizer
2018-03-07 10:57:30 +08:00
c34d00cbc9
drtio: implement Si5324 phaser gateware and partial firmware support
2018-03-07 10:57:30 +08:00
257bef0d21
slave_fpga: print more info
2018-03-06 14:26:26 +01:00
a274af77d5
runtime: fix compilation without DRTIO
2018-03-05 00:43:42 +08:00
432e61bbb4
drtio: add kernel API to check for link status. Closes #941
2018-03-05 00:23:55 +08:00
928d5dc9b3
drtio: raise RTIOLinkError if operation fails due to link lost ( #942 )
2018-03-04 01:02:53 +08:00
ba74013e3e
runtime: add a missing overflow flag reset
2018-03-03 13:16:21 +08:00
1c57d27ae2
slave_fpga: use sayma_rtm magic
2018-03-01 18:32:19 +01:00
de63e657b8
kasli/si5324: lock to 100 MHz with highest available bandwidth
2018-03-01 14:49:53 +01:00
abd160d143
slave_fpga: check DONE before loading
2018-03-01 19:53:34 +08:00
a04a36ee36
firmware: move wait for write completion to read()
2018-03-01 11:37:33 +01:00
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
6fbe0d8ed8
hmc830: be explicit about SPI mode selection
2018-03-01 11:19:18 +01:00
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
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
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
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
96423882f2
fix 4d6619f3b
2018-02-22 15:27:54 +08:00
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
738654c783
drtio: support remote RTIO resets
2018-02-20 18:48:54 +08:00
ad2c9590d0
drtio: rewrite/fix reset and link bringup/teardown
2018-02-20 17:26:43 +08:00
83abdd283a
drtio: signal stable clock input to transceiver
2018-02-18 22:29:30 +08:00
c87636ed2b
si5324: fix cfb21ca
2018-02-18 11:38:20 +01:00
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
cfb21ca126
si5324: fix usage of external CLKIN2 reference
2018-02-17 13:52:01 +08:00
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
e41f49cc75
kasli: opticlock 125 MHz, mark external reference case broken
2018-02-16 17:23:15 +00:00
4d42df2a7c
kasli: set up Si5324 in standalone operation
2018-02-15 20:32:58 +08:00
c5ae81f452
satman: remove unused 62.5MHz Si5324 settings
2018-02-15 20:29:51 +08:00
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
df177bfd5b
use new misoc identifier
2018-02-13 20:38:48 +08:00
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
0d2f89db53
si5324: chip does not ack RST_REG write
2018-01-25 11:06:19 +08:00
cfffd9e13d
si5324: kasli support
2018-01-23 13:17:03 +08:00
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