I just want to test my understanding. I wrote a small program that fills main memory (DDR) from the PRU over L3. It basically looks like this:
#define addr r8
#define size r9
#define fillword r10
#define count r11
xor r5,r5,r5 // clear a counter to keep track of how many words we have filled
l1:
ST32 fillword, addr // copy the fill word (0xDEADBEEF) to addr
add addr, addr, 4 // point to the next address
add r5, r5, 1 // increment the number of writes counter
sub count, count, 1 // decrement the count of words left
qbne l1, count, 0 // if words left !+ 0, loop and do it again
done:
HALT
Running this little bit, it seems to get stuck at the ST32, with STATUS = 0x00000010 (address of that instruction, which is really an SBBO), and CONTROL = 0x00008003 (which indicates that it is running).
Aside from the fact that there are more efficient ways to do this with PRUv2 (don't have the assembler yet) ... shouldn't this work?
addr = 0x8f240000 (for example - it changes depending on when uio_pruss.ko got loaded).