7.2. SoC模式内存修改工具
备注
SoC模式下的内存修改脚本与远程内存修改工具使用时,均需要目标SoC服务器上rootfs-rw分区(即根目录),有200M以上空间。同时,内存修改脚本在目标SoC的存放目录也需要有200M以上空间;使用远程内存修改工具时,目标SoC的/data分区需要200M空间。 使用如下命令查看目录的空间大小:
# 查看根目录
sudo df -h /
# 查看/data分区
sudo df -h /data
# 查看当前目录
sudo df -h .
7.2.1. 工具1:在SoC上使用脚本进行修改
说明:本脚本用于在SoC运行环境中修改 SE9 的 NPU、VPP 的内存分配;SE5、SE7、SE6 算力板等工作在SoC模式下的 BM1684/BM1684X 的 NPU、VPU、VPP 的内存分配。
同时, SE9 调整 NPU、VPP 后,SoC的操作系统将使用除了 NPU、VPP 、uboot固件之外的所有内存。
SE5、SE7、SE6 算力板等工作在SoC模式下的设备调整 NPU、VPU、VPP 后,SoC的操作系统将使用除了NPU、VPU、VPP、uboot固件之外的所有内存。
备注
SE9:本脚本默认适配 v1.3release及之后版本。之前的版本修改后有启动失败的风险;如果发现设备树没有自动识别正确,请在命令末尾增加一个设备树文件名用于指定设备树
SE5、SE7、SE6算力板:本脚本默认适配官网 V22.09.02 及之后版本。可以通过手动在末尾增加当前运行的设备树的名称的方式使其适用于 V22.09.02 之前的版本,但此方法并不推荐。
使用教程:
使用浏览器打开并下载 https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/09/11/13/DeviceMemoryModificationKit.tgz ,选择”memory_edit_v<x.x>.tar.xz”压缩包。
7.2.1.1. SE9:
登录微服务器,并将脚本压缩包拷贝到SoC微服务器上,执行解压命令并进入该压缩包;并执行命令检查微服务器 NPU、VPP 当前可以配置的最大内存大小和当前配置的内存大小。
tar -xaf memory_edit_vx.x.tar.xz
cd memory_edit
./memory_edit.sh -p
其中类似如下的输出显示了可配置的最大内存。其中, MiB(Mebibyte)是计算机存储容量的单位, 1 MiB = 1024 KiB = 1024*1024 Byte。
Info: get max memory size ...
Info: max npu+vpp size: 0x97800000 [2424 MiB]
Info: max npu size: 0x97800000 [2424 MiB]
Info: max vpp size: 0x97800000 [2424 MiB]
其中类似如下的输出显示了当前配置的内存大小。
Info: get now memory size ...
Info: now npu size: 0x30000000 [768 MiB]
Info: now vpp size: 0x50000000 [1280 MiB]
请检查输出中是否有 Error ,如果有请检查SoC运行环境是否支持内存修改。
进行内存布局的修改,其中输入的三个参数是需要 NPU、VPP 配置的大小的十进制数字,单位MiB;或者为十六进制数值,单位Byte。 SE9默认没有VPU内存,配置为0即可。
# 十进制,单位MiB
./memory_edit.sh -c -npu 300 -vpu 0 -vpp 300
# 十六进制,单位Byte
./memory_edit.sh -c -npu 0x12C00000 -vpu 0x0 -vpp 0x12C00000
请检查输出中是否有 Error ,以及类似于如下输出中三个部分的大小是否与您所需要配置的大小相同。
Info: =======================================================================
Info: output configuration results ...
Info: ion npu mem area(ddr1): 0x12c00000 [300 MiB] 0x68800000 -> 0x7b3fffff
Info: ion vpp mem area(ddr1): 0x12c00000 [300 MiB] 0xed400000 -> 0xffffffff
Info: =======================================================================
Info: start check memory size ...
Info: check npu size: 0x12c00000 [300 MiB]
Info: check vpp size: 0x12c00000 [300 MiB]
Info: check edit size ok
如果检查无误,请保存当前工作,将修改后的 boot.itb 文件替换启动分区中的启动映像,并重启机器使修改生效。
sudo cp boot.itb /boot && sync
sudo reboot
备注
如果需要迁移修改配置,请导出这个 boot.itb 文件,拷贝到其他需要修改的微服务器的/boot 目录下 要求:与修改时使用的微服务器型号、刷机包版本、SDK 版本相同,可以通过 bm_version 命令查看。
7.2.1.2. SE5、SE7、SE6算力板:
登录微服务器,并将脚本压缩包拷贝到SoC微服务器上,执行解压命令并进入该压缩包;并执行命令检查微服务器 NPU、VPU、VPP 当前可以配置的最大内存大小和当前配置的内存大小。
tar -xaf memory_edit_vx.x.tar.xz
cd memory_edit
./memory_edit.sh -p
其中类似如下的输出显示了可配置的最大内存。其中, MiB(Mebibyte)是计算机存储容量的单位, 1 MiB = 1024 KiB = 1024*1024 Byte。
Info: get max memory size ...
Info: max npu size: 0xfaf00000 [4015 MiB]
Info: max vpu size: 0xb8000000 [2944 MiB]
Info: max vpp size: 0x100000000 [4096 MiB]
其中类似如下的输出显示了当前配置的内存大小。
Info: get now memory size ...
Info: now npu size: 0x7d000000 [2000 MiB]
Info: now vpu size: 0x7e800000 [2024 MiB]
Info: now vpp size: 0x80000000 [2048 MiB]
请检查输出中是否有 Error ,如果有请检查SoC运行环境是否支持内存修改。
进行内存布局的修改,其中输入的三个参数是需要 NPU、VPU、VPP 配置的大小的十进制数字,单位MiB;或者为十六进制数值,单位Byte。
# 十进制,单位MiB
./memory_edit.sh -c -npu 2048 -vpu 2048 -vpp 2048
# 十六进制,单位Byte
./memory_edit.sh -c -npu 0x80000000 -vpu 0x80000000 -vpp 0x80000000
请检查输出中是否有 Error ,以及类似于如下输出中三个部分的大小是否与您所需要配置的大小相同。
Info: =======================================================================
Info: output configuration results ...
Info: vpu mem area(ddr3): 0x8000000 [128 MiB] 0x78000000 -> 0x7fffffff
Info: ion npu mem area(ddr1): 0x80000000 [2048 MiB] 0x5100000 -> 0x850fffff
Info: ion vpu mem area(ddr3): 0x80000000 [2048 MiB] 0x80000000 -> 0xffffffff
Info: ion vpp mem area(ddr4): 0x80000000 [2048 MiB] 0x80000000 -> 0xffffffff
Info: =======================================================================
Info: start check memory size ...
Info: check npu size: 0x80000000 [2048 MiB]
Info: check vpu size: 0x80000000 [2048 MiB]
Info: check vpp size: 0x80000000 [2048 MiB]
Info: check edit size ok
如果检查无误,请保存当前工作,将修改后的 emmcboot.itb 文件替换启动分区中的启动映像,并重启机器使修改生效。
sudo cp emmcboot.itb /boot
sync
sudo reboot
备注
如果需要迁移修改配置,请导出这个 emmcboot.itb 文件,拷贝到其他需要修改的微服务器的/boot 目录下 要求:与修改时使用的微服务器型号、刷机包版本、SDK 版本相同,可以通过 bm_version 命令查看。
7.2.2. 工具2:使用图像化程序远程修改
说明:本工具是一个图形化程序,可以通过远程 SSH 修改工作在 SoC 模式下的 BM1684/BM1684X 的 NPU、VPU、VPP 占用空间。默认适配环境为 64 位 win10 操作系统或者带有桌面环境的linux系统。
备注
该工具只能适用于提供的 V22.09.02 及以后版本SoC版本。 当前默认适配桌面系统如下: amd64-win10、amd64-linux(带有完整桌面,如xfce4)、aarch64-linux(带有完整桌面,如xfce4)。
单远程目标
使用教程:
使用浏览器打开 https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/09/11/13/DeviceMemoryModificationKit.tgz 并下载最新的远程内存修改工具,选择”qt_mem_edit_V<x.x.x>.”文件,其中.exe文件适用于win系统,.AppImage适用于带有桌面环境的linux系统。
windows 系统双击程序即可运行,linux 系统可能需要使用
chmod +x qt_mem_edit_Vx.x.x-架构名.AppImage
命令使能其具有运行权限后才能运行该程序。该程序正常运行时如下图。

