Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Chan'中写入的字节数是否有任何限制;什么是FAT文件系统模块?_C_Filesystems_Embedded_Sd Card_Cortex M - Fatal编程技术网

在Chan'中写入的字节数是否有任何限制;什么是FAT文件系统模块?

在Chan'中写入的字节数是否有任何限制;什么是FAT文件系统模块?,c,filesystems,embedded,sd-card,cortex-m,C,Filesystems,Embedded,Sd Card,Cortex M,我使用的是ARM Cortex-M7(ATMEL处理器)whit,在编写非倍增字节量为扇区大小默认值(512字节)的文件时遇到问题 在循环之后,我使用f_write()函数以不同长度的字节(不是多个扇区大小的默认值)写入文件,一些字符出现错误 以下是写作的主要部分: f_open(&FileObject, filename_aux, FA_CREATE_ALWAYS | FA_WRITE); do {

我使用的是ARM Cortex-M7(ATMEL处理器)whit,在编写非倍增字节量为扇区大小默认值(512字节)的文件时遇到问题

在循环之后,我使用f_write()函数以不同长度的字节(不是多个扇区大小的默认值)写入文件,一些字符出现错误

以下是写作的主要部分:

            f_open(&FileObject, filename_aux, FA_CREATE_ALWAYS | FA_WRITE);
            do
            {
                len = getAviableData(buf);

                f_write(&FileObject, , buf, len, (UINT*)&ByteWritten);

                total += len;

            }while(total < MAX_LEN)
            f_close(&FileObject);
f_open(&FileObject,filename_aux,FA_CREATE_ALWAYS | FA_WRITE);
做
{
len=getAviableData(buf);
f_write(和FileObject、buf、len、(UINT*)和bytewrite);
总+=len;
}而(总数<最大值)
f_关闭(&FileObject);
当我将它写入另一个没有文件系统的内存时,我没有任何问题

谢谢。

这里有一个解决方案:

f_open(&FileObject, filename_aux, FA_CREATE_ALWAYS | FA_WRITE);
do
{
        /* Cache Maintenance */
        SCB_CleanDCache_by_Addr((uint32_t *)buf, BUF_MAX_SIZE);

        len = getAviableData(buf);

        f_write(&FileObject, buf, len, (UINT*)&ByteWritten);

        /* Data Memory Barrier */
        __DMB();

        total += ByteWritten;

}while(total < MAX_LEN)
f_close(&FileObject);
f_open(&FileObject,filename_aux,FA_CREATE_ALWAYS | FA_WRITE);
做
{
/*缓存维护*/
按地址((uint32 t*)基本尺寸、基本尺寸和最大尺寸)列出的SCB清洁缓存;
len=getAviableData(buf);
f_write(和FileObject、buf、len、(UINT*)和bytewrite);
/*数据存储屏障*/
__DMB();
总计+=字节写入;
}而(总数<最大值)
f_关闭(&FileObject);
注意,我添加了DCache维护和数据内存屏障

文件现在已正确写入,没有错误


谢谢。

你做错了什么。FATfs适用于“常规”文件大小IME。应为“total+=len;”不能是'total+=字节写入;'?FafFs没有定义特定于目标的I/O驱动程序——我想说的是,根本不清楚这不是问题所在。什么版本?谁提供了I/O层(或者你自己写的)?您使用的是SPI还是SDIO?Cortex-M标签没有帮助;,这是一个外围I/O问题,而不是ARM核心问题-实际目标是什么?这也没有帮助,因为thsi不是“真实”代码-
f_write()
调用在语法上不正确(额外的逗号),因此显然不是您正在运行的代码。@Clifford IME,如果FATfs下面的“512”IO驱动程序不能正常工作,您甚至无法安装驱动器。