Support CoreMgmt over DRTIO on Zynq Devices #323
No reviewers
Labels
No Milestone
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#323
Loading…
Reference in New Issue
No description provided.
Delete Branch "occheung/artiq-zynq:drtio-coremgmt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The corresponding Kasli-SoC PR for ARTIQ PR.
Main differences to the ARTIQ PR
config write
Similar issues experienced on RISC-V devices can be expected here.Protocol issues resolved on main-line ARTIQ PR.@ -232,1 +870,3 @@
pub fn start(cfg: Config) {
pub fn start(
cfg: Config,
drtio_tuple: Option<(
Slightly related: I like the tuple to keep the argument list shorter/more compartmentalized, should we adapt it in other places too?
Agreed that a a lot of argument lists are needlessly long. Especially with the shared sync primitives theres a lot of repetition. Though I'm not sure that these tuples make things much shorter, without some type aliasing. Is there a case for putting these shared sync prims in a struct and passing around an
Rc
to that instead? (In a similar style to how the mainline repo passes aroundIo
)Putting the idea out there, obviously it would be a heavy refactor...
@ -115,0 +837,4 @@
stream: &mut TcpStream,
pull_id: Rc<RefCell<u32>>,
cfg: Rc<Config>,
_drtio_tuple: Option<(&Rc<Mutex<bool>>, &RoutingTable, GlobalTimer)>,
Isn't that just an idiosyncratic object? Canonical way would be to define a
struct
.fbb20bc723
to93e25169fb
WIP: Support CoreMgmt over DRTIO on Zynq Devicesto Support CoreMgmt over DRTIO on Zynq Devices@ -115,0 +862,4 @@
}
#[derive(Clone)]
pub struct DrtioTuple(pub Rc<Mutex<bool>>, pub Rc<RefCell<RoutingTable>>, pub GlobalTimer);
I think no other software calls objects "tuples".
What about DrtioContext?
And name the fields, as is usually done.
Support CoreMgmt over DRTIO on Zynq Devicesto WIP: Support CoreMgmt over DRTIO on Zynq DevicesWhat issues?
3ebbb554cd
to47fc53c4bf
WIP: Support CoreMgmt over DRTIO on Zynq Devicesto Support CoreMgmt over DRTIO on Zynq Devices@ -115,0 +240,4 @@
loop {
if id != *pull_id.borrow() {
// another connection attempts to pull the log...
In what scenario would that be possible?
It might be possible if you start multiple
aqctl_corelog
with different binding ports specified by-p
.Though in practice, all I see is the older
aqctl_corelog
not emitting anything, even after exiting neweraqctl_corelog
s.Sounds buggy...
I think we should fix this - in the field aqctl_corelog is going to be mercilessly started over and over again when something doesn't work, sent SIGKILL, having its core device connection brutally dropped e.g. by changing the host's IP address, then restarted, etc.
So this needs to be robust.
@ -0,0 +77,4 @@
self.cfg
.read(&key)
.map(|value| {
debug!("got value");
probably can be removed