cc3200 如何存储用户数据
如标题,3200如何使用内部ROM或者外部flash存储用户数据,数据量比较小,只有几个字节。有没有例程可以提供?
是 file_download 与 file_operations吗?
cc3200的程序是存储在SFlash中的,除了存储程序外,还可以当数据区域来用
可以用文件操作的方式,请参考例程file_operations
Yang:
谢谢你的回复,sl_FsWrite 与 sl_FsRead 函数当中有个_u32 Offset的参数,这个是存储文件地址微调吗?
另外用户是否可以知道文件存放的地址,或者flash中提供用户存储数据的地址范围?还是库自动为用户提供没有使用过的地址,用 long *lFileHandle 进行指向?
此外,file_operations 例程运行ok,但是移植到自己的程序中就有问题,编译后无误
//
// create a user file
//
lRetVal = sl_FsOpen(...);
程序执行后就一直在里面了,不向下走了,请问是什么原因。
请问你是怎么移植的呢?是把整个函数拷贝过去,还是自己写的代码?
能否贴出整块的代码出来。
if(WriteFileToDevice(&Token, &FileHandle) < 0)
{
LOOP_FOREVER();
}
if(ReadFileFromDevice(Token, FileHandle) < 0)
{
LOOP_FOREVER();
}
以及WriteFileToDevice与ReadFileFromDevice函数。
你好,请问你这个问题解决了吗?我也遇到了同样的问题?
你好,这边已经解决了,这里TI的库并不是那么强健,需要小技巧:
首先程序要检测是否存在你所需要的文件: ret = sl_FsGetInfo(filename,0,&fs_info); 查看返回值确定是否存在。
然后就可以放心的去读写了。此外一定要注意,如果是以写的形式打开文件,那么这个文件会被先擦除,等待你的写入,这边是库所决定的,我们用户改不了。
你最后一句话的意思是说:如果用读的形式打开文件会出现文件被擦除等待写入,而不是用写的形式打开文件出现文件会被擦出等待写入?
这里打错了,如果用写的形式打开文件,文件里面原先有的数据都会被清空。也就是说同一个文件想实现连续数据写入的话,需要先读出来放在RAM中,然后把新数据拼接,最后写入。
那也就是说我只是对从中读取文件的话,就用你刚才提到的那个函数先获取该文件的状态,确定存在之后读取就可以了是吧?
你好,这边已经解决了,这里TI的库并不是那么强健,需要小技巧:
首先程序要检测是否存在你所需要的文件: ret = sl_FsGetInfo(filename,0,&fs_info); 查看返回值确定是否存在。
然后就可以放心的去读写了。此外一定要注意,如果是以写的形式打开文件,那么这个文件会被先擦除,等待你的写入,这边是库所决定的,我们用户改不了。
也就是说同一个文件想实现连续数据写入的话,需要先读出来放在RAM中,然后把新数据拼接,最后写入。
对的,文件流程要对,先看是否存在,然后打开文件,读取文件,关闭文件。
可是为什么我调用查看状态信息时没有返回信息呢
比如
lRetVal = sl_FsGetInfo(MY_USER_FILE_NAME,0,&fs_info);
if(lRetVal!=0)
{
Report("the file is not exit\n\r");
}
else
{
Report("the file is exit\n\r");
lRetVal=sl_FsOpen((unsigned char*) MY_USER_FILE_NAME,FS_MODE_OPEN_READ,&ulToken,&lFileHandle);
}
在这里按理说串口会打印其中一条信息,但是运行的时候什么都没有打印,还请指点一二
可能是串口没有被打开,InitTerm函数中有关于串口的初始化,这里需要在IDE中取消宏定义,才会使能串口。
这个问题不存在的,因为我在执行这个函数的前一句打印了一句话,是有显示的,但是到这句的时候什么现象都没有,后面的两句话都没有打印。
就是当我使用file_operation这个例子的时候,也一切正常。但是是当我在另一个自己的工程中添加了fs.h这个头文件,并且使用其中的函数时却出现了以上的情况。
编译的时候也没有错误和警告