This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SIMPLELINK-SDK-WIFI-plugin:CC3120MOD 文件系统读取问题

Guru**** 1818760 points
Other Parts Discussed in Thread: CC3120MOD, CC3120, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1085324/simplelink-sdk-wifi-plugin-cc3120mod-file-system-read-issues

部件号:SIMPLELINK-SDK-WIFI-plugin
“线程”中讨论的其它部件:CC3120MODCC3120UNIFLASHTEST

您好,

我正在使用 MSP432和 CC3120MOD 开展一个项目。

我一直在考虑使用 CC3120上的非易失性存储器来创建一个测试程序,该测试程序将在 MSP432每次从 LPM 唤醒后返回休眠状态时计算在内。

我可以创建并写入文件,这一点很好。 当我通过 uniflash 下载创建的文件时,我可以使用记事本看到 CC3120文件中的文本。

但是,当我从 CC3120读取文件时,文本似乎与文件中的实际内容失真。 例如,如果我使用 Notepad + Uniflash 或 MSP432将“测试 CC3120”写入文件,MSP432输入缓冲区将显示“eesiigg C31120”。 我通过 uniflash 从 CC3120重新下载来确保再次检查该文件,并且该文件正在读取的文件中的文本看起来仍然完全符合要求。

在我的柜台,当我从 MSP432读取 CC3120文件的“00001”时,输入缓冲区显示为“00011”,这完全破坏了我的程序。 我通过再次下载此文件来仔细检查计数器系统是否正常工作,所包含的文本是“00001”。

我认为这是我使用 SL_FsRead()或 SL_FsOpen()的方式上的问题,但我不确定。 我将在下面包括我正在使用的读/写代码。

谢谢,

格雷格

    char*           DeviceFileName = "lpm_count_hex";
    unsigned long   MaxSize = 63 * 1024; // Bytes
    long            DeviceFileHandle = -1;
    char    InputBuffer[50];
    char    OutputBuffer[50];
    long count;

    DeviceFileHandle =  sl_FsOpen((unsigned char *)DeviceFileName,
                                  SL_FS_READ,
                                  NULL);
    sleep(1);
    ret = sl_FsRead( DeviceFileHandle, 0, (unsigned char *)InputBuffer, 50);
    UART_PRINT("%s", InputBuffer);

    count = strtol(InputBuffer, NULL, 10);
    count++;
    sprintf(OutputBuffer, "%05lu", count);

    sleep(1);
    ret = sl_FsClose(DeviceFileHandle, 0, 0, 0);

    sleep(1);
    DeviceFileHandle =  sl_FsOpen((unsigned char *)DeviceFileName,
                                  SL_FS_WRITE,
                                  NULL);
    sleep(1);
    ret = sl_FsWrite(DeviceFileHandle, 0, OutputBuffer, 5);
    sleep(1);
    ret = sl_FsClose(DeviceFileHandle, 0, 0, 0);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很奇怪。

    您是否正在使用“WiFi 插件”? (您是否在 NWP 接口上使用 UART 或 SPI?)

    请验证 SL_FS 函数的返回代码。

    我看到您的顺序以读数开头。 谁在写原始值? (您能否共享代码)。

    如果我理解正确-第13行的日志显示为“00011”(而不是“00001”),对吗?

    因为这不是一个新文件-您可以尝试使用“SL_FS_OVERWRITE”而不是“SL_FS_WRITE”吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Kobi,

    感谢您的回复。

    ) 我正在使用 SPI 作为 MSP432和 CC3120之间的接口。

    2) 对于 SL_FS 函数,据我所知,作为返回,我收到了预期值。SL_FsOpen()总是返回正值,SL_FsWrite()和 SL_FsRed()返回指示函数读/写的字符数。SL_FsClose()总是返回0。 这都是我以前发布的当前代码。

    (第3条) 我尝试了多种方法来写入原始文件,包括:通过 SL_FsOpen()+ SL_FsWrite()使用 MSP432,使用记事本文档,使用十六进制编辑器(HxD64)。 我将在此处附加我一直用于通过 MSP432创建文件的代码。 通过所有这些方法,我可以使用 Uniflash 访问联机文件并确认数据未损坏。 唯一的问题似乎是当 MSP432通过 SL_FsRead()读取文件时。

    4) 是的,如果文件包含“00001”,第13行将打印“00011”。 根据我前面提到的字符测试,我认为其中一些字符被复制到 InputBuffer 中的随机位置,但我不知道为什么。

    (第5条) 我可以给 SL_FS_OVERWRITE 一个快照,但问题似乎不在于写入部分。 程序运行后,我通过 Uniflash 下载了该文件,我看到该文件包含“00012”。 这将是高于“00011”的下一个预期计数,即“00001”的失真版本。 这似乎是按预期进行的。

    格雷格

        char*           DeviceFileName = "lpm_count.txt";
        unsigned long   MaxSize = 63 * 1024; // Bytes
        long            DeviceFileHandle = -1;
        char    InputBuffer[50];
        char    OutputBuffer[50];
        long count;
    
        //create a secure file if not exists and open it for write.
        DeviceFileHandle =  sl_FsOpen((unsigned char *)DeviceFileName,
                                      SL_FS_CREATE | SL_FS_OVERWRITE | SL_FS_CREATE_NOSIGNATURE | SL_FS_CREATE_MAX_SIZE( MaxSize ),
                                      NULL);
    
        sleep(1);
        ret = sl_FsWrite( DeviceFileHandle, Offset, (unsigned char *)"00001",
                            strlen("00001"));
                            
        sleep(1);
        ret = sl_FsClose(DeviceFileHandle, NULL, NULL , 0);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您使用的是 TI 参考板(启动板+启动包)还是定制板?

    您是否已经完成了硬件审查流程(https://www.ti.com/tool/SIMPLELINK-WIFI-DESIGN-REVIEWS)?