跳到主要内容

修改 BPU 保留内存大小

临时设置 BPU 保留内存

当 ion 选择 cma 作为内存池时,通过 cma 区域来为 BPU mem 划分空间,以此兼顾 cma 的灵活性和预留空间的效率,该空间大小可在系统启动后通过修改/sys 节点修改:

echo 100 > /sys/class/misc/ion/cma_carveout_size

通过上述方式修改该空间大小单位为 Mbyte,需根据实际场景需求做不同配置(如多路场景下若 vio 报 ion_alloc 错误,则可适当降低该空间大小,最小可到 0),设置 0 值表示 BPU 只使用 cma 来动态分配(若无 sys 该节点表示该版本暂不支持此方式配置)。

注意:只有当没有用户使用 BPU_MEM 时才可以修改成功,由于该空间为从 cma 中申请的连续物理地址空间,可申请到的最大大小无法达到 cma 总大小。当 BPU_MEM 无法从该空间中申请到足够的内存时,系统会尝试从该空间之外的 cma 空间申请。

因为这部分预留是从 cma 中分配出的连续物理空间,所以设置有可能失败,设置了之后再 cat 一下这个节点,成功的话就是设置的值,失败就是 0。

在设备树中设置 ion_cam size

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

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

RDK X3 是 hobot-x3-pi.dtb
RDK X3 Module 是 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、最后,重启您的系统以使更改生效

注意事项:

  • 修改 DTB 文件可能会影响您的系统的稳定性和安全性。在修改 DTB 文件之前,请确保您了解您要更改的内容的含义,并备份原始 DTB 文件以防止意外错误。
  • /boot/hobot/ 下文件由 D-Robotics 软件包管理,如果升级了系统软件,则用户的修改会被重置为默认配置(672MB)