This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC2650STK:如何使用大缓冲器?

Guru**** 2611705 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/583122/rtos-cc2650stk-how-can-i-use-big-buffer

器件型号:CC2650STK
Thread 中讨论的其他器件:CC2650

工具/软件:TI-RTOS

大家好、TI 开发团队。

我使用的是主板 CC2650、我们公司制造的是板载产品。

在 SPI nand 闪存中制作电路板、SPI 通信正常(读取公司 ID 和寄存器等)

但我们的读/写页面有问题... 2048的 SPI nand 闪存页面大小。

在声明数组之前、内存已足够。

声明数组'uint8_t flash_buffer[2048];'  

CCS 工程 编译正常、但电路板不工作


在声明可用存储器之前为3463字节。

声明2048byte 可用内存为1415 Byte。


我尝试了很多东西。

1.更改预定义符号'HEAPMGR_SIZE=0 '->'HEAPMGR_SIZE=2100'

2. 更改 app_ble.cfg 文件更改 BIOS.heapSize = 1668 -> 3716

3.更改 app_ble.cfg 文件更改 heapMinParams.size = 1668;-> 3716

4.尝试'Memory_alloc'函数 SYS/BIOS (TI-RTOS 内核) v6.46用户指南'7.7.3 Using the xdc.runtime.Memory Module'  

全部失败。

如何使用大缓冲器?

c source include 中的 CCS 项目  

/*********
*局部变量
*/
uint32_t udAddr = 0;
uint8_t flash_buf[page_data_size]={0、};//编辑 kevin.ko 测试 Nandflash 页大小2048;
//uint8_t * flash_buf;

while (TRUE)//在_taskFxn 任务中...
{
if (file_transfer_Config = ST_CFG_SENSOR_ENABLE)
{
Log_info0 ("file_transfer_TaskFxn");
// for (int i=0;i "flash_buf[%d][%d]",i,flash_buf[i]);="" }="" error_block="" eb;="" flash_buf="Memory_alloc(NULL," 128,="" 0,="" &eb);="" if="" (flash_buf="=" null)="" log_info0("memory="" allocation="" for="" buf1="" failed");="" not="" for(int="" i="0;" i"flash_buf[i]="[0x%02x]",*(flash_buf+i));" memory_free(null,="" flash_buf,="" 512);="" delay_ms(sensor_default_period);="" 

未编译 CCS 工程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    我不知道你想在这里做什么。  是否希望 FLASH_buf[]位于闪存的最后一页?  如果是、您可以尝试以下操作:

    1.声明一个存储器段以进入链接器命令文件 SECTIONS 指令中的 FLASH_LAST_PAGE。  例如:

    #define FLASH_LAST_PAGE_BASE               0x1F000

    部分

      (笑声)

       flash_buf   :   run > flash_last_page_BASE,type = NoLoad

       (笑声)



    2.在.c 文件中、使用#pragma 指令声明缓冲区 flash_buf[]、以将其分配到.flash_buf MEMORY 段中。  例如:

    #pragma DATA_SECTION (flash_buf、".flash_buf")

    /*
     * 将块大小设置为4KB (0x1000)、即上的擦除页大小
     * CC2650。
     *
    #define FLASH_BUF_SIZE 0x1000
    char flash_buf[flash_BUF_size];

    此致、

    Janet