我在 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");
}
}
我希望代码将文件指针移动到文件末尾并在前一行之后打印一个新行。当单步执行程序时(多次通过打印子例程),但它总是覆盖。