ATMEL Mega1284P evaluation board avalible

The current version of SdFat can't support multiple SD cards. You could have cards in both sockets and access one at a time by closing all files, and calling sd.init(speed, chipSelect) to switch cards.

I have a development version that mostly works with multiple cards. You can have files open on all cards at the same time.

It uses multiple instances of the SdFat class.

This is what a program that copies a file from one card to another looks like:

#include <SdFat.h>
#include <SdFatUtil.h>
SdFat sd1;
SdFat sd2;
uint8_t buf[100];
void setup() {
  Serial.begin(9600);
  PgmPrintln("type any character to start");
  while (!Serial.available());
  if (!sd1.init(SPI_FULL_SPEED, 10)) {
    PgmPrintln("Sd1:");
    sd1.initErrorHalt();
  }
  if (!sd2.init(SPI_FULL_SPEED, 9)) {
    PgmPrintln("Sd2:");
    sd2.initErrorHalt();
  }
  PgmPrintln("FreeRam: ");
  Serial.println(FreeRam());
  sd1.ls();
  PgmPrintln("-------------");
  sd2.ls();
  SdFile file1;
  sd1.chdir();
  if (!file1.open("TEST.BIN", O_READ)) {
    sd1.errorHalt("file1");
  }
  sd2.chdir();
  SdFile file2;
  if (!file2.open("COPY.BIN", O_WRITE | O_CREAT | O_TRUNC)) {
    sd2.errorHalt("file2");
  }
  uint32_t t = millis();
  while (1) {
    int n = file1.read(buf, sizeof(buf));
    if (n == 0) break;
    if (n < 0) sd1.errorHalt("read1");
    if (file2.write(buf, n) != n) sd2.errorHalt("write2");
  }
  t = millis() - t;
  PgmPrintln("File size: ");
  Serial.println(file2.fileSize());
  PgmPrintln("Copy time: ");
  Serial.print(t);
  PgmPrintln(" millis");
  file2.close();
}
void loop() {}

I may post a beta in a week or two.