Maximus32
Developer
@Takeshi
More speed, more possibilities I guess. It's about the same speed as the IOP itself, lol. So perhaps we can offload bit reversal and crc. But every feature has to be programmed, and I'm a little sceptical about the 1 day time it takes to program a uC.
@wisi
I've been experimenting with https://github.com/Krasutski/sdcard_spi_driver driver inside sio2sd_bd the last couple of days. I can see it do interesting things that result in perhaps better SD card compatibility. The initialization sequence gets completed and seems more stable than what's in the current driver, but I cannot get it to read data yet (even at low clock speeds, still returns only 0xFF).
I've connected the read/write function calls from the library to the 'sendCmd' function. That seems to work (I know it will be slow, for now). But this library also uses the CS/SS line a lot, by calling _io->select() and _io->relese(). Then each time flushing a single byte read/write, like so:
Do you know if we can do this with the sio2 also? Or should I try to completely remove all chip/slave-selecting code?
More speed, more possibilities I guess. It's about the same speed as the IOP itself, lol. So perhaps we can offload bit reversal and crc. But every feature has to be programmed, and I'm a little sceptical about the 1 day time it takes to program a uC.
@wisi
I've been experimenting with https://github.com/Krasutski/sdcard_spi_driver driver inside sio2sd_bd the last couple of days. I can see it do interesting things that result in perhaps better SD card compatibility. The initialization sequence gets completed and seems more stable than what's in the current driver, but I cannot get it to read data yet (even at low clock speeds, still returns only 0xFF).
I've connected the read/write function calls from the library to the 'sendCmd' function. That seems to work (I know it will be slow, for now). But this library also uses the CS/SS line a lot, by calling _io->select() and _io->relese(). Then each time flushing a single byte read/write, like so:
Code:
/* Dummy byte and chip enable */
_io->wr_rd_byte(DUMMY_BYTE);
_io->select();
// do stuff...
/* Chip disable and dummy byte */
_io->relese();
_io->wr_rd_byte(DUMMY_BYTE);