FIFO RDFAST block size
__deets__
Posts: 203
In my attempt at improving SD-card performance through multi block writes I encountered the rdfast and rfbyte instructions. According to the PASM2 manual:
RDFAST {#}D,{#}S
Begin new fast hub read via FIFO. D[31] = no wait, D[13:0] = block size in 64-byte units (0 = max), S[19:0] = block start address.
As the current code always writes 512 bytes, it could use D[13:0] = 4 I guess? It instead uses 0, which if my understanding is correct would mean 16K blocks a 64 bytes, or 1MB. So always more than the current memory of 512KB available. Is this correct? Or maybe to rephrase the question: why would I ever write anything but 0 in there, given that I can apparently just reschedule any time?
Comments
I'm not entirely sure what the point of FIFO wrapping is, either.
If you're doing video with the streamer, I guess you could use it to have the FIFO run through a wrapping line buffer autonomously. Though you'd still need to continually issue streamer commands, at which point you might as well do a non-blocking FIFO restart.
Ok, so it wraps around. That at least is interesting I guess. Makes implementing a ringbuffer easier (while limiting oneself to just one of course).
A simple example: a function generator. Keep the waveform in the hub, program the streamer once, let it be generated.