Maybe just tie it to to the P2 reset pin? If the P2 reset pin is like the P1 reset pin, that'd reset on power-up, brownout and external reset. Software reset would have to reset the eMMC in software though (is that even possible?)
which is sampling the rx pin containing the old data byte. New data byte appears after the loop exits. Which in turn is picked up by your posted BlockByteLoop3 loop. And it continues picking up the old/prior bytes - same as my suggestion above - but it clocks one too many as a result.
Comments
[ Moved from emulation topic - https://forums.parallax.com/discussion/comment/1539903/#Comment_1539903 ]
Maybe optimistic there Rayman. Inner loop is sysclock/14:
28 MBytes/s, without overheads, would need sysclock of 411 MHz.
BTW: It wouldn't take much to tighten that loop to sysclock/8. Something like:
Hmm... Been a while, not sure how I messed that up...
Maybe I never posted the fast version...
Just looked and the inner assembly loop is like this:
Ah, that's writing the flash, not reading. Err, no. But that won't work as is. Not enough lag compensation. Or it might just, at slowest sysclocks.
Oh, I see what's going on, you're clocking 513 bytes, which likely doesn't hurt. It starts with this:
which is sampling the rx pin containing the old data byte. New data byte appears after the loop exits. Which in turn is picked up by your posted BlockByteLoop3 loop. And it continues picking up the old/prior bytes - same as my suggestion above - but it clocks one too many as a result.
A comment in the code says:
' 04JUN20: Multi-block read speed up to 28 MB/s with 300 MHz clock
Yep, sysclock/10 is close to best. You should be able to do this:
To do any better than sysclock/8 requires frequency calibration. Like what gets done with the PSRAMs.