将数据从SD卡复制到ARM上的RAM

时间:2014-04-30 08:53:06

标签: arm cortex-a

我需要你的帮助!我想将一个文件从SD卡复制到我的ARM Cortex A9的内存中(以便更快地将其传输到FPGA)。但我不知道文件的起始地址和大小。有没有可能找到这些信息?我有一些带有FPGA的exp,但没有mC和ARM =(

非常感谢提前! Djrem

1 个答案:

答案 0 :(得分:2)

您将需要一些文件系统层,可以正确解释SD卡的内容。这种卡通常不会用作原始闪存,而是在顶部使用文件系统层,为您提供目录和文件。当在设备之间移动卡时,这当然是必要的,以使其可互操作。

一旦你有了一个文件系统驱动程序,你就可以基本上打开SD卡上的文件进行读取,然后坐在循环中读取一些合适大小的块。对于读入的每个块,只需将其复制到RAM中所需的地址即可。当然,您也可以直接将其读取到正确的地址,跳过副本。

在伪C中,它基本上只是:

FILE *in;

if((in = fopen("sd0:\\file.dat", "rb")) != NULL)
{
  unsigned char *target = (unsigned char *) 0xec008000; /* totally random */
  size_t got;
  while((got = fread(target, 1024, 1, in)) > 0)
  {
    target += got;
  }
  fclose(in);
}

当然,您可能正在使用stdio,因此fopen()fread()fclose()函数会有所不同,具体取决于在您的文件系统驱动程序上。