5.1. 基础软件环境#
本页包含SDK获取途径、系统相关、NPU 基础操作。不同芯片、开发板、模组和算力卡的固件、驱动和内存划分可能不同;
已验证内容会在表格中标注,未补齐的产品保留待补充位置。
5.1.1. SDK获取方式#
社区版本#
AX8910(待完善)
商用版本#
正式商务对接的客户,建议找对应的 FAE 获取最新的 SDK 版本更佳。
5.1.2. AX8850 SDK使用说明#
环境配置#
示例环境:ubuntu-22.04.1-amd64 在如下步骤之前先将默认的shell切换到bash:
sudo dpkg-reconfigure dash
选择“No”,然后使用 ls -l /bin/sh确认切换结果:
axera@hbussrv0p:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 27 13:44 /bin/sh -> bash
安装依赖#
使用如下命令安装依赖包:
sudo apt update && sudo apt install -y make libc6:i386 lib32stdc++6 zlib1g-dev \
libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive \
gawk libssl-dev openssl bc bison flex gcc gdb build-essential lib32z1 wget\
device-tree-compiler
使用如下命令安装python依赖:
sudo python3 -m pip install --upgrade pip
sudo pip3 install lxml
安装交叉编译工具链#
安装ARM工具链:#
运行以下命令后输入密码切换到root用户:
sudo su
创建安装路径并进入创建的路径:
mkdir /usr/local/ARM-toolchain
cd /usr/local/ARM-toolchain
下载工具链:
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
解压工具链到当前路径:
tar -vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
rm gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
添加环境变量:
echo "export PATH=\"/usr/local/ARM-toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin:\$PATH\"" >> /etc/profile
source /etc/profile
然后执行 aarch64-none-linux-gnu-gcc -v命令,将返回如下版本号:
axera@hbussrv0p:~# aarch64-none-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-none-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/../libexec/gcc/aarch64-none-linux-gnu/9.2.1/lto-wrapper
Target: aarch64-none-linux-gnu
Configured with: /tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/src/gcc/configure --target=aarch64-none-linux-gnu --prefix= --with-sysroot=/aarch64-none-linux-gnu/libc --with-build-sysroot=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/install//aarch64-none-linux-gnu/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpfr=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpc=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-isl=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --enable-fix-cortex-a53-843419 --with-pkgversion='GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)'
Thread model: posix
gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
安装RISCV工具链:#
获取方式:#
商用版本请联系对接的FAE获取
在root用户下解压工具链到对应路径:
tar -vxf riscv64-elf-gnu-amd64.tar.gz -C /usr/local/
添加环境变量:
echo "export PATH=\"/usr/local/riscv64-elf-gnu-amd64/bin:\$PATH\"" >> /etc/profile
source /etc/profile
然后执行 riscv64-unknown-linux-gnu-gcc -v命令,将返回如下版本号:
axera@hbussrv0p:~# riscv64-unknown-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/riscv64-elf-gnu-amd64/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper
Target: riscv64-unknown-elf
Configured with: /ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/build/../source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-gmp=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/lib-for-gcc-x86_64-linux/ --with-mpfr=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/lib-for-gcc-x86_64-linux/ --with-mpc=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/lib-for-gcc-x86_64-linux/ --with-libexpat-prefix=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/lib-for-gcc-x86_64-linux/ --with-pkgversion='T-HEAD RISCV Tools V2.0.1 B20210512' --enable-libgcctf --prefix=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/install --disable-shared --disable-threads --enable-languages=c,c++ --with-system-zlib --enable-tls --with-newlib --with-sysroot=/ldhome/software/toolsbuild/slave2/workspace/Toolchain/release-riscv-0/install/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=../../source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-Os -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os -mcmodel=medany'
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (T-HEAD RISCV Tools V2.0.1 B20210512)
安装SDK#
切换到root用户并进入到SDK所在目录执行解包命令:
tar -xvf AX650_SDK_Vx.x.x.tgz
解压后,得到AX650_SDK_Vx.x.x目录,进入目录,执行 ./sdk_unpack.sh展开SDK包中的内容,脚本会自动拉取Kernel源码,展开后的内容如下所示:

