它要解决什么
昇腾 310B 原厂仅提供 Linux SDK,而板载 NPU 具备使用价值。项目验证两点:能否在该硬件上运行 OpenHarmony,以及能否在系统之上将 NPU 推理接入可用的应用。
将 OpenHarmony 5.0.3 移植到华为昇腾310B开发套件,并在此基础上开发了 Ascend X-Ray Expert —— 一个利用 YOLOv5s 进行 X 光胸片分析的 HarmonyOS 应用。从内核补丁适配到 ArkUI 前端,贯穿了嵌入式系统的完整技术栈。
启智01 覆盖从操作系统到应用层的完整链路:将 OpenHarmony 5.0.3 移植至华为昇腾 310B 开发套件,并在该系统之上实现 X 光胸片分析应用。项目前半部分为内核、驱动与构建链适配,后半部分为 ArkTS 界面与 YOLOv5s 推理。为使板载 NPU 得到实际使用,应用同时实现了 CPU 与 NPU 两条推理路径。
昇腾 310B 原厂仅提供 Linux SDK,而板载 NPU 具备使用价值。项目验证两点:能否在该硬件上运行 OpenHarmony,以及能否在系统之上将 NPU 推理接入可用的应用。
GPU 基于 Panfrost 开源驱动实现 HAL 层,HDMI 与双屏异显已打通,USB/MIPI 摄像头与 ALSA 音频已接通;同时移植 bash 与 busybox,以补齐 HDK 安装所需的工具链。
系统侧为 OpenHarmony 5.0.3,连同约 20 个内核模块一并编译;应用侧采用 ArkTS 与 ArkUI,推理分别使用 MindSpore Lite(CPU)与 CANN ACL(NPU),模型为 YOLOv5s。
43 个补丁已合入 OpenHarmony 主干,应用可在板端运行并完成五分类推理,CPU 与 NPU 两条路径均已验证。X 光分类属技术演示,不用于临床诊断。
实验室有一块启智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,两条通路都已验证可用。
昇腾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 大模型
build.sh 实现一键编译:拉取 OpenHarmony 源码 → 合入 43 个 patch → 全量编译formatSD310B.sh 制卡工具,支持 Linux 下直接烧写 SD 卡或生成 img 供 Windows BalenaEtcher 使用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 模块
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 应用层。