1-bit mode SDCard(slot=3): >>> import sdtest ['long_file.bin'] 1056 KB in 752 ms => 1404 KB/s file read 4096 KB in 2746 ms => 1491 KB/s raw sector read 4-bit mode SDCard(): >>> import sdtest ['long_file.bin'] 1056 KB in 492 ms => 2146 KB/s file read 4096 KB in 1777 ms => 2305 KB/s raw sector read
It is not difficult to be faster than a 1980 MFM hard drive. For example the ST506, which is similar to the disks on the mini-computers of the late 70's. The track-to-track seek time was ~5ms (3ms step + 15ms settle) and there were a lot of track seeks happening. The main s/w optimisation was to sort the pending disk accesses by track, to minimise the seeking. The data rate was 5Mb/s = 625KB/s. The SD Card will not be the bottleneck, and even with the SPI_IDE bridge it will be about the same.
Many thanks for the testing & measuring - much, much appreciated!
from machine import freq freq(240*1000*1000) # 80/160/240 MHz, faster CPU = faster SD card
More fun with audio + ULX:
Also saw this VHDL encoder for HDMI video + audio, I noticed you had a fork for this @emard but from a few years ago. Did you have success with this on the ULX?
I'll run it through GHDL + yosys at some point, HDMI video/audio is ideal and the interface on that module looks pretty much the same as the one I currently use , but with bonus audio
For the mini-Cortex I have the IDE emulation working - it can now load the 2nd stage boot loader from disk and that stage can load the kernel from disk. Haven't done the MMU yet, so there is where it currently stops. @emard In your OSD code you have this:
self.irq_handler(0) self.irq_handler_ref = self.irq_handler # allocation happens here self.spi_request = Pin(0, Pin.IN, Pin.PULL_UP) self.spi_request.irq(trigger=Pin.IRQ_FALLING, handler=self.irq_handler_ref)
Why is that necessary? It (Pin.irq) seems to work for me with just giving the function name as handler.