TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2640r2f 调用GATT_bm_alloc()函数分配内存,在数据传输中出现很多次申请失败

如题:

以下是调用的函数,出现的次很多,倒至数据通信超时。

uint8_t label_writedata(uint8_t *data, uint8_t len)
{
  // Do a write
  attWriteReq_t req;
  uint8_t status;
  // Allocate GATT write request
  req.pValue = GATT_bm_alloc(connHandle, ATT_WRITE_REQ, len, NULL);//分配内存
  // If successfully allocated
  if (req.pValue != NULL)
  {
    // Fill up request
    req.handle = 0x17;
    req.len = len;
    memcpy(req.pValue, data, len);
    req.sig = 0;
    req.cmd = 1;

    // Send GATT write to controller
    status = GATT_WriteNoRsp(connHandle, &req);//写ble从机
    //status = GATT_WriteLongCharValue(connHandle, &req, selfEntity);
          // If not sucessfully sent
    if ( status != SUCCESS )
    {
      // Free write request as the controller will not
      GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
    }
    else
    {
      Util_restartClock(&startConClock,MR_CONNECT_EVT_PERIOD);//add lhj 191115
    }
  }
  else
  {
    //GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);//del lhj 191202
    status = FAILURE;
     }
   return status;
}

Viki Shi:

你是不是任务较多?CC2640R2F内存不高,尝试降低申请频次是否有改善?

huijun li:

回复 Viki Shi:

GATT_bm_alloc这个函数 ,正常传输数据时是7ms调用一次,发送200个字节,传输时调用的比较频fan.
是不是内存不够啊。能设置大些嘛

Viki Shi:

回复 huijun li:

可以修改heap size

huijun li:

回复 Viki Shi:

heap size 具体是在哪个文件里面啊。

Viki Shi:

回复 huijun li:

参考下面链接:
dev.ti.com/…/memory_management.html
www.ti.com/…/swra537a.pdf

huijun li:

回复 Viki Shi:

好的谢谢了!

huijun li:

回复 Viki Shi:

您好:

    GATT_bm_alloc(),如果调用失败连续很多次都失败,会不会造成死机啊。我在测试发现偶儿会死机,找不到具体原因。只是自己的超时也不起作用了。

huijun li:

回复 Viki Shi:

您好:如果出现死机时,有没有异常函数,程序 会停在异常函数里面嘛。有没有这样的函数啊。

Viki Shi:

回复 huijun li:

你单步调试看看程序停在哪边

huijun li:

回复 Viki Shi:

我们现在的工程改造的仿真不起来,都是通过串品打印信息来判断的。有没有像stm32中一样有异常函数啊

赞(0)
未经允许不得转载:TI中文支持网 » cc2640r2f 调用GATT_bm_alloc()函数分配内存,在数据传输中出现很多次申请失败
分享到: 更多 (0)