Maix-III 系列 AXera-Pi 开发板 SDK 使用介绍

获取 SDK 源码

上一篇介绍了基础的开发环境搭建和使用方法,你应该了解什么是本地编译和交叉编译,这一篇介绍如何使用这些 sdk 源码开发程序。

由 sipeed 提供在 linux 平台统一的嵌入式开发环境,主要有摄像头、屏幕、视觉、图像处理、NPU pipiline 相关的实机部署例程,适合刚入门嵌入式 linux 开发的同学使用。

由爱芯提供 AI 模型的开发与评估验证,提供给有经验的 AI 开发者使用,不涉及任何硬件外设有关的内容。

芯片商用时所用的 bsp 开发包,这里主要提供的是芯片的原始开发资料,如 uboot 、 linux 、 msp 、msp 等工程代码,这个部分是逐步开源的,你可以从这里得到商业评估用的代码,例如 ipcdemo 这样的程序,但这些代码会很复杂且高耦合,适合有经验的同行出于商业落地的目的使用。

基于 axpi_bsp_sdk 制作的 AI 部署高性能仓库,在这里主要用于该项目基于 AXera-Pi 展示 ISP、图像处理、NPU、编码、显示 等功能模块软件调用方法,方便社区开发者进行快速评估和二次开发自己的多媒体应用。

libmaix

这是一个适用于 sipeed 所用 linux 芯片开发的 C/C++ 基础开发框架,使用 cmake 构建,提供了许多开箱参考的案例,还有一些第三方库代码的链接,如 opencv openmv 这些视觉库的链接。

SDK 源码在 libmaix, 需要使用 git 命令下载:

git clone https://github.com/sipeed/libmaix.git --recursive

注意这里--recursive 参数是必须的,用来下载仓库里面的子模块,如果没有这个参数,代码会不完整,导致编译出错

中国国内可能下载速度较慢,可以多取消重试几次,可能会遇到速度快的节点,当然最好还是通过设置代理来加速下载。

另外, AI 模型及例程在 MaixHub 模型库 可以找到, 以及 AXERA-TECH/ax-samples 仓库。

编译 SDK 源码

回顾一下前文的内容,编译有两种方式:

  • 直接在开发板上编译:编译速度较慢,但是不需要额外的环境配置。
  • 在 PC 上编译,然后拷贝可执行文件到开发板,也就是交叉编译: 编译速度更快,但是需要额外的环境配置。

libmaix

/home/ 目录已预置,可以 git pull 联网拉取更新。

对于 libmaix, 按照其README.md 文件描述的方法编译即可, 不过需要在menuconfig命令中选择 AXera-Pi 作为编译目标。

这里简要介绍一下编译过程(libmaix 目前还未稳定,未来可能会有大的更新),实际以libmaix 仓库代码和说明为准。

  • 先安装依赖
apt install build-essential cmake python3 sshpass git

sshpass 也可以不安装, build-essential, cmake, git, python3 必须安装

  • 克隆仓库到本地或者开发板
git clone https://github.com/sipeed/libmaix --recursive

注意 --recursive 参数是必须的,用以克隆子模块,否则会缺代码

这里以在开发板上编译为例:

cd /home/libmaix # git clone https://github.com/sipeed/libmaix --recursive
cd examples/axpi
python3 project.py distclean
# python3 project.py menuconfig # 可以配置相关参数
python3 project.py build        # 如果增加文件了,需要 python3 project.py rebuild 命令
./dist/start_app.sh             # 运行示例程序

ax-samples

/home/ 目录已预置,可以 git pull 联网拉取更新。

ax-samples 是爱芯官方提供的例程,包含了一些 AI 模型和运行代码,编译完能直接在开发板上运行,只不过输入是图片,不是摄像头。
进入开发板终端,执行以下代码:

cd /home/ax-samples # git clone https://github.com/AXERA-TECH/ax-samples.git
mkdir build
cd build
cmake ..
make install

然后就能在ax-samples/build/install/bin/目录下找到编译好的可执行文件。

axpi_bsp_sdk

回到芯片原厂开发的环境,这需要有经验的嵌入式 Linux 开发者来操作,直接看 readme 进行操作,文档在 docs 目录下。

What is this?

this is a ax620 linux bsp sdk form AX620_R1.22.2801_Sipeed. currently it is application layer open source.

juwan@juwan-n85-dls:~/GIT_AX620_SDK_V0.31.0_P23/sipeed/axpi_bsp_sdk$ tree -L 1
.
├── app
├── build
├── msp
├── readme.md
├── rootfs
└── third-party

5 directories, 1 file

ready arm gcc

git clone https://github.com/sipeed/axpi_bsp_sdk.git

cd axpi_bsp_sdk

wget http://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/

how to compile

  • bsp msp sample

cd msp/sample/

export PATH="/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/:$PATH" && make p=AX620_demo all install

  • third-party libs

cd third-party

export PATH="/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/:$PATH" && make p=AX620_demo all install

  • bsp app ipcdemo

cd app/

export PATH="/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/:$PATH" && make p=AX620_demo all install

  • bsp msp component lib, such as cd app/msp/component/common && make xxxx.
juwan@juwan-n85-dls:~/GIT_AX620_SDK_V0.31.0_P23/sipeed/axpi_bsp_sdk/msp/component$ tree -L 1
.
├── axsyslog
├── common
└── thermal

4 directories, 0 files

run your program

  • on pc
sshpass -p root scp ./vo_fb/sample_vo_fb root@192.168.233.1:/opt/bin/sample_vo_fb
  • on board

chmod 777 /opt/bin/sample_vo_fb

/opt/bin/sample_vo_fb -v dsi0@480x854@60 -m 0 &

fbv /home/examples/480x360.jpg

killall sample_vo_fb

组合 SDK 和 AI 模型例程

比如我们要跑一个视觉 AI 模型,需要用到摄像头,屏幕,还有 AI 模型,你需要借助以下仓库代码完成这个目标。

借助 libmaix 实现(开发难度最小,适合验证)

基于 libmaix 的 axpi 项目进行开源快速验证效果,代码简单易懂,基于在线服务完成模型部署,只用于新手上路,与 ax-sample 的模型一起被支持。

20221113 目前仓库只保证用户初次上手时能够不报错的安全调用 AI 模型,不代表芯片的最好效果。

借助 ax-pipeline 实现(开发难度适中,适合优化)

到了这里要有基本的芯片 bsp sdk 开发的基础(axpi_bsp_sdk),这部分会略显专业一些,这个仓库目前追求最高性能的效果。

借助 ipcdemo 实现(开发难度最大,适合落地)

基于 axpi_bsp_sdk 的 ipcdemo 商用视频推流应用,由于源码过于复杂,需要有上述基础才能介入。