于嗟鸠兮 发表于 2017-9-25 15:52:50

CSR8670 内部flash

看了手册,8670内部有16M的flash,这个flash如何使用;我的目的是想把72Kb大小的二进制文件放到8670里,我尝试声明一个72Kb大小的常量的数组,但是发现最多只允许有24Kb的常量空间,这个常量空间可以扩大吗,又是如何扩大;如果不要常量数组,那么内部的flash又该如何使用。

hhyytt 发表于 2017-9-25 22:41:43

放到image文件夹,会打包进去,然后read加载。

于嗟鸠兮 发表于 2017-9-26 11:36:49

hhyytt 发表于 2017-9-25 22:41
放到image文件夹,会打包进去,然后read加载。

感谢大神临场。我还是不太明白,如何read呢?我的应用场景是 需要二进制文件放到8670上,然后再通过8670的i2c写到外围设备上,这个设备掉电数据就会丢失,所以才会采用8670来保存二进制文件。

hhyytt 发表于 2017-9-26 15:16:20

于嗟鸠兮 发表于 2017-9-26 11:36
感谢大神临场。我还是不太明白,如何read呢?我的应用场景是 需要二进制文件放到8670上,然后再通过8670 ...

FILE_INDEX FileFind(FILE_INDEX start, const char *name, uint16 length);
Source StreamFileSource(FILE_INDEX index);

FILE_INDEX index = FileFind( FILE_ROOT, (const char *)kal, strlen(kal) );
Source fp = StreamFileSource(index);
uint8 *address = SourceMap(fp);

干货,赏些金币吧

于嗟鸠兮 发表于 2017-9-26 19:08:34

hhyytt 发表于 2017-9-26 15:16
FILE_INDEX FileFind(FILE_INDEX start, const char *name, uint16 length);
Source StreamFileSource(F ...

大神威武!奈何最多只能打赏30金币。万分感谢

yk0yk 发表于 2017-10-17 11:55:02

谢谢大神分享

于嗟鸠兮 发表于 2017-10-17 22:14:50

hhyytt 发表于 2017-9-26 15:16
FILE_INDEX FileFind(FILE_INDEX start, const char *name, uint16 length);
Source StreamFileSource(F ...

根据您的方法,得到了我想要的结果;但是我在读取image目录下的文件(大小29k)时,只能读取3072个字节,如果在访问下一个字节就会出现“Read from illegal address”的错误;请问:怎么增加它里面的大小呢。

hhyytt 发表于 2017-10-18 16:02:29

于嗟鸠兮 发表于 2017-10-17 22:14
根据您的方法,得到了我想要的结果;但是我在读取image目录下的文件(大小29k)时,只能读取3072个字节, ...

试试uint16 SourceSize(Source source); 返回多少?

应该是一个packet一个packet读取,用下面将读过的扔掉。
void SourceDrop(Source source, uint16 amount);

uint16 SourceBoundary(Source source);这个是packet大小,适当运用这几个函数。

source,sink,stream是ADK的核心操作,然后就是message send/handle,就没有什么深奥的东西了。

于嗟鸠兮 发表于 2017-10-18 19:25:39

hhyytt 发表于 2017-10-18 16:02
试试uint16 SourceSize(Source source); 返回多少?

应该是一个packet一个packet读取,用下面将读过的 ...

谢谢您!我看了一上午的文档,找到了解决方案,这个方案和你说的一样,要调用SourceDrop(...)函数。下面是文档的叙述:
NOTE: There is a strict limit on how big the readable section can grow, so applications should drop data
as soon as possible. Failing to do so eventually chokes off the supply of new data. Even if the
source is a data block in the firmware or the read-only filing system, only a limited amount
(currently about 3 kB) can exist in the application address space at one time.
大神顺便回复一下这个帖子:http://www.52bluetooth.com/thread-37551-1-1.html

Rhino007 发表于 2017-10-27 22:56:24

hhyytt 发表于 2017-9-26 15:16
FILE_INDEX FileFind(FILE_INDEX start, const char *name, uint16 length);
Source StreamFileSource(F ...

绝对有份量的干货,,给赞!
页: [1] 2
查看完整版本: CSR8670 内部flash