微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310 存储少量数据

CC1310 存储少量数据

时间:12-23 整理:3721RD 点击:

Hi,all

 最近需要永久存储一些网络的基本配置数据在CC1310中,存放的数据量少(几十个字节左右),

1.最好的解决方法是不是存储在flash中?

2.如果存储在flash中,是不是需要在flash中单独开辟一个存储数据的区域,剩余的区域存放代码?

3.我在contiki编译生成的map文件中看到有一块内存是FLASH_CCFG占88个字节,在flash的最后区域。这块区域可以直接用来存放数据吗?

map文件内容

Memory Configuration

Name             Origin             Length             Attributes
FLASH            0x00000000         0x0001ffa8         xr
FLASH_CCFG       0x0001ffa8         0x00000058         xr
SRAM             0x20000000         0x00005000         xrw
GPRAM            0x11000000         0x00002000         xrw
*default*        0x00000000         0xffffffff

1.是的。放在flash比较好

2和3 的问题在论坛上有人做过了,其中一个参考是:

http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/121310.aspx

非常感谢你的回答。是的,这些贴子我已经看过了,也在rtos上实现了,但是无法对flash后面(124k--128k)的内容进行写操作,也就是后面的4kb不能够写数据

刚才看了手册CCFG一章,88字节的空间不应该修改。我想尽可能的扩大程序的存储,尽量让数据存在后面。

是不是需要修改SECTION的配置?是不是需要在flash中开辟新的区域来存放数据?

SECTIONS
{
    .text           :   > FLASH
    .const          :   > FLASH
    .constdata      :   > FLASH
    .rodata         :   > FLASH
    .cinit          :   > FLASH
    .pinit          :   > FLASH
    .init_array     :   > FLASH
    .emb_text       :   > FLASH
    .ccfg           :   > FLASH (HIGH)

#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
    .TI.ramfunc     : {} load=FLASH, run=SRAM, table(BINIT)
#endif
#endif
    .data           :   > SRAM
    .bss            :   > SRAM
    .sysmem         :   > SRAM
    .stack          :   > SRAM (HIGH)
    .nonretenvar    :   > SRAM
}

附件里面是代码

我刚才找到原因在哪了,代码中FlashSectorErase()函数的操作地址只允许在000000------0x001f000

嗨,

调用FlashProgram函数能够将数据写入,但是下次刷写不同的程序时又会恢复到默认的FF值,

请问我该调用怎么样的API,有需要哪样的设置才能够有将程序和数据分开存放,这样下次烧写程序时就不会改变已经配置好的数据?

 因为flash 的擦除和写入都是以page(4K)为单位的,如果程序烧入和你存的数据在同一个page,那肯定会把你存的数据覆盖掉,你可以尝试从最远离code的地址存一个数据,两个数据。。。。慢慢存进去,看什么时候数据被擦除

我试过在page31 0x001ff00处存放8byte的数据,但还是被擦除了,不清楚是什么原因

FLASH orign=0x00000000 length=0x0001f000

在page1 0x00000000 开始存放8byte的数据试试看

我知道怎么解决了,我的想法是先在contiki/cc26xx-cc13xx的cc26xx.ld文件中定义FLASH(RX):ORIDGIN =0x00000000,LENGTH=0x0001F000

这样保证程序都映射到这块区域。然后我在SmartRF Flash Programmer 2中设置只擦除特殊的页0-30,剩下的第31页选择跳过。这样就留出了单独的一

个数据区域,不会受到刷写程序的影响。这样达到了数据存储的功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top