0

目前,我正在使用 Intel D2000 Quark 板写入 SD 卡。我正在使用标准的 FatFs 系统来建立 FAT16 标准。

问题:每当我写入 SD 卡时,SD 卡只有在文件中有内容时才会保存它。这意味着,我发送的文本将覆盖文件中的内容。当我将读/写指针设置为文件末尾时(这是最终的目标),我写入的数据会丢失。

我的主要:

int main(void)
{
    QM_PRINTF("Starting: SPI\n\n");
    FIL f;
    char text1[512] ="Ik ben makelaar in koffi, en woon op de Lauriergracht No 37.\n "
            "Het is mijn gewoonte niet, romans te schrijven, of zulke dingen, \n"
            "en het heeft dan ook lang geduurd,";
    f_mount(&FatFs, "", 0);
    fr = f_open(&f, "DATA.TXT", FA_OPEN_ALWAYS | FA_WRITE);
    QM_PRINTF("%d\n", (int)fr);
    QM_PRINTF("Size: %d\n", f_size(&f));
    fr = f_write(&f, text1, sizeof(text1), &bw);
    f_sync(&f);
    QM_PRINTF("write: %d count: %d\n", fr, bw);
    QM_PRINTF("Size: %d\n", f_size(&f));
    QM_PRINTF("%d\n", bw);
    fr = f_close(&f);
    f_mount(0,"",0);
    QM_PRINTF("%d\n", fr);
    QM_PRINTF("Finished: SPI\n");
    QM_PRINTF("-----------------------------------\n");
}

当文件中有内容并且读/写指针位于文件开头时,我为控制台获得的结果。此时,数据被写入 SD 卡并保存(当我将 SD 卡放入笔记本电脑并打开文件时,我可以读取它)。

Starting: SPI

0
Size: 3362
write: 0 count: 512
Size: 3362
512
0
Finished: SPI
-----------------------------------

当读/写指针位于文件末尾(FA_OPEN_APPEND)时,我从控制台得到的结果:

Starting: SPI

0
Size: 3362
write: 0 count: 512
Size: 3874
512
0
Finished: SPI
-----------------------------------

之后,当我将 SD 卡放入笔记本电脑时,文本消失了。

有没有人遇到过同样的问题并找到了解决方案。当您需要更多信息时,请询问。

4

0 回答 0