Acessing SD card without using Sd.h

You can use the SD driver from SdFat to read and write blocks on an SD without a file system.

Here is example code that writes a block then reads it back.

#include <SdFat.h>
const uint8_t CS_PIN = 10;
Sd2Card card;
uint8_t block[512];
uint32_t address = 12345L;
void setup() {
  Serial.begin(9600);
  if (!card.begin(CS_PIN)) Serial.println("begin error");
  
  if (!card.writeBlock(address, block)) Serial.println("write error");

  if (!card.readBlock(address, block)) Serial.println("read error");
  Serial.println("Done!");
}
void loop() {}

The total size of this sketch is about 3,900 bytes, about 2,000 extra bytes for card read/write.

Binary sketch size: 3,888 bytes (of a 32,256 byte maximum)