文件不是由rtems

时间:2016-11-15 07:47:18

标签: linux filesystems sd-card mkdir rtems

我写了一个在Linux上运行的functino在处理数据时在linux上生成一些文件。 我在rtems(一个实时操作系统)中调用了该函数,并且编译好了,并且在很大程度上似乎运行正常。但我发现它无法在speicified目录中创建结果文件(这是一个选项)。 (我使用SD卡作为文件系统)。我有一个我在一年前写的测试程序,我在SD卡上测试文件读取,写入和复制,一切都很好。但是在我通过修改SD卡测试程序并添加更多内容(与深度学习相关)所做的这个新应用程序中,程序无法创建文件。在代码中,它检查一个名为' result'的目录。存在,如果不存在,则生成目录并生成循环索引的文件。我希望有人能找到问题所在。对于linux和rtems,标题都可以。 (rtems具有相同的标题) 文件系统被监视好,mkdir返回0.我尝试从rtems(从运行良好的测试程序)添加一些标题,但它没有工作。可能是什么问题呢?任何帮助或建议表示赞赏。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <sys/stat.h>

lrn_layer(,...)
{
...
if (save_output) {
        if (stat("result", &st) == -1) {
            printf("making directory 'result'..\n");
            #ifdef _RTEMS_
            rtems_status_code status = mkdir("result", 0777);
            printf("mkdir status = %d\n", status);
            #else
            mkdir("result", 0777);
            #endif
        }
        else {
            printf("directory 'result' exists..\n");
        }

        sprintf(str, "./result/L%02d_ReLU_T000_FN%03d.txt", layer, ofm_idx);
        file = fopen(str, "w");
        printf("writing relu result to file %s ..\n", str);
        for (rix = 0; rix < H; rix++) {
            fprintf(file, "### kr = %d ##\n", rix);
            for (cix = 0; cix < W; cix++) {
                fprintf(file, "%f ",*(top+ofm_idx*H*W+rix*W+cix));
                if (cix %8 == 7) fprintf(file, "\n");
            }
        }
        fclose(file);
}
...
}

以下是处理结果的一部分:

---- Layer 1 : ReLU ----
reading inputs from files..
doing ReLu..
making OFM 0 / 96
making directory 'result'..
mkdir status = 0
writing relu result to file ./result/L01_ReLU_T000_FN000.txt ..
making OFM 1 / 96
stat = 0
directory 'result' exists..
writing relu result to file ./result/L01_ReLU_T000_FN001.txt ..
making OFM 2 / 96
stat = 0
directory 'result' exists..
writing relu result to file ./result/L01_ReLU_T000_FN002.txt ..

0 个答案:

没有答案