我需要你的帮助!我想将一个文件从SD卡复制到我的ARM Cortex A9的内存中(以便更快地将其传输到FPGA)。但我不知道文件的起始地址和大小。有没有可能找到这些信息?我有一些带有FPGA的exp,但没有mC和ARM =(
非常感谢提前! Djrem
答案 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()
函数会有所不同,具体取决于在您的文件系统驱动程序上。