cc3200 外部flash 文件操作
时间:10-02
整理:3721RD
点击:
大家好:
我在使用3200的外部flash的时候,想要实现文件的追加功能,sl_FsWrite函数的第二个参数是偏移量,我先用 sl_FsGetInfo 得到了文件长度,sl_FsWrite的第二个参数设置成得到的长度,我使用串口输出读到的数据个数是正确的,可是串口只能输出最后一次写入的字符串.
char FileWrite(char *fileName,uint32_t *ulToken,char *data, uint16_t dataLen){ long lRetVal = -1; long lFileHandle; SlFsFileInfo_t pFsFileInfo; uint32_t ulToken_t = 0; lRetVal = sl_FsGetInfo((uint8_t*)fileName, ulToken_t, &pFsFileInfo); if(lRetVal!=0) { Report("the file is not exit\n\r"); } else { Report("the file is exit\n\r"); } Report("pFsFileInfo.AllocatedLen:%d\n\r",pFsFileInfo.AllocatedLen); Report("pFsFileInfo.FileLen:%d\n\r",pFsFileInfo.FileLen); lRetVal = sl_FsOpen((uint8_t *)fileName,FS_MODE_OPEN_WRITE,ulToken,&lFileHandle); if (lRetVal < 0){UART_PRINT("sl_FsWrite is error \n\r");lRetVal = sl_FsClose(lFileHandle, 0, 0, 0); } } if(pFsFileInfo.FileLen >= 20){ pFsFileInfo.FileLen = 0; } lRetVal = sl_FsWrite(lFileHandle, pFsFileInfo.FileLen/*偏移*/,(uint8_t *)data,dataLen); if (lRetVal < 0){UART_PRINT("sl_FsWrite is error \n\r");lRetVal = sl_FsClose(lFileHandle, 0, 0, 0); } lRetVal = sl_FsClose(lFileHandle, 0, 0, 0); if (SL_RET_CODE_OK != lRetVal) { UART_PRINT("sl_FsClose is error \r\n"); } return SUCCESS; }
就没有遇见过这个问题的吗? 提过几个问题都没有人回答 这是怎么回事? TI大神们 冒个泡啊
Kafei 你好,
CC3200文件系统不支持文件追加功能,如果你要追加内容,需要每次擦除然后写入整个文件。你可以参看下面的帖子,希望对你有所帮助,谢谢!
https://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc31xx_cc32xx/f/968/t/353080