5.1. 基础软件环境#

  • 本页包含SDK获取途径、系统相关、NPU 基础操作。不同芯片、开发板、模组和算力卡的固件、驱动和内存划分可能不同;

  • 已验证内容会在表格中标注,未补齐的产品保留待补充位置。

5.1.1. SDK获取方式#

社区版本#

商用版本#

  • 正式商务对接的客户,建议找对应的 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工具链:#
获取方式:#

在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源码,展开后的内容如下所示: sdk图

编译版本#

进入安装目录/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源码,展开后的内容如下所示: sdk 图

编译版本#

进入安装目录/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 主控开发板

cat /proc/ax_proc/version

已验证

AX8850 / AX8850N 算力卡

axcl-smi

已验证

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 bootargsmem=xxxM

  • CMM 会写入 /soc/scripts/auto_load_all_drv.shcmmpool=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频率

ax_clk

-

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 带宽

cat /proc/ax_proc/bw/bw

需要加载ax_perf_monitor.ko

AX8850 / AX8850N 算力卡

PCIE 带宽

待补充

记录宿主机、PCIE 版本和链路宽度

加载ax_perf_monitor.ko时需要提供freqwidth两个参数,只有提供了两个参数后,在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主控开发板

cat /proc/ax_proc/npu/top

查询板端 NPU 使用率,需要先 使能:echo 1 > /proc/ax_proc/npu/enable

AX8850 / AX8850N 算力卡

axcl-smi

通过 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 测试

ax_run_model

测试单个 .axmodel 的推理耗时

已确认

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%:不同百分位延迟,反映尾部延迟波动;

常用参数说明:

参数

说明

-m, --model

指定 .axmodel 模型文件路径(必填)

-r, --repeat

模型重复运行次数,统计平均耗时(默认 1

-w, --warmup

正式统计前的预热次数(默认 1

-s, --sleep

每次推理后休眠毫秒数(默认 0

-v, --vnpu

NPU 模式:0=Disable1=STD2=BigLittle3=LittleBig(默认 0

-a, --affinity

NPU 亲和性 / 指定核心(默认 1

-p, --parallel

并行使用所有 NPU 核心(默认 0

-b, --batch

运行的 batch 索引(默认 0

-g, --group

选择 shape 分组(默认 0

-i, --input-folder

指定存放输入文件(.bin)的文件夹目录

-o, --output-folder

指定保存输出文件的目录

--save-benchmark

将 min / max / avg 结果保存为 JSON 文件

--verify

运行模型后校验输出与参考是否一致

执行结束后终端会输出上述 latency 统计结果。如果加上 --save-benchmark 会在当前目录生成一个 JSON 文件,便于后续汇总对比。

5.1.6. AX Monitor Dashboard#

AX Monitor Dashboardivanshi1108 开发,提供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 主控开发板示例: dashboard图 更多使用内容请参考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