Hi, there's a post about this on our forum:
https://forum.bela.io/d/20-pru-vs-mcaspHere's an excerpt:
"Bela uses both the McASP and the PRU. The McASP actually streams the data to the codec, but the PRU handles passing data to and from it, as a sort of sophisticated DMA controller. We use the PRU here because it can also do SPI transactions with the other ADC and DAC and it can sample the GPIOs, all aligned on a sample-by-sample basis with the audio clock. The PRU then puts the results in a memory buffer for the CPU to work with.
To take any advantage of that, you need a Xenomai kernel, because this lets you write audio code that can interrupt the entire rest of the OS. If you don't have this, then you're stuck with the timing uncertainty that regular Linux provides, meaning you need larger buffer sizes (= longer latency). It also means that audio performance may depend on system load, which is not true of Xenomai (rather the reverse: rest-of-system performance depends on audio load)."