前言

OpenHarmony 轻量系统的固件构建通常会卡在三个地方:构建机架构、预编译工具链、源码和依赖下载。尤其是像 xiaohong (atomgit 开源的软硬件一体项目) 这类面向 WS63 芯片的项目,工具链、Python 依赖、repo 同步、clang 路径等细节只要有一处没对齐,就很容易在编译中途报错。

AtomGit 小鸿AI

这次我们尝试把 xiaohong 固件构建流程放到华为云上完成:通过 AI Shell 创建云端 ECS、准备构建环境、下载源码、配置工具链并完成固件编译。整体体验下来,AI Shell 比较适合这类“步骤多、依赖多、容易踩坑但流程可沉淀”的云端自动化任务。

案例介绍

xiaohong 是基于 OpenHarmony 的迷你系统,专为 WS63 芯片设计。本案例介绍如何使用华为云 AI Shell 从零开始编译 xiaohong 固件,包括环境准备、源码下载、工具链配置、编译过程以及常见问题解决方案。

最终产物为:

  • ws63-liteos-app_all.fwpkg:完整固件
  • ws63-liteos-app_load_only.fwpkg:仅加载固件

为什么适合用 AI Shell

这个任务并不是单条命令能解决的问题,而是一个典型的云端构建流水线:

  1. 需要创建合适规格和架构的 ECS。
  2. 需要安装大量系统依赖和 Python 依赖。
  3. 需要同步较大的 OpenHarmony 相关源码和预编译工具。
  4. 需要处理工具链路径、软链接和环境变量。
  5. 编译完成后还要下载固件并清理云资源。

如果每次都手工操作,容易遗漏步骤。使用 AI Shell 的价值在于:可以用自然语言描述目标,再把重复流程沉淀为 skill 或脚本,后续复用时只需要发起任务即可。

核心要点

  • 架构选择:必须使用 x86_64 架构的 ECS,预编译工具链不兼容 aarch64。
  • 源码下载:使用 repo 工具,并在 repo init 时添加 --git-lfs
  • 工具链配置:需要配置 RISC-V 编译器 PATH,并创建 clang 软链接。
  • Python 依赖:需要安装 kconfiglibpycparsermarkupsafe 等模块。
  • 构建命令:使用 ./build.sh --product-name xiaohong --gn-args is_debug=false
  • 资源清理:构建完成后及时保存固件并释放 ECS,避免资源持续计费。

适用对象

  • 企业
  • 个人开发者
  • 高校学生

案例时间

  • 本案例总时长预计60分钟。

资源总览

创建华为云资源需要收费,请按需充值。本案例中编译环境所创建的云资源预计花费10元。

资源名称 规格 单价(元)
AI Shell 体验版 免费
华为云资源 按需 10

整体流程

AIShell 编译小鸿整体流程

流程可以理解为:

  1. 用户在开发者空间向 AI Shell 下达编译 xiaohong 固件任务。
  2. AI Shell 调用 xiaohong build skill 或自动化脚本。
  3. AI Shell 创建 x86_64 ECS 并准备构建环境。
  4. ECS 完成源码同步、工具链配置、固件编译。
  5. 用户下载固件产物,并按需销毁 ECS。

案例步骤

0. 进入 AIShell

参考教程探索智能 Shell 交互新范式 详解 AI Shell 完整用法或者产品文档AI Shell,云上开发运维效率升级 进入到 AI Shell 界面

AIShell 产品页

进入到 AIShell 我们应该能看如下界面,和我们常用的 OpenCode、AtomCode 等产品类似,可以输入:

AIShell 界面

1. 使用 xiaohong-build-skill

此处,我们不再介绍 AIShell 的详细功能和能力,留给大家自行探索。
首先我们输入/确认一下所有功能是否都已经开启(默认是开启了所有的功能),如下图:

开启所有功能

虽然我们一句话就能实现 xiaohong 编译环境搭建、编译运行,但是为了了解背后的细节,我们先让 AIShell 帮我熟悉熟悉:

帮我看看这是什么: https://atomgit.com/huqi/xiaohong-build-skill,如何使用?

熟悉 xiaohong 编译 skill

此处我们理解权限安全规则,这里按需选择 Allow once 或者 Allow always,我选择的是 Allow always,可以左右键切换选择并回车确认:

AIShell敏感操作授权

接着我们就让 AIShell 执行这个 skill,如果遇到:

帮我实际运行这个 skill 来编译 xiaohong 固件

运行 skill 编写小鸿固件

从右侧任务列表我们可以看到类似的:

  • 检查前置条件
  • 检查华为云凭证
  • 创建 ESC 实例
  • 构建配置环境
  • 下载源码
  • 编译固件
  • 下载固件到本地
  • 清理资源

AIShell 任务列表

如果我们的华为云账号有幸绑定了短信,在 ECS 创建完我们也能收到短信,当然也能去控制台查看,类似:

小鸿编译 ECS 实例

接下来只需静静等待 Task 被一一执行完。理想情况下,我们会看到 AI Shell 会继续自动执行下去,
比如进入到 ECS 中安装依赖:

安装依赖

比如下载源码:

下载源码

最终能看到编译完成:

image.png

2. 下载固件

下载固件的方式有很多种,比如让 AIShell 上传到 OBS ,当然我们也可以去 ESC 实例里手动下载:

image.png

3. 后续

后续可以让 AIShell 指导我们烧录固件:

image.png

题外话:让 AIShell 帮我修改源码,重新编译固件写入我专属的引导语
image.png

image.png

释放资源

最后记得让 AIShell 释放资源:

帮我释放这次创建的所有资源

image.png

Q&A

    1. ⚠️ The maximum number of model requests in a single turn is exceeded

原因是触发了 MaaS 的限流,只需回复 “继续” 就行

MaaS单轮调用次数超限

    1. 如果我开发的不是 xiaohong 而是其他平台如 小智 等,那怎么办?

在我们看来,底层逻辑都是相通的,我们的目的是搭建编译环境–编译–获取产物,理论上只需要把相关的指导文档发给 AIShell 就行,类似的:

 我想搭建环境编译 https://github.com/78/xiaozhi-esp32 ,应该怎么做?

image.png

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