CC2640中的FLASH可以用来保存配置信息吗
各位好,
我又来问问题了。
用于项目需要,需要保存一些配置参数,我看到文档中提到了CCA区,但是我的参数并不是CCFG中的参数,
Q1:请问:有没有一块FLASH区域用于保存我的参数呢?
Q2:关于CCFG的参数,我看到了ccfg.c,有没有相关的说明性的文档。
Frank Mei ,
Q1. 有的。但不是CCFG, 是SNV。在你的SDK安装目录下面,docs目录下找到 SWRU393_CC2640_BLE_Software_Developer's_Guide.pdf,里面的“3.10.3 Using Simple NV for Flash Storage”就是你要的。
Q2. 在TRM文档第9.1章:http://www.ti.com/lit/ug/swcu117f/swcu117f.pdf “9.1 Customer Configuration (CCFG) ”
Hi Y,
谢谢你,你的指点很关键。可以使用了。
顺便问一句,只给用户留下16Byte的空间么?
ccfg映射到flash最后的几十字节。
Frank Mei,
总共最大有2个page,8KB的flash用来存放数据,能用的是4KB,另外4KB是用来做flash swap的。刨去bonding manager之类要用掉的大概521B,你能存放数据的空间就是4KB-512B。
用4K还是8K你可以自己配置,你可以看一下 development guide里面的 3.10.3 Using Simple NV for Flash Storage。
Hi Y,
您好!文档我看到了。我的疑问是这样的:
程序中对FLASH的读写是基于NV ID,目前 custom‘s NV IDs定义了16个(0x80~0x8F),
每个NV ID 可读写的空间是多少?难道是 (4K-512B)/16 吗?
Frank Mei,
不是的。这个有点抽象了。
ID只是ID,并没有一定和某个flash的地址绑定在一起。每个ID对应的flash长度可以是不一样的。当然,NV的起始地址是定好的,这个osal_snv_的函数都已经给你做好了,调用osal_snv_的函数是不会去其他flash地址操作的。你可以认为每一个ID的开始的flash空间,会写一个header(NV item header),这个header里面就保存着一些信息,包括ID和这个ID后面对应的长度。
你只要记住用法就行。
Hi Y,
谢谢你的解答啦!我明白了,记住用法就好了。
Hi Y:
在SimpleBLEMulti工程中看到OSAL_SNV=0,被禁用了,我想在该工程中存入很少的数据有什么办法吗?
xiaxiaofei,
很不幸,目前的芯片版本可能做不到,multi role需要较大flash,所以只能牺牲SNV。
请问,除了使用Flash中的SNV,不能自己定义一个或者几个Flash Page来存储用户数据吗?