使用 AIShell 在华为云上编译 xiaohong 固件完整指南

前言

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

这次我们尝试把 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

整体流程

流程可以理解为:

  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 我们应该能看如下界面,和我们常用的 OpenCode、AtomCode 等产品类似,可以输入:

1. 使用 xiaohong-build-skill

此处,我们不再介绍 AIShell 的详细功能和能力,留给大家自行探索。

首先我们输入/确认一下所有功能是否都已经开启(默认是开启了所有的功能),如下图:

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

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

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

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

复制代码
帮我实际运行这个 skill 来编译 xiaohong 固件

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

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

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

接下来只需静静等待 Task 被一一执行完。理想情况下,我们会看到 AI Shell 会继续自动执行下去,

比如进入到 ECS 中安装依赖:

比如下载源码:

最终能看到编译完成:

2. 下载固件

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

3. 后续

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

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

释放资源

最后记得让 AIShell 释放资源:

复制代码
帮我释放这次创建的所有资源

Q&A

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

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

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

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

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