图 7.1 远程内存修改工具运行初始界面
在该程序中配置微服务器远程 SSH 链接需要的 IP、端口、用户名和密码。
点击“修改目录”按钮配置执行文件目录,该目录会在当前操作的host主机上存放远程修改内存的所有过程文件(默认目录为远程内存修改程序所在目录)。
7.2.2.1. SE9:
点击“获取信息”按钮获取微服务器当前 NPU、VPP 配置的内存大小信息和最大可以配置的内存大小信息,这些信息将在“获取信息”按钮左侧的文本框中显示。
根据您的需要修改“进行配置”按钮等高的两个个数字框(SE9没有VPU内存,配置为0即可),它们代表了需要配置的 NPU、VPP 各个部分的内存大小(单位 MiB,十进制)。
点击“进行配置”按钮,配置完成后,程序输出如下图。

图 7.2 远程内存修改工具配置完成效果
查看“远程执行信息”中是否有 Error 输出,如果没有错误输出,请登录微服务器,保存微服务器上当前工作,并重启微服务器使您的修改生效。
sudo reboot
进行操作后执行文件目录下会存放从微服务器上获取的内存修改的所有过程文件,文件名以 memory_edit_p_为前缀代表该文件是”获取信息“操作的过程文件,文件名以 memory_edit_c_为前缀代表该文件是“进行配置”操作的过程文件。
文件名以 memory_edit_p_为前缀的获取信息压缩包中文件目录如下:
└── memory_edit
├── bintools
├── boot.itb
├── log.txt
├── memory_edit.sh
├── multi.its
├── memory_edit_p.log
└── output
文件名以 memory_edit_c_为前缀的获取信息压缩包中文件目录如下:
└── memory_edit
├── bintools
├── boot.itb
├── log.txt
├── memory_edit.sh
├── multi.its
├── memory_edit_c.log
└── output
备注
在“进行配置”操作的过程文件压缩包中,有一个名为 boot.itb 的文件,如果需要迁移修改配置,请解压并导出这个 boot.itb 文件,拷贝到其他需要修改的微服务器的/boot 目录下。 要求:与修改时使用的微服务器型号、刷机包版本、SDK 版本相同,可以通过 bm_version 命令查看上述信息
7.2.2.2. SE5、SE7、SE6算力板:
点击“获取信息”按钮获取微服务器当前 NPU、VPU、VPP 配置的内存大小信息和最大可以配置的内存大小信息,这些信息将在“获取信息”按钮左侧的文本框中显示。
根据您的需要修改“进行配置”按钮等高的三个数字框,它们代表了需要配置的 NPU、VPU、VPP 各个部分的内存大小(单位 MiB,十进制)。
点击“进行配置”按钮,配置完成后,程序输出如下图。

