2. 开发环境搭建:配置Eyeriss SDK、交叉编译工具链与Python依赖

说实话,环境搭建这事儿,看着琐碎,但往往是整个项目里最容易卡住人的地方。我见过不少团队,芯片选型、算法设计都搞定了,结果在环境配置上折腾了两三天,最后发现是某个库版本不对。所以这一章,咱们把每一步都踩实了。

Eyeriss 的开发环境,说白了就三块:SDK(芯片的“说明书”和“工具箱”)、交叉编译工具链(让 PC 能生成芯片能跑的代码)、Python 依赖(模型转换、性能分析这些活儿全靠它)。下面我按顺序来。

2.1 获取并安装 Eyeriss SDK

Eyeriss SDK 通常以压缩包形式提供,里面包含了驱动库、运行时库、示例代码和文档。我个人习惯把它放在 /opt/eyeriss/ 下,方便多用户共享。

核心步骤:

  1. 从官方仓库或内部服务器下载 SDK 包(例如 eyeriss_sdk_v2.3.0.tar.gz)。
  2. 解压到目标目录:sudo tar -xzf eyeriss_sdk_v2.3.0.tar.gz -C /opt/eyeriss/
  3. 设置环境变量 EYERISS_SDK_PATH,指向解压后的根目录。

嗯,这里要注意:SDK 的版本必须和芯片固件版本匹配。我曾经遇到过 SDK 升级后,旧固件上的某些 API 行为变了,排查了半天才发现是版本对不上。所以拿到 SDK 后,先看一眼 RELEASE_NOTES 文件。

SDK 的目录结构大致如下:

/opt/eyeriss/eyeriss_sdk_v2.3.0/
├── include/          # 头文件(API 声明)
├── lib/              # 预编译库(.so / .a)
├── tools/            # 模型转换、量化工具
├── samples/          # 示例工程
├── docs/             # API 参考手册
└── cmake/            # CMake 辅助模块

2.2 配置交叉编译工具链

Eyeriss 芯片通常基于 ARM 架构,所以我们需要在 x86 的 PC 上安装 ARM 交叉编译器。说白了,就是让 PC 生成 ARM 指令集的二进制文件。

我个人推荐使用 ARM GCC,稳定且社区活跃。安装方式有两种:

方式 命令/步骤 适用场景
包管理器安装 sudo apt install gcc-arm-linux-gnueabihf 快速验证、原型开发
官方预编译包 从 ARM 官网下载,解压后配置 PATH 生产环境、版本可控

我的建议: 用官方预编译包。包管理器里的版本往往滞后,而且不同 Ubuntu 版本提供的 GCC 版本可能不一样,容易导致二进制兼容性问题。我曾经在 Ubuntu 18.04 上用 apt 装的 GCC,编译出来的程序在芯片上跑出了奇怪的段错误,换成官方 9.2 版本就好了。

安装完成后,验证一下:

arm-linux-gnueabihf-gcc --version
# 输出应显示版本号,例如:arm-linux-gnueabihf-gcc (GCC) 9.2.1 20191025

然后,我们需要让 CMake 能找到这个工具链。创建一个工具链文件 arm_toolchain.cmake:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

编译时,通过 -DCMAKE_TOOLCHAIN_FILE 指定这个文件即可。

2.3 安装 Python 依赖库

Eyeriss 的模型转换、性能分析、数据可视化等工具,底层都是 Python 写的。所以 Python 环境必须配好。

我强烈建议用 虚拟环境,别把依赖装到系统 Python 里。你想想看,不同项目可能依赖不同版本的 PyTorch 或 ONNX,混在一起迟早出问题。

避坑指南: 我曾经在一个项目里,因为系统 Python 的 numpy 版本被另一个库升级了,导致 Eyeriss 的量化工具报错。从那以后,我每个项目都建独立的虚拟环境。

创建并激活虚拟环境:

python3 -m venv eyeriss_env
source eyeriss_env/bin/activate

然后安装核心依赖。Eyeriss SDK 通常会提供一个 requirements.txt,直接装就行:

pip install -r /opt/eyeriss/eyeriss_sdk_v2.3.0/tools/requirements.txt

如果没提供,那至少需要以下这些:

  • numpy:数据处理的基础
  • onnx 和 onnxruntime:模型格式转换和推理验证
  • pyyaml:读取配置文件
  • matplotlib:画性能分析图
  • tqdm:进度条,跑批量任务时很有用

安装命令:

pip install numpy onnx onnxruntime pyyaml matplotlib tqdm

2.4 验证环境:跑一个 Hello World

环境搭没搭好,跑个例子最直接。SDK 的 samples/hello_world 目录下有个最简单的工程。

编译命令:

mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm_toolchain.cmake -DEYERISS_SDK_PATH=/opt/eyeriss/eyeriss_sdk_v2.3.0
make

编译成功后,会生成一个 hello_eyeriss 可执行文件。把它拷贝到 Eyeriss 开发板上,运行:

./hello_eyeriss
# 输出:Hello from Eyeriss NPU! Device ID: 0

看到这行输出,说明 SDK 和工具链都配好了。

2.5 本章知识体系总览

下面这张图,把整个环境搭建的流程和组件关系梳理了一下。你跟着这个图走,基本不会漏东西。

Eyeriss 开发环境搭建总览 Eyeriss SDK 交叉编译工具链 Python 依赖库 头文件 预编译库 模型转换工具 ARM GCC CMake 工具链文件 numpy onnx matplotlib 验证:编译并运行 Hello World 关键检查点 1. SDK 版本与芯片固件版本匹配 2. 交叉编译器版本一致(避免段错误) 3. Python 虚拟环境隔离,依赖版本锁定 4. 开发板与 PC 网络/串口连通

环境搭建这块,看起来步骤多,但只要你按顺序来——先 SDK,再工具链,最后 Python——基本不会出大问题。嗯,真遇到问题了,多半是版本不匹配或者路径没设对。这时候别慌,回头检查一下环境变量和文件权限,八成能解决。