Code:
s32i %0, %2, 0
s32i %0, %2, 4
s32i %0, %2, 8
s32i %0, %2, 12
...
Code:
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
...
mculibrk wrote:
reading the FIFO register (or GPIO) is "constantly slow" - 12 cycles for a single l32i read instruction
Statistics: Posted by jcmvbkbc — Mon Apr 27, 2015 11:43 am
Code:
s32i %0, %2, 0
s32i %0, %2, 4
s32i %0, %2, 8
s32i %0, %2, 12
...
Code:
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
s32i %0, %2, 0
...
Statistics: Posted by mculibrk — Mon Apr 27, 2015 10:48 am
Code:
"l32i.n %0, %2, 0 \r\n"
"s32i.n %0, %3, 0 \r\n"
Code:
"l32i.n %0, %3, 0 \r\n"
"l32i.n %1, %3, 4 \r\n"
"s32i.n %0, %4, 0 \r\n"
"s32i.n %1, %4, 4 \r\n"
Statistics: Posted by jcmvbkbc — Mon Apr 27, 2015 10:06 am
Code:
uint32 spiFIFO[16];
asm volatile (
"l32i.n %0, %2, 0 \r\n" // this is here to preload the registers with correct address so to count only cycles needed to actually transfer data from RAM to FIFO
"l32i.n %0, %3, 0 \r\n"
"rsr.ccount %1 \r\n"
"l32i.n %0, %2, 0 \r\n" // this line and
"s32i.n %0, %3, 0 \r\n" // this one are a "move pair", moving one DWORD from RAM to FIFO
"l32i.n %0, %2, 4 \r\n"
"s32i.n %0, %3, 4 \r\n"
"l32i.n %0, %2, 8 \r\n"
"s32i.n %0, %3, 8 \r\n"
"l32i.n %0, %2, 12 \r\n"
"s32i.n %0, %3, 12 \r\n"
... // "pairs" are repeated for various tests
"rsr.ccount %0 \r\n"
"sub %1, %0, %1 \r\n"
: "=&r"(data),"=&r"(tmr):"r"(spiFIFO),"r"(SPI_W0(ESP_SPI_HSPI)));
Statistics: Posted by mculibrk — Mon Apr 27, 2015 3:12 am