SD Interface (4-Wire and SD-over-SPI)
The C0-microSD presents itself to the host as a standard SD block-storage device and carries MMIO transactions over the SD bus.
Block read/write, not SDIO
All communication is achieved through host-initiated block read and write operations to specific offsets, the same operations a host uses for any SD card. It is not the SDIO extension of the SD standard. Because the module looks like an ordinary SD block device, no additional host drivers are required: any OS that supports the standard SD protocol can talk to it.
When connected, the C0-microSD enumerates as an unformatted block device of ~20.2 MB (19.3 MiB).
The host must not format the C0-microSD; formatting corrupts the on-device layout.
Electrical modes
The C0-microSD supports two electrical modes, so the same module works with both high-end hosts and low-cost microcontrollers:
- SD 4-wire: the standard 4-bit SD data bus, used by SD hosts, card readers, and single-board computers.
- SD-over-SPI: the SPI-mode fallback of the SD standard, for easy integration with low-cost microcontrollers that expose an SPI peripheral.
A host using SD over SPI transfers 512 bytes at a time, which matters when it writes the flash in Bootloader mode. The module writes its flash in whole 4 KiB sectors, so such a host must group eight transfers into each sector. See Write and Erase Semantics.
Carrying MMIO over SD
The host reads and writes the module's MMIO registers and data buffers at defined block
offsets. The host-side offsets differ from the SoC-side memory addresses;
Host Interface and Protocol
documents both, along with a worked example of reading and writing the command register
from a C host application over SD.
Next steps
- MMIO Interfacing Model, the register and buffer model that these block transfers carry.
- Compatibility, the SD host controllers and platforms tested with the module.
- Host OS support, what raw block-device access requires on each operating system.