> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 QSC CLI 构建 BSP 镜像

## 简介

本文档提供使用 `qsc-cli` 工具同步、构建和刷写镜像的说明。
它面向有权访问 Qualcomm 专有资源的注册用户。
`qsc-cli` 工具通过提供在容器化环境中运行任务的统一界面来简化工作流，
确保简单性、一致性和可复现性。

从高层次来看，您将学习以下内容：

* 设置并认证 `qsc-cli` – [安装 QSC-CLI](#install-qsc-cli)
* 使用 `qsc-cli` 同步所需的源代码和依赖项 – [下载软件](#download-the-software)
* 使用 `qsc-cli` 构建 Qualcomm 镜像 – [构建默认配置](#build-the-default-configuration)

## 主机要求

* 操作系统
  * Ubuntu
* 配置
  * 四核 CPU，例如 3.4 GHz 的 Intel i7-2600（同等或更好）
  * 300 GB 可用磁盘空间（交换分区 > 32 GB）
  * 16 GB RAM

## 安装 QSC-CLI

`qsc-cli` 是 Qualcomm 提供的命令行工具，提供端到端的工作流，
用于访问、管理和构建 Qualcomm 软件。请按照以下步骤在您的系统上安装
`qsc-cli`：

* 访问 [Qualcomm 支持页面](https://www.qualcomm.com/support/working-with-qualcomm)注册您的 Qualcomm 电子邮箱 ID。

* 下载 `qsc-cli` 的 Debian 软件包：

  <CodeGroup>
    ```bash x86 theme={null}
    wget https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Software_Center/Linux/Debian/latest.deb -O qsc_installer.deb
    ```

    ```bash ARM64 theme={null}
    wget https://softwarecenter.qualcomm.com/api/download/software/tools/Qualcomm_Software_Center/Linux/ARM64/Debian/latest.deb -O qsc_installer.deb
    ```
  </CodeGroup>

* 安装 `qsc-cli` Debian 软件包：
  ```bash theme={null}
  sudo apt update
  sudo apt install ./qsc_installer.deb
  ```

* 使用您的 Qualcomm ID 登录 `qsc-cli`。对于大多数用户，您的 Qualcomm ID 就是您的
  电子邮箱地址。此操作会打开浏览器窗口以完成身份验证。如果浏览器
  没有自动打开，请复制终端中打印的链接并将其粘贴到您的
  浏览器中完成身份验证。
  ```bash theme={null}
  qsc-cli login
  ```

## 配置参数

下表列出了 `chip-software download` 和 `chip-software compile` 命令使用的
`--product`、`--release`、`--image` 和 `--distribution` 参数值。

| --product | --release | --image |
| - | - | - |
| QCM6490.LE.2.0 | r00147.3 | ADSP.HT.5.5.c8  <br />CDSP.HT.2.5.c3 <br />AOP.HO.3.6     <br />BOOT.MXF.1.0.c1<br />TZ.XF.5.29 |
| QCS9100.LE.2.0 | r00147.1 | DSP.AT.1.0.1    <br />AOP.HO.3.6.1   <br />BOOT.MXF.1.0.c1<br />TZ.XF.5.29.1 |
| QCS8300.LE.2.0 | r00147.1 | DSP.AT.1.0.1    <br />AOP.HO.3.6.1   <br />BOOT.MXF.1.0.c1<br />TZ.XF.5.29.1 |
| QCS615.LE.2.0 | r00147.1 | BOOT.MXF.1.0.c1 <br />AOP.HO.3.6.2   <br />TZ.XF.5.29.1   <br />ADSP.VT.5.2.c6 <br />CDSP.VT.2.2.c4 |
| Hamoa\_IOT.LE.2.0 | r00030.1 | BOOT.MXF.2.4.2  <br />AOP.HO.5.2     <br />TZ.XF.5.0      <br />ADSP.HT.5.9    <br />CDSP.HT.2.9.c1 <br />BOOT.MXF\_UEFI.2.5 |
| Purwa\_IOT.LE.2.0 | r00030.1 | BOOT.MXF.2.4.2  <br />AOP.HO.5.2     <br />TZ.XF.5.0      <br />ADSP.HT.5.9    <br />CDSP.HT.2.9.c1 <br />BOOT.MXF\_UEFI.2.5 |
| CQ2390.LE.1.0 | r00091.1 | BOOT.MXF.1.0.c1 <br />BOOT.XF.4.1.4  <br />CDSP.VT.2.4.3  <br />LPAICP.FW\.1.2  <br />RPM.BF.1.16    <br />TZ.XF.5.0 |

| 发行版 | 描述 | 用途 |
| - | - | - |
| `Qualcomm_Linux.SPF.2.0\|TEST\|DEVICE\|PUBLIC` | 高级 OS 和预构建固件（无 modem） | 使用预构建固件进行无 modem 构建的开发者 |
| `Qualcomm_Linux.SPF.2.0\|AP\|Standard\|OEM\|NoModem` | 不含 modem 的高级 OS 和固件源码 | 使用 HLOS 构建无 modem 固件的开发者 |
| `Qualcomm_Linux.SPF.2.0\|AP\|Standard\|OEM` | 高级 OS 和固件（仅 GPS）源码 | 为 GPS 芯片组构建固件的开发者 |
| `Qualcomm_Linux.SPF.2.0\|AMSS\|Standard\|OEM` | 高级 OS 和固件（GPS 和 modem）源码 | 构建包含完整 modem 固件的开发者 |

## 支持的 SoC

下表列出了本指南涵盖的芯片组和发行版，并指明 QSC CLI 在 x64 和 ARM 主机系统上是否支持每种组合。

**QSC CLI (x86)**

| SoC | `TEST\|DEVICE\|PUBLIC` | `AP\|Standard\|OEM\|NoModem` | `AP\|Standard\|OEM` | `AMSS\|Standard\|OEM` |
| - | :-: | :-: | :-: | :-: |
| QCS6490/QCS5430 | ✗ | ✗ | ✗ | ✗ |
| IQ-9075 | ✗ | ✗ | — | — |
| IQ-8275 | ✗ | ✗ | — | — |
| IQ-615 | ✗ | ✗ | — | — |
| IQ-X7181 | ✗ | ✗ | — | — |
| IQ-X5121 | ✗ | ✗ | — | — |

**QSC CLI (ARM)**

| SoC | `TEST\|DEVICE\|PUBLIC` | `AP\|Standard\|OEM\|NoModem` | `AP\|Standard\|OEM` | `AMSS\|Standard\|OEM` |
| - | :-: | :-: | :-: | :-: |
| QCS6490/QCS5430 | ✗ | ✗ | ✗ | ✗ |
| IQ-9075 | ✗ | ✗ | — | — |
| IQ-8275 | ✗ | ✗ | — | — |
| IQ-615 | ✗ | ✗ | — | — |
| IQ-X7181 | ✗ | ✗ | — | — |
| IQ-X5121 | ✗ | ✗ | — | — |

✓ = 支持，— = 不适用，✗ = 未发布。

## 下载软件

使用 `chip-software download` 命令下载软件版本。使用
前面的表格查找适用于您 SoC 的 `--product`、`--release` 和 `--distribution`
值：

```bash theme={null}
qsc-cli chip-software download --workspace-path '<absolute-workspace-path>' --product '<product-id>' --release '<release-id>'  --distribution '<distribution-name>'
```

## 构建默认配置

### 编译

下载完成后，开始编译过程。根据软件规模和主机配置的不同，编译过程可能需要几个小时。

```bash theme={null}
qsc-cli chip-software compile --workspace-path '<absolute-workspace-path>'
```

此过程会构建所需的 Qualcomm 固件并完成 Qualcomm
Linux 构建。

### 重新编译

在对软件版本进行任何修改后，如需重新编译单个软件镜像，
请使用您已通过 QSC CLI 构建的现有工作区：

```bash theme={null}
qsc-cli chip-software compile --image '<image-name>' --workspace-path '<absolute-workspace-path>'
```

## 构建您自己的配置

要构建您自己的配置，您必须先使用默认
机器配置编译构建，然后使用您自己的
机器和发行版配置文件编译软件产品。

编译软件镜像时，请确保同时编译软件
产品。例如，如果您编译 `BOOT.MXF.1.0.c1`，请确保同时
编译软件产品（例如 `QCS9100.LE.2.0`）。

* 使用默认机器配置编译构建。

* 使用您自己的机器和发行版
  配置文件编译软件产品。
  ```bash theme={null}
  qsc-cli chip-software open-build-env --workspace-path <absolute-workspace-path> --image <software-image-name>
  ```
  此命令会打开一个终端。

* 根据您自己的机器配置更新高亮显示的命令，
  并在终端中运行它。例如，要构建 IQ-9075-EVK，请将 `<machine.yml>` 的值改为 `iq-9075-evk.yml`。
  <img src="https://mintcdn.com/qualcomm-staging/uWQLnBcS9sxlZhgB/Key-Documents/Firmware-Guide/media/k2c-qli-build-ga/qsc-cli-open-build-terminal.png?fit=max&auto=format&n=uWQLnBcS9sxlZhgB&q=85&s=9ef8058f00fbbf7c38f5ed39b7db0830" alt="build-own-config" width="1572" height="184" data-path="Key-Documents/Firmware-Guide/media/k2c-qli-build-ga/qsc-cli-open-build-terminal.png" />

- 构建会创建一个 tarball，包含执行完整全新烧录所需的所有相关文件，
  包括分区元数据、启动固件、ESP 分区和 rootfs。构建成功后，
  检查构建产物中是否存在 qcomflash tarball。以下示例
  使用 `qcom-multimedia-proprietary-image` 作为镜像名称。

  <CodeGroup>
    ```bash IQ-9075-EVK theme={null}
    ls build/tmp/deploy/images/iq-9075-evk/qcom-multimedia-proprietary-image-iq-9075-evk.rootfs.qcomflash.tar.gz
    ```

    ```bash IQ-8275-EVK theme={null}
    ls build/tmp/deploy/images/iq-8275-evk/qcom-multimedia-proprietary-image-iq-8275-evk.rootfs.qcomflash.tar.gz
    ```

    ```bash IQ-615-EVK theme={null}
    ls build/tmp/deploy/images/iq-615-evk/qcom-multimedia-proprietary-image-iq-615-evk.rootfs.qcomflash.tar.gz
    ```

    ```bash QCS6490 theme={null}
    ls build/tmp/deploy/images/rb3gen2-core-kit/qcom-multimedia-proprietary-image-rb3gen2-core-kit.rootfs.qcomflash.tar.gz
    ```

    ```bash IQ-X7181-EVK theme={null}
    ls build/tmp/deploy/images/iq-x7181-evk/qcom-multimedia-proprietary-image-iq-x7181-evk.rootfs.qcomflash.tar.gz
    ```

    ```bash IQ-X5121-EVK theme={null}
    ls build/tmp/deploy/images/iq-x5121-evk/qcom-multimedia-proprietary-image-iq-x5121-evk.rootfs.qcomflash.tar.gz
    ```

    ```bash IQ2390 / CQ2390 theme={null}
    ls build/tmp/deploy/images/shikra-evk/qcom-multimedia-proprietary-image-shikra-evk.rootfs.qcomflash.tar.gz
    ```
  </CodeGroup>

<Warning>
  环境是为运行特定软件镜像的自定义构建命令而设置的。
  QSC 在未来的版本中不会跟踪输入工作区的状态，
  并且您无法使用 qsc-cli 刷写这些工作区。
</Warning>
