找回密码
 立即注册

微信扫码登录

查看: 352|回复: 1

8258 ev_buf_allocate用法

[复制链接]

1

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-8-18 13:10:59 | 显示全部楼层 |阅读模式
需要创建一个200节点左右的链表,每个节点使用ev_buf_allocate大小为10字节。
当申请到第24个节点的时候,使用ev_buf_allocate申请失败,返回null。
请问有什么办法合理使用ev_buf_allocate来维护这样一个链表?修改ev buf相关的宏定义吗?
如果使用200个数量,总大小共计2k的全局数组,是否会产生问题?



27

主题

91

回帖

373

积分

版主

积分
373
发表于 2024-8-19 19:44:14 | 显示全部楼层
本帖最后由 TL_YB 于 2024-8-19 20:07 编辑

1、8258的ram大小是64k,这主要取决于你当前的应用剩余ram空间是否足够,如果足够的话是可以定义2k的全局数组来实现的。
2、SDK中的ev_buffer实际上也是数组,在ev_buffer.h/c中定义如下:

  1. #define BUFFER_GROUP_0       24
  2. #define BUFFER_GROUP_1       60
  3. #define BUFFER_GROUP_2       152
  4. #define BUFFER_GROUP_3       512

  5. #define BUFFER_NUM_IN_GROUP0   8
  6. #define BUFFER_NUM_IN_GROUP1   8
  7. #define BUFFER_NUM_IN_GROUP2   8
  8. #define BUFFER_NUM_IN_GROUP3   2

  9. #define SMALL_BUFFER           (BUFFER_GROUP_0 - 8)
  10. #define LARGE_BUFFER           (BUFFER_GROUP_3 - 8)

  11. MEMPOOL_DECLARE(size_0_pool, size_0_mem, BUFFER_GROUP_0, BUFFER_NUM_IN_GROUP0);
  12. MEMPOOL_DECLARE(size_1_pool, size_1_mem, BUFFER_GROUP_1, BUFFER_NUM_IN_GROUP1);
  13. MEMPOOL_DECLARE(size_2_pool, size_2_mem, BUFFER_GROUP_2, BUFFER_NUM_IN_GROUP2);
  14. MEMPOOL_DECLARE(size_3_pool, size_3_mem, BUFFER_GROUP_3, BUFFER_NUM_IN_GROUP3);
复制代码
其中,BUFFER_GROUP_x表示字节大小,BUFFER_NUM_IN_GROUPx表示数组的个数。
上面宏定义的意思是:8个24字节大小的数组size_0_mem[];8个60字节大小的数组size_1_mem[];8个152字节大小的数组size_2_mem[]和2个512字节大小的数组size_3_mem[]。
所以,如果内存充足的话,可以适当调整宏BUFFER_NUM_IN_GROUP0的大小来满足你的应用需求,比如将其改成208。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2024-10-30 11:26 , Processed in 0.080738 second(s), 18 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表