编译版本#
进入安装目录/AX650_SDK_Vx.x.x/build目录下执行如下命令实现编译和打包:
make p=AX650_emmc clean all install axp
编译成功后,将在build/out目录下生成AX650_emmc目录和AX650_emmc_VX.X.X_xxxxxxxxxx.axp,若需同时打包ubuntu版本的axp,可修改build/projects/AX650_emmc.mak,将use_ubuntu_rootfs := yes的注释打开,编译后在out目录中还会生成两个axp包,AX650_emmc_ubuntu_rootfs_VX.X.X_xxxxxxxxxx.axp、AX650_emmc_ubuntu_rootfs_desktop_VX.X.X_xxxxxxxxxx.axp,分别是ubuntu base版本和ubuntu desktop版本。 请参考官方demo板使用说明烧录axp文件。
5.1.3. AX8910 SDK使用说明#
环境配置#
示例环境:ubuntu-22.04.1-amd64 在如下步骤之前先将默认的shell切换到bash:
sudo dpkg-reconfigure dash
选择“No”,然后使用 ls -l /bin/sh确认切换结果:
axera@hbussrv0p:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 27 13:44 /bin/sh -> bash
安装依赖#
使用如下命令安装依赖包:
sudo apt update && sudo apt install -y make libc6:i386 lib32stdc++6 zlib1g-dev \
libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive \
gawk libssl-dev openssl bc bison flex gcc gdb build-essential lib32z1 wget\
device-tree-compiler python3-pyelftools
使用如下命令安装python依赖:
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install openpyxl
sudo pip3 install lxml
sudo pip3 install lz4
sudo pip3 install pycryptodome
sudo pip3 install rsa
sudo pip3 install sympy
安装交叉编译工具链#
安装AARCH64工具链:#
运行以下命令后输入密码切换到root用户:
sudo su
下载工具链:
wget https://developer.arm.com/-/media/files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
解压工具链到/usr/local/:
tar -vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz -C /usr/local/
添加环境变量:
echo "export PATH=\"/usr/local/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin:\$PATH\"" >> /etc/profile
source /etc/profile
然后执行 aarch64-none-linux-gnu-gcc -v命令,将返回如下版本号:
axera@hbussrv0p:~# aarch64-none-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-none-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/../libexec/gcc/aarch64-none-linux-gnu/9.2.1/lto-wrapper
Target: aarch64-none-linux-gnu
Configured with: /tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/src/gcc/configure --target=aarch64-none-linux-gnu --prefix= --with-sysroot=/aarch64-none-linux-gnu/libc --with-build-sysroot=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/install//aarch64-none-linux-gnu/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpfr=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpc=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-isl=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --enable-fix-cortex-a53-843419 --with-pkgversion='GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)'
Thread model: posix
gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
安装ARM32工具链:#
下载工具链:
wget https://developer.arm.com/-/cdn-downloads/permalink/legacy-linaro-gnu-toolchains/7.5-2019.12/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz
在root用户下解压工具链到/usr/local/:
tar -vxf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz -C /usr/local/
添加环境变量:
echo "export PATH=\"/usr/local/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin:\$PATH\"" >> /etc/profile
source /etc/profile
然后执行 arm-linux-gnueabi-gcc -v命令,将返回如下版本号:
axera@hbussrv0p:~# arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/7.5.0/lto-wrapper
Target: arm-linux-gnueabi
Configured with: '/home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/gcc.git~linaro-7.5-2019.12/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --with-system-zlib --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --enable-gnu-indirect-function --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 7.5.0 (Linaro GCC 7.5-2019.12)
安装MCU工具链:#
下载工具链:
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/5_4-2016q3/gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
在root用户下解压工具链到/usr/local/:
tar -jxf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 -C /usr/local/
添加环境变量:
echo "export PATH=\"/usr/local/gcc-arm-none-eabi-5_4-2016q3/bin:\$PATH\"" >> /etc/profile
source /etc/profile
然后执行 arm-none-eabi-gcc -v命令,将返回如下版本号:
axera@hbussrv0p:~# arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/lto-wrapper
Target: arm-none-eabi
Configured with: /home/build/work/GCC-5-build/src/gcc/configure --target=arm-none-eabi --prefix=/home/build/work/GCC-5-build/install-native --libexecdir=/home/build/work/GCC-5-build/install-native/lib --infodir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-5-build/install-native/arm-none-eabi --build=i686-linux-gnu --host=i686-linux-gnu --with-gmp=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-mpfr=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-mpc=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-isl=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-cloog=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-libelf=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r,armv8-m.base,armv8-m.main
Thread model: single
gcc version 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496] (GNU Tools for ARM Embedded Processors)
安装SDK#
切换到root用户并进入到SDK所在目录执行解包命令:
tar -xvf AX637_SDK_Vx.x.x.tgz
解压后,得到AX637_SDK_Vx.x.x目录,进入目录,执行 ./sdk_unpack.sh展开SDK包中的内容,脚本会自动拉取Kernel源码,展开后的内容如下所示:

