打印

关于cc2540的FLASH使用

[复制链接]
7958|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 e08610318 于 2014-3-26 14:54 编辑

我想使用CC2540做蓝牙开发的朋友,不少会接触到大数据量的存储。
那么cc2540F256所包含的128page,每个page有2k的空间的确使人有较充实的满足感。
使用Hal层的FLASH操作函数有些不便之处,因此看到了OSAL的SNV,眼睛一亮。但是后来发现,snv满足不了我的需求,在TI官网苦苦寻找,才发现默认情况下,SNV只使用2个page,区区两个page,才4k,而且BLE还占用其中,更有网友表示我只存了524个字节就存不了。对于我希望存储十几K甚至几十K的来说,更别提了。我尝试过修改SNV占用的Page数量,发现放不下,查了下编译提示:

the moment of placement the available memory ranges were "CODE:7e800-7f7ff"
   Reserved ranges relevant to this placement:
   CODE:7e800-7f7ff     BLENV_ADDRESS_SPACE
   BIT:0-7              BREG
   BIT:80-97            SFR_AN
   BIT:a0-af            SFR_AN
   BIT:b8-c7            SFR_AN
   BIT:e8-ef            SFR_AN
Error while running Linker

然后:

#pragma location="BLENV_ADDRESS_SPACE"
__no_init uint8 _nvBuf[OSAL_NV_PAGES_USED * OSAL_NV_PAGE_SIZE];
#pragma required=_nvBuf
#endif // OAD_KEEP_NV_PAGES

似乎NV都是在指定的某个区域去定义一个数组的:'(。,但是,SNV起始页和结束页是125和126,那么指定的这个区域是否与之对应呢?从这里来看:CODE:7e800-7f7ff,  BLENV_ADDRESS_SPACE 是4K,刚好2page,应该表示实际的物理地址,而且和125、126应该是对应的,但是7e800关看这个数就很大,一般都是4位的,怎么理解?BLENV_ADDRESS_SPACE 怎么改?现在snv只能用来存储少量数据。

查过下资料,默认程序代码存在BANK0(可以设置),那就是page0~15。

QQ截图20140326143146.png (22.55 KB )

QQ截图20140326143146.png

相关帖子

沙发
dirtwillfly| | 2014-3-26 15:29 | 只看该作者
没玩过,帮顶

使用特权

评论回复
板凳
e08610318|  楼主 | 2014-3-27 09:11 | 只看该作者
看了下snv的代码后,发现snv实际最多只能存2K!而不是4K,而且不能通过修改宏定义实现snv的flash容量扩充,因为2个page中,1个page用来实际存储数据,另外一个page相当于用来做镜像的,要想扩容,可能只能自己操作底层函数了,而且要自己设计一些算法实现FLASH数据的组织。

使用特权

评论回复
地板
lwm1368| | 2015-10-31 09:02 | 只看该作者
SNV本来就没打算让你存很多的数据,如果真的要存十几K、几十K,那还是使用外接存储吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

粉丝