|
发表于 2007-12-26 13:54:03
|
显示全部楼层
adm是mtk提供的 应用程序动态内存。
其实是你自己定义一个全局的大数组作为内存池。自行申请分配释放的。
目的是为ctrl_buffer申请超过2K时候解决方法。
例如
static kal_uint8 my_pool[600*1024];
KAL_ADM_ID my_id;
kal_uint32 my_ptr;
my_id = kal_adm_create(my_pool,600*1024,NULL,KAL_FALSE);
if(my_id == NULL)
kal_print("my adm create failed");
my_ptr = (kal_uint32*)kal_adm_alloc(my_id,600*1024);
if(my_ptr == NULL)
kal_print("my adm alloc failed");
kal_adm_free(my_id,my_ptr);
if(kal_adm_delete(my_id)!=KAL_ADM_SUCCEED)
kal_print("delete my adm failed");
对于大内存如楼主所说,需要2000*1024. 可以定义这么大的数组测试一下。
RAM不够的话,建议复用或者利用文件系统。
不建议修改ctrl_buffer_pool中的值。
再说它最大的块也就
NUM_CTRL_BUFF_POOL_SIZE65536
即64K。
adm方式也和ctrl_buffer一样支持分块首适应算法。
楼主可以把数组分成大小不等的块。进行申请和释放。 |
|