尝试写入文件末尾,但改写

时间:2019-04-02 02:38:36

标签: c++ fpga sd-card microblaze

我在Basys3开发板上使用Microblaze软处理器。我能够将文本文件写入SD卡,但是我正在尝试写入文件末尾。当前,它会覆盖文件中的所有内容。我正在使用DFATFS函数进行编写。 Basys3连接了PMOD uSD读取器。

我尝试在DFATFS中使用fslseek函数将文件指针移到文件末尾,但它仍会写到开头。

//the subroutine to print to the SD card

void SD(int32_t rando, int addr, int bit, int pc) {
DXSPISDVOL disk(XPAR_PMODSD_0_AXI_LITE_SPI_BASEADDR,
         XPAR_PMODSD_0_AXI_LITE_SDCS_BASEADDR);
   DFILE file;
   int eof;
   char printline[128];
   sprintf(printline, "\nLFSR: %d ", rando);
   // The drive to mount the SD volume to.
   // Options are: "0:", "1:", "2:", "3:", "4:"
   static const char szDriveNbr[] = "0:";

   // Mount the disk
   DFATFS::fsmount(disk, szDriveNbr, 1);

   xil_printf("Disk mounted\r\n");

   fr = file.fsopen("output.txt", FA_WRITE | FA_OPEN_ALWAYS);

   if (fr == FR_OK) {
      file.fslseek(0);
      file.fswrite(printline, 12, &bytesWritten);

      fr = file.fsclose();

   } else {
      xil_printf("Failed to open file to write to\r\n");
   }

}

我希望代码将文件指针移动到文件末尾,并在上一个之后打印新行。单步执行程序时(多次通过打印子例程),但它始终会被覆盖。

0 个答案:

没有答案