Current Server Time: 18:51 (Central Europe)

#apertus IRC Channel Logs

2020/11/25

Timezone: UTC


01:01
mumptai
left the channel
05:02
Bertl_oO
off to bed now ... have a good one everyone!
05:02
Bertl_oO
changed nick to: Bertl_zZ
07:00
LordVan
joined the channel
07:44
BAndiT1983|away
changed nick to: BAndiT1983
09:31
Bertl_zZ
changed nick to: Bertl
09:32
Bertl
morning folks!
09:52
EmilJ
Morning!
09:53
EmilJ
Sorry for disappearing for a bit. Had to catch up with school
09:54
EmilJ
The past few weeks I've been mostly passively reading up on AXI spec and DDR spec and the Zynq 7000 DDR controller, because I wanted to get to the bottom of why my framebuffer wasn't working. Now I think I have a good concept of just how naive the FIFO feeding was
09:55
vup
EmilJ: hi, welcome back
09:55
vup
in the meantime anuejn built a working linux framebuffer :)
09:55
EmilJ
BTW Bertl those are some fine solid copper bodges
09:55
EmilJ
Yeah, I checked my pings - wait, outright a linux framebuffer? As in a proper video driver renders stuff to it?
09:55
EmilJ
also hi vup
09:56
Bertl
EmilJ: tx!
09:56
vup
not really a video driver, but more the normal linux framebuffer subsystem
09:56
vup
so you can get a tty on it
09:56
vup
(linux has a generic memory mapped framebuffer driver)
09:58
EmilJ
I see - so far I know little about linux. It's a gaping hole between my experiences of {working with RTOS and writing a trivial filesystem for a school project} and {running Debian}... I need to fix that
09:58
EmilJ
https://wiki.osdev.org/Printing_To_Screen
09:58
EmilJ
is this what you are referring to?
09:59
EmilJ
> The text screen video memory for colour monitors resides at 0xB8000
09:59
vup
no
09:59
vup
this: https://en.wikipedia.org/wiki/Linux_framebuffer
09:59
Bertl
EmilJ: LOL, nice find
09:59
vup
using this: https://www.kernel.org/doc/Documentation/devicetree/bindings/display/simple-framebuffer.txt
10:09
EmilJ
hmm, just checking: stride can be defined to be larger than size of format multiplied by width for DMA alignment or multi-resolution buffer reasons?
10:14
vup
yes, I would assume so
11:20
BAndiT1983
changed nick to: BAndiT1983|away
12:44
BAndiT1983|away
changed nick to: BAndiT1983
13:03
EmilJ
interesting, the AXI reader doesn't do bursts, I'm surprised. I think this would waste AXI and block the processor from accessing RAM via the DDR controller interface a lot - I'm working on figuring out to what degree this might be a problem to figure out just how many AXI clocks are going to have to be burned on bridges, interconnects, DDR controller arbitration, and actual DDR latency
13:05
Bertl
well, the AXI reader used in the Axiom Beta does do burst reads but IIRC, vup/anuejn implemented their version without bursts after doing some benchmarks and getting comparable performance
13:11
EmilJ
I'd love to hear about that setup
13:13
vup
we only did extensive testing for the writer iirc, where the main difference was not doing out of order transactions ie only submitting a new address after having written the burst
13:14
vup
this runs at a efficiency of nearly equal to the optimal efficiency ((16 data cycles) / (16 data cycles + 1 address cycle)) ~ 94`
13:15
vup
the reader actually submits addresses in parallel to receiving data, so the ddr controller can do a lot of pipelining
13:16
vup
you have to consider, that the zynq side has a large fifo and probably quite sophisticated transaction combining / pipelining / etc logic
13:21
EmilJ
So you're saying that doing a lot of single AXIword transactions right one after each other is nearly equivalent to bursts, when writing to DDR? Reads should behave the same, there's no major fundamental difference right
13:22
vup
EmilJ: I don't think we tested single word transactions for the writer, atleast I cannot recall the results
13:23
EmilJ
then what was being compared to what? I thought you were comparing burst length 1 to burst length >1
13:23
vup
EmilJ: for the writer we were comparing sending the address independent from the data vs first sending the address and then all the data, before sending the next address
13:24
vup
(for writing)
13:26
EmilJ
Ah, okay - so you were delaying WVALID in a burst transaction
13:29
vup
kind of
13:30
vup
https://github.com/apertus-open-source-cinema/nmigen-gateware/blob/7370da1409d3532774fce4797d5e759a075bd7d2/src/lib/bus/axi/buffer_writer.py
13:30
vup
it was just
13:30
vup
1. do a address transaction
13:30
vup
2. send the data burst
13:30
vup
repeta
13:30
vup
*repeat
14:15
BAndiT1983
changed nick to: BAndiT1983|away
14:21
comradekingu
joined the channel
14:35
anuejn
EmilJ: the axi reader currently doesnt do bursts mainly because of lazyness
14:36
anuejn
implementing that would not be too hard (just implement a "burster" core on top of the curent reader)
14:36
anuejn
we didnt do any benchmarking before doning design decisions on the reader
14:36
EmilJ
yeah that's what I was thinking I might do so I actually finally contribute something lol
14:37
anuejn
:)
14:37
EmilJ
so a FIFO with a timeout should get us there right
14:39
EmilJ
by the way I'm confused about how the AXI reader has an output payload (that one ends up being None in the image_stream case right) as well as output out_of_band_signals
14:55
BAndiT1983|away
changed nick to: BAndiT1983
15:51
Bertl
off for now ... bbl
15:51
Bertl
changed nick to: Bertl_oO
18:10
mumptai
joined the channel
21:44
BAndiT1983
changed nick to: BAndiT1983|away
22:16
danieel
left the channel
22:26
danieel
joined the channel