修改 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)