*** tpb has joined #litex | 00:00 | |
*** lf_ has quit IRC | 01:00 | |
*** lf has joined #litex | 01:00 | |
*** cr1901_modern2 has quit IRC | 02:03 | |
*** cr1901_modern has joined #litex | 02:03 | |
*** Degi_ has joined #litex | 03:56 | |
*** Degi has quit IRC | 03:58 | |
*** Degi_ is now known as Degi | 03:58 | |
*** acathla has quit IRC | 04:08 | |
*** Claude has joined #litex | 04:38 | |
*** Bertl_oO is now known as Bertl_zZ | 04:46 | |
*** kgugala_ has quit IRC | 06:19 | |
*** kgugala has joined #litex | 06:19 | |
*** SpaceCoaster has quit IRC | 06:31 | |
*** indy has quit IRC | 06:59 | |
*** SpaceCoaster has joined #litex | 07:07 | |
cr1901_modern | _florent_: I figured out the problem I was seeing. It's relevant to orangecrab but may exist on other boards. | 07:13 |
---|---|---|
cr1901_modern | Basically, the USB clock domain on orangecrab wasn't being reset properly. This means the CDC gray code multiregs between USB and sys would not be updated with valid reset values, and the comparison to detect an empty receive queue from USB would be garbage | 07:14 |
cr1901_modern | The CPU would always see a high level after reset from the RX interrupt. Since it's edge-triggered, the event never triggered, so the RX queue was never serviced | 07:16 |
cr1901_modern | eventually, the RX queue fills up, and the USB core dies waiting for the RX queue to drain. Then when you send data from the CPU side, the TX queue fills up b/c the USB core refuses to drain it | 07:17 |
cr1901_modern | Eventually, the BIOS dies in an infinite loop waiting for the TX queue to drain in a vicious cycle. | 07:18 |
cr1901_modern | Solution is to make sure the USB clock domain actually resets :) | 07:18 |
cr1901_modern | (This didn't take me as long as you'd think to figure out. But still probably should've waited to debug this.) | 07:19 |
cr1901_modern | Hrm, actually... this might not be an ideal solution if you _want_ the USB core to stay attached between resets | 07:20 |
cr1901_modern | Anyways, we can talk more about what you want to do when you're awake | 07:20 |
*** kgugala has quit IRC | 07:28 | |
*** kgugala has joined #litex | 07:28 | |
*** kgugala_ has joined #litex | 07:44 | |
*** kgugala has quit IRC | 07:47 | |
*** indy has joined #litex | 07:56 | |
*** acathla has joined #litex | 08:08 | |
*** acathla has quit IRC | 08:14 | |
*** acathla has joined #litex | 08:14 | |
*** SpaceCoaster has quit IRC | 08:19 | |
*** acathla has quit IRC | 08:29 | |
*** acathla has joined #litex | 08:30 | |
*** acathla has quit IRC | 08:33 | |
*** acathla has joined #litex | 08:34 | |
*** SpaceCoaster has joined #litex | 08:34 | |
*** acathla has quit IRC | 08:38 | |
*** acathla has joined #litex | 08:38 | |
*** hansfbaier has joined #litex | 09:05 | |
*** hansfbaier1 has joined #litex | 09:36 | |
*** hansfbaier has quit IRC | 09:37 | |
*** indy has quit IRC | 09:37 | |
*** indy has joined #litex | 09:45 | |
*** futarisIRCcloud has quit IRC | 10:51 | |
*** hansfbaier1 has quit IRC | 10:56 | |
*** Bertl_zZ is now known as Bertl | 11:45 | |
*** futarisIRCcloud has joined #litex | 11:54 | |
_florent_ | cr1901_modern: thanks for the analysis. On the OrangeCrab it's indeed useful to avoid reseting the USB-ACM with the button (that we are using as a reset), this allow reseting the SoC without reseting the USB-ACM link | 13:46 |
_florent_ | we should be able to fix the issue you saw while keeping this behavior | 13:46 |
*** Zguig has joined #litex | 15:19 | |
*** xobs has quit IRC | 15:19 | |
*** david-sawatzke[m has quit IRC | 15:19 | |
*** apolkosnik[m] has quit IRC | 15:19 | |
*** sajattack[m] has quit IRC | 15:19 | |
*** CarlFK[m] has quit IRC | 15:19 | |
*** leons has quit IRC | 15:19 | |
*** promach3 has quit IRC | 15:19 | |
*** jevinskie[m] has quit IRC | 15:19 | |
*** disasm[m] has quit IRC | 15:19 | |
*** jryans has quit IRC | 15:19 | |
*** Zguig has quit IRC | 15:19 | |
*** Zguig has joined #litex | 15:20 | |
*** david-sawatzke[m has joined #litex | 15:30 | |
cr1901_modern | _florent_: I'm not sure how to do this in gateware nicely. One solution is software is to change the BIOS to force fake reads from the UART rxtx register until the rx gray counter pointer matches the USB domain's current value | 15:47 |
cr1901_modern | But that's not intuitive/requires a nice big comment | 15:47 |
*** jevinskie[m] has joined #litex | 15:53 | |
*** jryans has joined #litex | 15:53 | |
*** xobs has joined #litex | 15:53 | |
*** sajattack[m] has joined #litex | 15:53 | |
*** promach3 has joined #litex | 15:53 | |
*** leons has joined #litex | 15:53 | |
*** disasm[m] has joined #litex | 15:53 | |
*** CarlFK[m] has joined #litex | 15:53 | |
*** apolkosnik[m] has joined #litex | 15:53 | |
*** Bertl is now known as Bertl_oO | 16:39 | |
*** Zguig has quit IRC | 20:13 | |
*** Zguig has joined #litex | 20:14 | |
*** acathla has quit IRC | 20:14 | |
*** acathla has joined #litex | 20:16 | |
*** tumbleweed has quit IRC | 21:54 | |
*** tumbleweed has joined #litex | 22:11 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!