启智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 官方支持的开发板不同,需要从底层开始适配
适配内容
利用 Mali GPU 的开源 Panfrost 驱动,按 OpenHarmony Display Composer VDI 接口实现 HAL 层,使桌面渲染正常工作
HDMI 输出与双屏异显,涉及 framebuffer 管理、VSync 同步等底层细节
USB/MIPI CSI 摄像头的 V4L2 驱动,ALSA 声卡及 HDMI 音频输出
搭建 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 使用
Ascend X-Ray Expert
HarmonyOS 5.0.3 (API15) · ArkTS + ArkUI · 双推理引擎
五分类检测
利用 YOLOv5s 对胸部 X 光片进行目标检测,输出五种分类结果。医学影像天然适合边缘端 NPU 推理——医院出于隐私和延迟考量,不可能将患者数据传至云端处理。
双推理引擎
项目中分别实现了 CPU 和 NPU 两条推理路径,作为全栈实践的一部分:
调用 HarmonyOS 内置的 MindSpore Lite Kit 加载 .ms 模型文件,2 线程 CPU 推理。
预处理(RGBA → float 归一化)与后处理(NMS、IoU)全部在 ArkTS 侧自行实现。
C++ 侧通过 dlopen 动态加载 libacl_runtime.so,依次完成 aclInit → aclrtSetDevice → aclrtCreateContext → aclrtCreateStream,aclmdlLoadFromFile 加载 .om 离线模型。
通过 NAPI 向 ArkTS 层暴露 initYoloEngine 与 runYoloInference 两个接口。
推理流程
选择图片
PhotoViewPicker 选图 → 缩放到 640×640 并补 letterbox 黑边
预处理
RGBA → float32 → 归一化 → 送入推理引擎
推理
NPU 走 CANN ACL,CPU 走 MindSpore Lite
后处理
NMS 非极大值抑制 + IoU 计算 → 过滤置信度较低的重复检测
结果展示
Canvas 绘制检测框,三栏布局——左侧原图、中部统计图表、右侧检测记录
技术栈总览
从硬件到应用的完整四层架构
硬件
昇腾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 合入与全量编译,简化了复现流程。
C++ 编写的 CANN 推理引擎通过 NAPI 无缝接入 ArkTS 应用层。