test all drivers #270
Labels
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/nac3#270
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
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?
Can use
artiq_sinara_tester
.As of 2022-04-27, I tested the devices with
artiq_sinara_tester
and usually they worked maybe with small fixes or workarounds.for the untested drivers:
DIO Input/edge counter: RPC issue #101 (nothing returned making testing more difficult)
DIO clkgen: part of Urukul Sync
Urukul 9910 sync: EEPROM saves/reads OK, but cannot calibrate because of #101 and testing phase coherency is not feasible yet.
Urukul 9912 1-EEM: no hardware
Sampler: KeyError #272
Grabber: no camera to test with
Phaser: #276
SU-Servo: Need working Sampler first
AD9914: do we have the hardware, actually? That's for KC705, right?
Is this kind workaround feasible?
Sorry, should've mentioned it before - I tried that and that causes the RPC/KeyError (#272)
Urukul 9910 w/ sync works with the aforementioned workaround, after KeyError fix.
SUServo after minor modifications to the code seems to suffer from the same issue as Phaser (#276).
Looks like there's DIO Clkgen left to test from the hardware that we do have.
Try with only one thread as suggested. Change 4 to 1 here:
3f327113b2/nac3artiq/src/lib.rs (L768)
and replace
nac3artiq-pgo
withnac3artiq
in your local ARTIQflake.nix
so recompilation takes a more reasonable time.What about DIO input tests using a similar workaround for the lack of kernel return value passing to the host? Should be also just a small change to sinara_tester AFAICT?
And the other DIO input modes need custom kernels (since sinara_tester is meant to test hardware).
With these fixes, SU-Servo runs and does initialize the channels, but there's no output from Urukuls. I ran ARTIQ-7's tester without reflashing and I got the intended result.
But Phaser works fine w/ the workaround.
DIO ClockGen and Edge Counter work fine. DIO Input requires the workaround in
artiq_sinara_tester
but otherwise works fine.SUServo is the only problematic driver that requires more investigation.
After meddling with SUServo I could not pinpoint the exact issue. From
artiq_sinara_tester
looks like the code is running proper up to the point where the channel is actually enabled (LED is green on Urukul, but no output).Asserts with checking status are commented out, but uncommenting them and checking manually (ie. getting the status and using
print_rpc
to indicate if status is ok) got me to the point that I know that the driver hangs on any kind of read - and more precisely, at the call tortio_input_data
. I tried inserting some logging into the firmware part, however that gave me no logs at all through UART (maybe I forgot to set something there, wouldn't be surprised). The hang there does not explain why things are not really enabled still - as these calls are indeed commented out in normal code. Surely there will be more investigation required.(sorry for the close, misclick!)
In that case I suggest writing a MWE that reads something from SU-Servo using the legacy compiler, then port that to NAC3 and check what is going on.
Hanging on
rtio_input_data
looks like the SU-Servo PHY should have put something into the input FIFO (due to commands having been sent to it) but has not. Probably a wrong command is being sent.SU-Servo now works (tested w/ one Urukul, but that shouldn't change much) - albeit again with the change to make the compiler singlethreaded.
And so does Urukul 9912 1-EEM.