昇腾AI全栈

启智01 · 昇腾AI全栈
—— 昇腾310B上跑OpenHarmony,再来个NPU推理应用

将 OpenHarmony 5.0.3 移植到华为昇腾310B开发套件,并在此基础上开发了 Ascend X-Ray Expert —— 一个利用 YOLOv5s 进行 X 光胸片分析的 HarmonyOS 应用。从内核补丁适配到 ArkUI 前端,贯穿了嵌入式系统的完整技术栈。

项目背景

实验室有一块启智01开发者套件,搭载华为昇腾310B NPU。原厂只提供了 Linux SDK,我希望能在上面跑OpenHarmony操作系统,并利用板载 NPU 做一些实际的推理工作。于是这个项目分成了两部分:底层做 OpenHarmony 5.0.3 的系统移植,上层用 ArkTS 写了一个Ascend X-Ray Expert应用——选一张 X 光胸片,NPU 进行 YOLOv5s 推理,判断是否存在肺炎、结核等病变。推理路径实现了两套:MindSpore Lite 跑 CPU,CANN ACL 跑 NPU,两条通路都已验证可用。

OpenHarmony 系统移植

昇腾310B 的芯片方案与 OpenHarmony 官方支持的开发板不同,需要从底层开始适配

适配内容

GPU 图形

利用 Mali GPU 的开源 Panfrost 驱动,按 OpenHarmony Display Composer VDI 接口实现 HAL 层,使桌面渲染正常工作

HDMI & 双屏

HDMI 输出与双屏异显,涉及 framebuffer 管理、VSync 同步等底层细节

Camera & 音频

USB/MIPI CSI 摄像头的 V4L2 驱动,ALSA 声卡及 HDMI 音频输出

NPU 推理环境

搭建 CANN 推理环境,验证 YOLOv5 模型,并成功在板端运行 MindIE Qwen3-0.6B 大模型

技术细节

  • 向 OpenHarmony 主干合入了43个 patch,涉及 build 系统、HDF 驱动框架、GPU 2D/3D、SELinux、Camera V4L2、Audio ALSA、多屏显示、HDC 调试、电源管理等
  • 编译/移植了20余个内核模块:panfrost.ko(GPU)、svm.ko(NPU)、蓝牙/WiFi、各类 V4L2 驱动
  • 由于鸿蒙内置 toybox 不支持 awk、tr 等命令,而 Ascend HDK 安装依赖这些工具,一并移植了 bash-5.1 和 busybox-1.36.1
  • build.sh 实现一键编译:拉取 OpenHarmony 源码 → 合入 43 个 patch → 全量编译
  • formatSD310B.sh 制卡工具,支持 Linux 下直接烧写 SD 卡或生成 img 供 Windows BalenaEtcher 使用
Linux 5.10 Panfrost GPU GBM Gralloc DRM/KMS OpenHarmony 5.0.3 HDF驱动 GN + Ninja 43个Patch V4L2 Camera ALSA Audio HDMI Display SELinux

Ascend X-Ray Expert

HarmonyOS 5.0.3 (API15) · ArkTS + ArkUI · 双推理引擎

五分类检测

利用 YOLOv5s 对胸部 X 光片进行目标检测,输出五种分类结果。医学影像天然适合边缘端 NPU 推理——医院出于隐私和延迟考量,不可能将患者数据传至云端处理。

细菌性肺炎
病毒性肺炎
患病(其他)
健康
结核病

双推理引擎

项目中分别实现了 CPU 和 NPU 两条推理路径,作为全栈实践的一部分:

MindSpore Lite (CPU)

调用 HarmonyOS 内置的 MindSpore Lite Kit 加载 .ms 模型文件,2 线程 CPU 推理。
预处理(RGBA → float 归一化)与后处理(NMS、IoU)全部在 ArkTS 侧自行实现。

CANN ACL (NPU)

C++ 侧通过 dlopen 动态加载 libacl_runtime.so,依次完成 aclInit → aclrtSetDevice → aclrtCreateContext → aclrtCreateStreamaclmdlLoadFromFile 加载 .om 离线模型。
通过 NAPI 向 ArkTS 层暴露 initYoloEnginerunYoloInference 两个接口。

推理流程

选择图片

PhotoViewPicker 选图 → 缩放到 640×640 并补 letterbox 黑边

预处理

RGBA → float32 → 归一化 → 送入推理引擎

推理

NPU 走 CANN ACL,CPU 走 MindSpore Lite

后处理

NMS 非极大值抑制 + IoU 计算 → 过滤置信度较低的重复检测

结果展示

Canvas 绘制检测框,三栏布局——左侧原图、中部统计图表、右侧检测记录

HarmonyOS 5.0.3 API15 ArkTS ArkUI Stage 模型 YOLOv5s CANN ACL MindSpore Lite NMS NAPI C++ CMake

技术栈总览

从硬件到应用的完整四层架构

硬件

昇腾310B
ARM CPU + Mali GPU
NPU AI加速器

内核驱动

Linux 5.10
panfrost + svm
20+ .ko 模块

HAL 层

OpenHarmony 5.0.3
Display Composer VDI
Gralloc / Audio / V4L2

应用

ArkUI + ArkTS
Ascend X-Ray Expert
CANN NPU + MindSpore Lite

要点总结

端到端全栈

从内核补丁编写、HAL 层适配到 ArkUI 应用开发,完整覆盖了嵌入式系统的全链路。

双推理引擎

MindSpore Lite(CPU)与 CANN ACL(NPU)两条路径均已验证,NPU 推理时延显著优于 CPU。

医疗应用场景

X 光胸片分析对隐私和实时性要求高,边缘 NPU 推理恰好匹配这一需求。

大模型边缘部署

在昇腾310B上通过 MindIE 成功运行 Qwen3-0.6B,验证了小尺寸 LLM 在嵌入式 NPU 上的可行性。

一键编译

build.sh 自动完成源码拉取、patch 合入与全量编译,简化了复现流程。

NAPI 桥接

C++ 编写的 CANN 推理引擎通过 NAPI 无缝接入 ArkTS 应用层。