Toybrick

rk3588 用dma方式使用librga库出现内存不足问题

雁南飞

注册会员

积分
88
楼主
发表于 2023-10-21 16:15:47    查看: 4285|回复: 2 | [复制链接]    打印 | 只看该作者
rk3588 用dma方式使用librga库出现内存不足问题:
  1. RK_DMA_HEAP_ALLOC_BUFFER failed cma_heap_fd:4 width:640 height:640 format:512 error:12 errorMsg:Cannot allocate memory
复制代码
使用 dmesg -T查看具体原因:
  1. cma: cma_alloc: cma: alloc failed, req-size: 2700 pages, ret: -12
复制代码
大概知道就是预留的内存不够导致,请问该如何将其预留内存增大呢?
回复

使用道具 举报

jefferyzhang

版主

积分
13600
沙发
发表于 2023-10-23 09:31:49 | 只看该作者
本帖最后由 jefferyzhang 于 2023-10-23 09:34 编辑

这得看你自己代码怎么写,librga里头不会分配内存,内存都是外部分配完送进去的.
如果你是toybrick板子就不会报这问题, toybrick默认cma预留比较大
回复

使用道具 举报

雁南飞

注册会员

积分
88
板凳
 楼主| 发表于 2023-10-23 09:35:50 | 只看该作者
本帖最后由 雁南飞 于 2023-10-23 09:38 编辑
jefferyzhang 发表于 2023-10-23 09:31
这得看你自己代码怎么写,librga里头不会分配内存,内存都是外部分配完送进去的.
如果你是toybrick板子就不 ...

是的,这个错是申请CMA内存时报的错,有什么途经可以增大CMA内存大小吗?
程序中申请内存的代码如下,也是从librga demo中找到的
  1. buf_data.len = width * height * get_bpp_from_format(format);
  2.     buf_data.fd_flags = O_CLOEXEC | O_RDWR;
  3.     ret = ioctl(cma_heap_fd, DMA_HEAP_IOCTL_ALLOC, &buf_data);
  4.     if (ret < 0) {
  5.         printf("RK_DMA_HEAP_ALLOC_BUFFER failed cma_heap_fd:%d width:%d height:%d format:%d error:%d errorMsg:%s\n", cma_heap_fd, width, height, format, errno, strerror(errno));
  6.         return ret;
  7.     }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


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