编译版本#
进入安装目录/AX637_SDK_Vx.x.x/build目录下执行如下命令实现编译和打包:
make p=AX650_emmc clean all install axp
编译成功后,将在build/out目录下生成AX650_emmc目录和axera_ax637r_demo_only_emmc_Vx.x.x_xxxxxxxxxxxx.axp。 请参考官方demo板使用说明烧录axp文件。
5.1.4. 系统相关#
版本查询#
固件版本指烧写到设备上的系统镜像或 AXP 版本。不同产品的版本查询命令可能不同,当前已验证命令如下:
产品 / 形态 |
查询命令 |
当前状态 |
|---|---|---|
AX8850N / AX8910 主控开发板 |
|
已验证 |
AX8850 / AX8850N 算力卡 |
|
已验证 |
AX8850 / AX8850N 主控开发板示例:
root@ax650:~# cat /proc/ax_proc/version
Ax_Version V3.6.2_20250731140456
root@ax650:~#
AX8910 主控开发板示例:
//待补充
AX8850 / AX8850N 算力卡示例:
axera@raspberrypi:~ $ axcl-smi
+------------------------------------------------------------------------------------------------+
| AXCL-SMI V3.6.4_20250822020158 Driver V3.6.4_20250822020158 |
+-----------------------------------------+--------------+---------------------------------------+
| Card Name Firmware | Bus-Id | Memory-Usage |
| Fan Temp Pwr:Usage/Cap | CPU NPU | CMM-Usage |
|=========================================+==============+=======================================|
| 0 AX650N V3.6.4 | 0001:01:00.0 | 158 MiB / 945 MiB |
| -- 52C -- / -- | 0% 0% | 18 MiB / 7040 MiB |
+-----------------------------------------+--------------+---------------------------------------+
+------------------------------------------------------------------------------------------------+
| Processes: |
| Card PID Process Name NPU Memory Usage |
|================================================================================================|
axera@raspberrypi:~ $
CMM 说明#
CMM 用于划分系统内存与 NPU 可用内存。该项主要适用于主控开发板;算力卡通常以卡端 DDR 容量和 AXCL 运行环境为准。 如需运行大模型或多路并发任务,优先确认 CMM 或卡端 DDR 容量是否满足模型加载和推理需要。
配置 OS MEM 和 CMM#
使用 cmm-os-mem-config.sh 配置 OS MEM 和 CMM。将脚本下载至开发板并赋予可执行权限后,按以下方式执行:
# 查看当前 OS MEM / CMM 配置
./cmm-os-mem-config.sh --show
# 交互式修改 OS MEM 或 CMM
./cmm-os-mem-config.sh
# 直接设置 OS MEM 为 4096 MiB
./cmm-os-mem-config.sh --os-mem 4096
# 直接设置 CMM 为 4096 MiB
./cmm-os-mem-config.sh --cmm 4096
# 首次运行无法读取 U-Boot bootargs 时,初始化 fw_env.config
./cmm-os-mem-config.sh --init-fw-env
OS MEM 会写入 U-Boot
bootargs的mem=xxxM。CMM 会写入
/soc/scripts/auto_load_all_drv.sh的cmmpool=anonymous,0,0x...,xxxM。修改成功后需手动执行
reboot才会生效。写入前会备份原配置:
/root/cmm-os-mem-config.bootargs.bak和/root/cmm-os-mem-config.auto_load_all_drv.sh.bak。
使用如下命令查询CMM内存使用情况:
cat /proc/ax_proc/mem_cmm_info
使用如下命令查询OS内存使用情况:
free -m
AX8850N / AX8850N 主控开发板示例:
root@ax650:~# cat /proc/ax_proc/mem_cmm_info
--------------------SDK VERSION-------------------
[Axera version]: ax_cmm V3.10.2 Jun 9 2026 16:56:30
+---PARTITION: Phys(0x1E0000000, 0x2FFFFFFFF), Size=4718592KB(4608MB), NAME="anonymous"
nBlock(Max=1330, Cur=1330, New=1330, Free=0) nbytes(Max=1694826496B(1655104KB,1616MB), Cur=1694826496B(1655104KB,1616MB), New=1694826496B(1655104KB,1616MB), Free=0B(0KB,0MB)) Block(Max=168714240B(164760KB,160MB), Min=4096B(4KB,0MB), Avg=2837550B(2771KB,2MB))
|-Block: phys(0x1E0000000, 0x1E05FFFFF), cache =non-cacheable, length=6144KB(6MB), name="vdec_ko"
|-Block: phys(0x1E0600000, 0x1E061BFFF), cache =non-cacheable, length=112KB(0MB), name="VPP_DEV"
|-Block: phys(0x1E0655000, 0x1E0655FFF), cache =non-cacheable, length=4KB(0MB), name="TDP_CMODE3"
······
|-Block: phys(0x245004000, 0x245004FFF), cache =non-cacheable, length=4KB(0MB), name="npu"
|-Block: phys(0x245005000, 0x24504FFFF), cache =cacheable, length=300KB(0MB), name="npu"
---CMM_USE_INFO:
total size=4718592KB(4608MB),used=1655104KB(1616MB + 320KB),remain=3063488KB(2991MB + 704KB),partition_number=1,block_number=1330
root@ax650:~# free -m
total used free shared buff/cache available
Mem: 3421 1256 878 1 1286 2086
Swap: 0 0 0
从上可以看出CMM部分内存总大小为4608MB,OS部分内存总大小为3421MB,总内存大小为两者相加8029MB。
频率查询#
频率数据用于确认DDR/VENC/VDEC/NPU等部分的运行频率,频率会影响到性能表现,这里主要关注DDR频率。
产品 / 形态 |
检查项 |
命令 |
说明 |
|---|---|---|---|
AX8850N / AX8910 主控开发板 |
DDR频率 |
|
- |
AX8850 / AX8850N 算力卡 |
不适用 |
- |
- |
AX8850 / AX8850N 主控开发板示例:
root@ax650:~# ax_clk
Current Clk Freqs:
MOD FREQ
-----------------------------------------------
DDR 4266
TDP 700000000
GDC 700000000
VPP 700000000
VGP 700000000
DPU0 624000000
DPU1 624000000
DPU_LITE 624000000
VENC 624000000
JENC 624000000
VDEC 624000000
JDEC 624000000
IFE 624000000
ITP 700000000
NPU 800000000
VDSP 800000000
ACLK_TOP_NN 1600000000
ACLK_TOP 800000000
ACLK_TOP1 800000000
ACLK_TOP2 800000000
ACLK_TOP3 800000000
-----------------------------------------------
AX8910 主控开发板示例:
//待补充
带宽查询#
带宽数据用于确认 DDR / AXI / PCIE 等系统资源是否处于预期状态。不同产品的工具和测试点不同。
产品 / 形态 |
检查项 |
命令 |
说明 |
|---|---|---|---|
AX8850N / AX8910 主控开发板 |
DDR / AXI 带宽 |
|
需要加载ax_perf_monitor.ko |
AX8850 / AX8850N 算力卡 |
PCIE 带宽 |
待补充 |
记录宿主机、PCIE 版本和链路宽度 |
加载ax_perf_monitor.ko时需要提供freq和width两个参数,只有提供了两个参数后,在ax_perf_monitor.ko中会计算总的实际带宽占理论带宽的百分比,否则不能显示总的带宽占理论带宽的百分比。其中freq是由ax_clk查询到的DDR频率,width由硬件设计决定,单片ddr width为32,两片ddr width为64。
驱动路径一般是/soc/ko/ax_perf_monitor.ko,驱动默认不会加载,需要手动加载,命令如下:
insmod /soc/ko/ax_perf_monitor.ko freq=<freq> width=<width>
AX8850 / AX8850N 主控开发板示例:
root@ax650:~# insmod /soc/ko/ax_perf_monitor.ko freq=4266 width=64
root@ax650:~# cat /proc/ax_proc/bw/bw
All BW:16176MB(47%)
cpu/common/debug BW:534642KB(3%), RD_BW: 411942KB(2%), WR_BW: 122699KB(0%)
isp/vdec BW:0KB(0%), RD_BW: 0KB(0%), WR_BW: 0KB(0%)
npu BW:15640444KB(96%), RD_BW: 15634235KB(96%), WR_BW: 6209KB(0%)
venc/flash BW:1294KB(0%), RD_BW: 0KB(0%), WR_BW: 1294KB(0%)
vdsp/mm/pipe BW:0KB(0%), RD_BW: 0KB(0%), WR_BW: 0KB(0%)
root@ax650:~#
AX8910 主控开发板示例:
//待补充
5.1.5. NPU 基础操作#
使用率查询#
算力查询用于确认 NPU 设备是否被系统识别,以及当前可用的 NPU 资源。不同产品的查询方式不同:
产品 / 形态 |
查询方式 |
说明 |
|---|---|---|
AX8850N / AX8910主控开发板 |
|
查询板端 NPU 使用率,需要先 使能: |
AX8850 / AX8850N 算力卡 |
|
通过 AXCL 查询卡端 NPU 资源 |
AX8850N / AX8850N 主控开发板示例:
root@ax650:/# echo 1 > /proc/ax_proc/npu/enable
root@ax650:/# cat /proc/ax_proc/npu/top
core:vnpu-Non
time:568387
period:1000000
utilization:96%
AX8910 主控开发板示例:
//待补充
AX8850 / AX8850N 算力卡示例:
axera@raspberrypi:~ $ axcl-smi
+------------------------------------------------------------------------------------------------+
| AXCL-SMI V3.6.4_20250822020158 Driver V3.6.4_20250822020158 |
+-----------------------------------------+--------------+---------------------------------------+
| Card Name Firmware | Bus-Id | Memory-Usage |
| Fan Temp Pwr:Usage/Cap | CPU NPU | CMM-Usage |
|=========================================+==============+=======================================|
| 0 AX650N V3.6.4 | 0001:01:00.0 | 193 MiB / 945 MiB |
| -- 57C -- / -- | 2% 97% | 1408 MiB / 7040 MiB |
+-----------------------------------------+--------------+---------------------------------------+
+------------------------------------------------------------------------------------------------+
| Processes: |
| Card PID Process Name NPU Memory Usage |
|================================================================================================|
| 0 2562244 /home/axera/miniforge3/bin/python3.12 0 KiB |
| 0 2714215 /usr/bin/axcl/axcl_run_model 7784 KiB |
+------------------------------------------------------------------------------------------------+
跑分工具使用#
跑分用于确认模型、运行环境和驱动是否正常。当前只保留已确认工具,其余工具先占位,避免误导用户。
场景 |
工具 |
用途 |
状态 |
|---|---|---|---|
板上模型 latency 测试 |
|
测试单个 |
已确认 |
CNN / Transformer 完整 Benchmark |
待补充 |
统计推理耗时、吞吐、功耗等 |
待补充 |
LLM / VLM Benchmark |
待补充 |
统计 Prefill、Decode、TTFT、显存占用 |
待补充 |
算力卡 Benchmark |
待补充 |
统计 AXCL 场景下的单卡 / 多卡性能 |
待补充 |
AX8850N / AX8850N 主控开发板上的 ax_run_model 使用示例:
root@ax650:~# ax_run_model -m ./yolo11s.axmodel -r 100 -w 10
Run AxModel:
model: ./yolo11s.axmodel
type: 3 Core
vnpu: Disable
affinity: 0b001
warmup: 10
repeat: 100
batch: { auto: 0 }
parallel: false
pulsar2 ver: 3.2 99cf147d
engine ver: 2.12.0s
tool ver: 2.5.1a
cmm size: 10488066 Bytes
---------------------------------------------------------------------------
min = 3.169 ms max = 3.180 ms avg = 3.174 ms median = 3.174 ms
5% = 3.171 ms 90% = 3.178 ms 95% = 3.179 ms 99% = 3.180 ms
---------------------------------------------------------------------------
AX8910 主控开发板示例:
//待补充
输出字段说明:
Model Info:显示模型路径、核心类型(如 3 Core)、NPU 模式、亲和性设置等运行配置;
Version Info:显示 Pulsar2、Engine、Tool 版本及 CMM 占用大小;
Performance Metrics:
min/max/avg/median:最小、最大、平均和延迟中位数;5%/90%/95%/99%:不同百分位延迟,反映尾部延迟波动;
常用参数说明:
参数 |
说明 |
|---|---|
|
指定 |
|
模型重复运行次数,统计平均耗时(默认 |
|
正式统计前的预热次数(默认 |
|
每次推理后休眠毫秒数(默认 |
|
NPU 模式: |
|
NPU 亲和性 / 指定核心(默认 |
|
并行使用所有 NPU 核心(默认 |
|
运行的 batch 索引(默认 |
|
选择 shape 分组(默认 |
|
指定存放输入文件( |
|
指定保存输出文件的目录 |
|
将 min / max / avg 结果保存为 JSON 文件 |
|
运行模型后校验输出与参考是否一致 |
执行结束后终端会输出上述 latency 统计结果。如果加上 --save-benchmark 会在当前目录生成一个 JSON 文件,便于后续汇总对比。
5.1.6. AX Monitor Dashboard#
AX Monitor Dashboard由ivanshi1108 开发,提供GUI和CLI两种形式,可实时监控系统资源使用状态,提供更直观的展示方式。 使用此工具需要加载ax_perf_monitor.ko并使能/proc/ax_proc/npu/enable,才可查看NPU使用率以及带宽占用情况。
CLI形式#
编译:
cd /root/ax_dashboard
g++ -std=c++17 -O2 -Wall -Wextra cpp/dashboard_cli.cpp -o cpp/dashboard_cli
运行:
cd /root/ax_dashboard
./cpp/dashboard_cli
AX8850 / AX8850N 主控开发板示例:
root@ax650:~/ax_dashboard# g++ -std=c++17 -O2 -Wall -Wextra cpp/dashboard_cli.cpp -o cpp/dashboard_cli
root@ax650:~/ax_dashboard# insmod /soc/ko/ax_perf_monitor.ko freq=4266 width=64
root@ax650:~/ax_dashboard# echo 1 > /proc/ax_proc/npu/enable
root@ax650:~/ax_dashboard# ./cpp/dashboard_cli
AX Dashboard CLI (C++)
Press Ctrl+C to quit
CPU [##--------------------------] 7.3% Current load 7.3%
DDR OS [############----------------] 43.0% 1.44 GB / 3.34 GB
DDR CMM [#######################-----] 82.1% 3.69 GB / 4.50 GB
NPU [#####################-------] 74.0% Current load 74.0%
SoC Temp [##########------------------] 49.3 C 49.263 C
All BW [######################------] 16019 MB All BW:16019MB(46%)
AX8910 主控开发板示例:
//待补充
GUI形式#
GUI形式需要在由桌面环境的rootfs下使用。 安装依赖:
cd /root/ax_dashboard
chmod +x install_dependencies.sh
./install_dependencies.sh
加载ax_perf_monitor.ko并使能/proc/ax_proc/npu/enable后运行:
cd /root/ax_dashboard
python3 python/dashboard_python.py
或者使用脚本运行:
cd /root/ax_dashboard
chmod +x run_dashboard.sh
./run_dashboard.sh
AX8850 / AX8850N 主控开发板示例:
更多使用内容请参考ax_dashboard/README.md
5.1.7. NPU相关资源#
AX8850N / AX8910 主控开发板#
PyAXEngine#
PyAXEngine 是 NPU Python API,接口风格兼容 ONNXRuntime Python API,便于上板验证。源码仓库见 pyaxengine。
AX-Samples#
AX-Samples 实现了常见的 深度学习开源算法 的示例代码,方便社区开发者进行快速评估和适配。源码仓库见ax-samples。
AX8850 / AX8850N 算力卡#
以下命令为 AX8850 / AX8850N 算力卡的基础环境示例。实际驱动版本、安装包和宿主机架构以 AXCL 文档 为准。
AXCL 驱动#
算力卡需要提前配置 AXCL 驱动,详细安装流程参考 AXCL 文档。
PyAXEngine#
PyAXEngine 是 NPU Python API,接口风格兼容 ONNXRuntime Python API,便于上板验证。源码仓库见 pyaxengine。
axcl-samples#
axcl-samples 实现了常见的 深度学习开源算法 在算力卡上运行的示例代码,方便社区开发者进行快速评估和适配。源码仓库见axcl-samples。