单进程运行yolov5 4路视频推理出现hbmem_alloc failed Fail to do ION_IOC_ALLOC(ret=Cannot allocate memory)!

用户您好,请详细描述您所遇到的问题。

1.硬件获取渠道:网上购买

2.当前系统镜像版本:x3pi_ubuntu_server_disk_20221201201422

3.问题定位: 单进程运行yolov5 4路视频推理出现hbmem_alloc failed, 3路运行正常:

X3Pi设置设备树dtb文件中的ion_cam size

1. 串口或者ssh终端登录X3Pi

2. 确认当前硬件使用的dtb文件

X3Pi 一般是 hobot-x3-pi.dtb

X3CM 是hobot-x3-cm.dtb

可以通过 cat /sys/firmware/devicetree/base/model 命令确定

3. 使用以下命令把dtb文件转成方便阅读的dts文件:

dtc -I dtb -O dts -o hobot-x3-pi.dts /boot/hobot/hobot-x3-pi.dtb

其中,/boot/hobot/hobot-x3-pi.dtb 是要编辑的DTB文件的路径。该命令将DTB文件转换为DTS文件(设备树源文件)。

在文本编辑器中,可以编辑DTS文件并保存更改。

4. 修改 ion size

打开dts文件后, 找到 ion_cma 节点,修改 alloc-ranges 和 size 属性中的 0x2a000000 为需要的内存大小值,在修改此值之前,请确保明确了解它的含义,包括允许的设置范围。

ion_cma {

compatible = “shared-dma-pool”;

alloc-ranges = <0x00 0x4000000 0x00 0x2a000000>;

alignment = <0x00 0x100000>;

size = <0x00 0x2a000000>;

reusable;

};

例如,如果要将 ion_cma size 设置为 1.5GB,可以将其更改为下面的示例。

ion_cma {

compatible = “shared-dma-pool”;

alloc-ranges = <0x00 0x4000000 0x00 0x5dc00000>;

alignment = <0x00 0x100000>;

size = <0x00 0x5dc00000>;

reusable;

};

5. 保存修改后,使用以下命令将 DTS 文件转换回 DTB 格式。在执行此操作之前,请备份原始文件。

dtc -I dts -O dtb -o /boot/hobot/hobot-x3-pi.dtb hobot-x3-pi.dts

保存后,建议将其转换回 dts 文件并确认修改是否正确,以避免因笔误等原因导致修改的值不符合预期。

6. 最后,重启您的系统以使更改生效

注意事项:

1. 修改DTB文件可能会影响您的系统的稳定性和安全性。在修改DTB文件之前,请确保您了解您要更改的内容的含义,并备份原始DTB文件以防止意外错误。

2. /boot/hobot/ 下文件由地平线软件包管理,如果升级了系统软件,则用户的修改会被重置为默认配置(672MB)

使用地平线自带的人手关键点检测测试4路视频,也是不行,如下图所示:

运行dtc -I dtb -O dts -o hobot-x3-pi.dts /boot/hobot/hobot-x3-pi.dtb , 打印有点问题

后面将dts转成dtb出现问题

好了

如果要扩大成2GB,该怎么改写, 0x5dc00000变为多少