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
