I am developing hexagon_v3 libraries now and I am confused by its circular addressing mode. It seems the starting address and the destination address of the circular addressing is in the same register in hexagon_v3. I previously working in QDSP5 projects, and there is specific registers to keep the starting address for circular buffers. So I feel suspicious about how circular addressing can be done here. The following is a code snippet of circular addressing from Hexagon_V3 document:
R4.H = #0x0600
R4.L = #150
M0 = R4
R0 = memb(R2++#8:circ(M0))
R2 stores the starting address of the circular buffer, then R2 is incremented by 8 after addressing. So where is the starting address now? Then how can I do circular addressing in a loop? Thanks!
I have got it. The circular addressing in qdsp6 has alignment requirement depending on the length of the circular buffer. So it does not need starting address register.
It seems there is very few threads in this forum. Hope more and more developers will join.
a Hi Fuming ,
I'm working on a QDSP6(hexagon ver5) audio codec project ( Subband module ) . I'm trying to implement a circular buffer of size 576 with the start index of 512. I need to read the data from 512 to 511 circularly via 576 . It's not taking the circular start CS0 or CS1 instruction at all . Pls help me if you are familiar with this section ..
Thanks and regards
Shreyas