图 7.3 远程内存修改工具配置完成效果
查看“远程执行信息”中是否有 Error 输出,如果没有错误输出,请登录微服务器,保存微服务器上当前工作,并重启微服务器使您的修改生效。
sudo reboot
进行操作后执行文件目录下会存放从微服务器上获取的内存修改的所有过程文件,文件名以 memory_edit_p_为前缀代表该文件是”获取信息“操作的过程文件,文件名以 memory_edit_c_为前缀代表该文件是“进行配置”操作的过程文件。
文件名以 memory_edit_p_为前缀的获取信息压缩包中文件目录如下:
└── memory_edit
├── bintools
├── emmcboot.itb
├── log.txt
├── memory_edit.sh
├── multi.its
├── memory_edit_p.log
└── output
文件名以 memory_edit_c_为前缀的获取信息压缩包中文件目录如下:
└── memory_edit
├── bintools
├── emmcboot.itb
├── log.txt
├── memory_edit.sh
├── multi.its
├── memory_edit_c.log
└── output
备注
在“进行配置”操作的过程文件压缩包中,有一个名为 emmcboot.itb 的文件,如果需要迁移修改配置,请解压并导出这个 emmcboot.itb 文件,拷贝到其他需要修改的微服务器的/boot 目录下。 要求:与修改时使用的微服务器型号、刷机包版本、SDK 版本相同,可以通过 bm_version 命令查看上述信息
多远程目标
使用教程:
使用浏览器打开 https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/09/11/13/DeviceMemoryModificationKit.tgz 并下载最新的远程内存修改工具,选择”qt_mem_edit_V<x.x.x>.”文件,其中.exe文件适用于win系统,.AppImage适用于带有桌面环境的linux系统。
windows系统双击程序即可运行,linux系统可能需要使用
chmod +x qt_mem_edit_Vx.x.x-架构名.AppImage
命令使能其具有运行权限后才能运行该程序。修改“进行配置”按钮等高的三个数字框,它们代表了需要配置的 NPU、VPU、VPP 各个部分的内存大小(单位 MiB,十进制)。

图 7.4 远程内存修改工具进行配置
点击远程内存布局修改工具中的“批量配置”按钮。其中,“载入文件”,可以载入一个json格式保存的远程批量信息文件,可以实现远程微服务器一键导入。若您使用的是SE6系列微服务器,“预设文件”中 “inse6conf”代表在SE6控制板上运行该程序的配置,“outse6conf”代表在SE6通过默认SSH端口运行该程序的配置。
配置好需要修改内存的批量远程目标后,点击“批量配置”,在弹出的窗口中选择“yes”,在多台远程设备内存修改时,远程微服务器将会自动重启。执行文件目录下会存放所有远程设备的执行文件。

图 7.5 远程内存修改工具批量配置