Windows中使用脚本一键配置OpenHarmony编译环境
硬件环境配置与代码烧录
WSL2以及Ubuntu的一键安装
将以下脚本复制并保存为一个后缀为.ps1的脚本(注意,如果直接复制的话,会导致一个编码的问题,建议直接使用课程提供的资源包里已经修改编码的脚本)
#===============================================================================
# ws63_ohos WSL 开发环境一键配置脚本
#
# 用法(以管理员身份运行 PowerShell):
# .\setup_wsl_ws63.ps1 -p 1 # 启用 WSL、安装内核更新,需重启
# .\setup_wsl_ws63.ps1 -p 2 # 下载并导入 fbb_ws63_wsl(重启后执行)
# .\setup_wsl_ws63.ps1 -p 2 -InstallDir "D:\ubuntu" -TarPath "D:\fbb_ws63_wsl.tar"
#
# 参数说明:
# -p 1|2 阶段 1 或 2(因需重启,分两阶段执行)
# -InstallDir 可选,WSL 发行版安装目录,默认 D:\ubuntu
# -TarPath 可选,fbb_ws63_wsl.tar 保存路径,默认 %USERPROFILE%\Downloads\fbb_ws63_wsl.tar
#===============================================================================
param(
[Parameter(Mandatory=$true)]
[Alias("p")]
[ValidateSet(1, 2)]
[int]$Phase,
[string]$InstallDir = "",
[string]$TarPath = ""
)
# 检查管理员权限
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "错误:请以管理员身份运行 PowerShell" -ForegroundColor Red
Write-Host "右键 PowerShell -> 以管理员身份运行" -ForegroundColor Yellow
exit 1
}
$WslUpdateUrl = "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi"
$FbbWs63TarUrl = "https://hispark-obs.obs.cn-east-3.myhuaweicloud.com/fbb_ws63_wsl.tar"
if ($InstallDir -eq "") { $InstallDir = "D:\ubuntu" }
if ($TarPath -eq "") { $TarPath = Join-Path $env:USERPROFILE "Downloads\fbb_ws63_wsl.tar" }
#-------------------------------------------------------------------------------
# Phase 1: 启用 WSL、虚拟机平台、安装内核更新
#-------------------------------------------------------------------------------
if ($Phase -eq 1) {
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " Phase 1: 启用 WSL 并安装内核更新" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "`n[1/3] 启用 WSL 功能..." -ForegroundColor Green
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
if ($LASTEXITCODE -ne 0) { Write-Host " WSL 可能已启用,继续..." -ForegroundColor Yellow }
Write-Host "`n[2/3] 启用虚拟机平台..." -ForegroundColor Green
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
if ($LASTEXITCODE -ne 0) { Write-Host " 虚拟机平台可能已启用,继续..." -ForegroundColor Yellow }
Write-Host "`n[3/3] 下载并安装 Linux 内核更新包..." -ForegroundColor Green
$msiPath = Join-Path $env:TEMP "wsl_update_x64.msi"
try {
Invoke-WebRequest -Uri $WslUpdateUrl -OutFile $msiPath -UseBasicParsing
Start-Process msiexec.exe -ArgumentList "/i", $msiPath, "/quiet", "/norestart" -Wait
Write-Host " ✓ 内核更新包已安装" -ForegroundColor Green
} catch {
Write-Host " 自动下载失败,请手动下载并安装:" -ForegroundColor Yellow
Write-Host " $WslUpdateUrl" -ForegroundColor Yellow
exit 1
}
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host " Phase 1 完成!必须重启电脑。" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "`n重启后,以管理员身份再次运行本脚本,执行 Phase 2:" -ForegroundColor Yellow
Write-Host " .\setup_wsl_ws63.ps1 -p 2" -ForegroundColor White
Write-Host "`n可选:指定安装目录和 tar 保存路径:" -ForegroundColor Gray
Write-Host " .\setup_wsl_ws63.ps1 -p 2 -InstallDir `"D:\ubuntu`" -TarPath `"D:\fbb_ws63_wsl.tar`"" -ForegroundColor Gray
$restart = Read-Host "`n是否立即重启?(Y/N)"
if ($restart -eq "Y" -or $restart -eq "y") { shutdown /r /t 60 }
exit 0
}
#-------------------------------------------------------------------------------
# Phase 2: 下载 fbb_ws63_wsl.tar 并导入
#-------------------------------------------------------------------------------
if ($Phase -eq 2) {
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " Phase 2: 下载并导入 fbb_ws63_wsl" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
$tarDir = Split-Path $TarPath -Parent
if (-not (Test-Path $tarDir)) {
New-Item -ItemType Directory -Path $tarDir -Force | Out-Null
}
if (-not (Test-Path $TarPath)) {
Write-Host "`n[1/2] 下载 fbb_ws63_wsl.tar(约 2GB+,请耐心等待)..." -ForegroundColor Green
try {
Invoke-WebRequest -Uri $FbbWs63TarUrl -OutFile $TarPath -UseBasicParsing
Write-Host " ✓ 下载完成:$TarPath" -ForegroundColor Green
} catch {
Write-Host " 自动下载失败,请手动下载后指定 -TarPath 参数:" -ForegroundColor Yellow
Write-Host " $FbbWs63TarUrl" -ForegroundColor Yellow
exit 1
}
} else {
Write-Host "`n[1/2] 已存在:$TarPath,跳过下载" -ForegroundColor Green
}
$installParent = Split-Path $InstallDir -Parent
if (-not (Test-Path $installParent)) {
New-Item -ItemType Directory -Path $installParent -Force | Out-Null
}
Write-Host "`n[2/2] 导入 WSL 发行版 fbb_ws63..." -ForegroundColor Green
wsl --import fbb_ws63 $InstallDir $TarPath
if ($LASTEXITCODE -eq 0) {
Write-Host " ✓ 导入完成" -ForegroundColor Green
wsl --list
} else {
Write-Host " 导入失败" -ForegroundColor Red
exit 1
}
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host " Phase 2 完成!" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "`n建议重启电脑以避免卡顿。" -ForegroundColor Yellow
Write-Host "`n后续步骤(需手动):" -ForegroundColor White
Write-Host " 1. 安装 VSCode: https://code.visualstudio.com/" -ForegroundColor Gray
Write-Host " 2. 安装 Remote Development 扩展" -ForegroundColor Gray
Write-Host " 3. 打开 VSCode -> 远程资源管理器 -> 选择 fbb_ws63 -> 连接" -ForegroundColor Gray
Write-Host " 4. 在 WSL 终端中运行下载脚本获取源码:bash /root/download_ws63_ohos.sh" -ForegroundColor Gray
exit 0
}
脚本的执行流程:打开powershell(管理员模式打开),cd到脚本所在的文件,并依次执行以下命令
.\setup_wsl_ws63.ps1 -p 1此命令用于启用WSL和虚拟机平台,更新并安装内核,命令执行之后需要重启电脑,并执行后续命令。若脚本不可执行,则使用命令powershell -ExecutionPolicy Bypass -File .\setup_wsl_ws63.ps1 -p 1.\setup_wsl_ws63.ps1 -p 2此命令用于下载并导入fbb_ws63.tar(重启后执行),并耐心等待,注意如果下载进度消失了并且画面静止,可能需要我们手动按回车。如果之前没有安装过wsl,过程中可能会提示要求安装最新版的wsl,点击任意按键进行下载即可。若不可执行,参考上一个步骤
打开VSCode,下载扩展Remote Development
接下来打开VSCode并远程连接到该Linux,Ctrl+`(也就是Ctrl再加上Esc下面的按键)打开命令行终端
在Linux中配置相关工具链一键安装的脚本
将以下脚本复制并保存为一个后缀为.sh的脚本,注意是保存在Linux中的root目录下,
#!/bin/bash
#===============================================================================
# ws63_ohos 一键下载和配置开发环境脚本
# 用法:bash /root/download_ws63_ohos.sh [安装目录]
# 不指定目录时,默认安装到 $HOME/ws63_ohos
#===============================================================================
set -e
TARGET_DIR="${1:-$HOME/ws63_ohos}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "=========================================="
echo " ws63_ohos 一键下载和配置开发环境"
echo "=========================================="
echo "安装目录: $TARGET_DIR"
echo ""
#-------------------------------------------------------------------------------
# 1. 安装 repo 工具
#-------------------------------------------------------------------------------
echo "[1/7] 安装 repo 工具..."
mkdir -p ~/bin
if [ ! -f ~/bin/repo ]; then
curl -sL https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod a+x ~/bin/repo
fi
pip3 install -q -i https://repo.huaweicloud.com/repository/pypi/simple requests 2>/dev/null || true
echo " ✓ repo 已就绪"
#-------------------------------------------------------------------------------
# 2. 安装 git-lfs
#-------------------------------------------------------------------------------
echo "[2/7] 安装 git-lfs..."
if ! command -v git-lfs &>/dev/null; then
sudo apt-get update -qq
sudo apt-get install -y -qq git-lfs
fi
git lfs install 2>/dev/null || true
echo " ✓ git-lfs 已就绪"
#-------------------------------------------------------------------------------
# 3. 配置 repo 环境变量
#-------------------------------------------------------------------------------
echo "[3/7] 配置 repo 环境变量..."
if ! grep -q 'export PATH=~/bin:\$PATH' ~/.bashrc 2>/dev/null; then
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
fi
export PATH=~/bin:$PATH
echo " ✓ PATH 已配置"
#-------------------------------------------------------------------------------
# 4. 通过 repo 下载源码
#-------------------------------------------------------------------------------
echo "[4/7] 通过 repo 下载源码(耗时较长,请耐心等待)..."
mkdir -p "$TARGET_DIR"
cd "$TARGET_DIR"
if [ ! -d .repo ]; then
repo init -u https://gitee.com/HiSpark/manifest.git -b OpenHarmony-v5.1.0-Release -m default-ws63-without-xts.xml --no-repo-verify
fi
repo sync -c
repo forall -c 'git lfs pull'
echo " ✓ 源码下载完成"
#-------------------------------------------------------------------------------
# 5. 下载预编译工具链
#-------------------------------------------------------------------------------
echo "[5/7] 下载预编译工具链..."
cd "$TARGET_DIR"
./build/prebuilts_download.sh
echo " ✓ 预编译工具链下载完成"
#-------------------------------------------------------------------------------
# 6. 安装 hb 构建工具
#-------------------------------------------------------------------------------
echo "[6/7] 安装 hb 构建工具..."
cd "$TARGET_DIR"
python3 -m pip install --user build/hb -q
# pip --user 安装到 ~/.local/bin,需加入 PATH
LOCAL_BIN="$HOME/.local/bin"
if [ -d "$LOCAL_BIN" ]; then
export PATH="$LOCAL_BIN:$PATH"
if ! grep -qF "$LOCAL_BIN" ~/.bashrc 2>/dev/null; then
echo "" >> ~/.bashrc
echo "# pip --user 安装的可执行文件" >> ~/.bashrc
echo "export PATH=\"$LOCAL_BIN:\$PATH\"" >> ~/.bashrc
echo " ✓ ~/.local/bin 已加入 ~/.bashrc"
fi
fi
echo " ✓ hb 已安装"
#-------------------------------------------------------------------------------
# 7. 安装 cmake(可选)
#-------------------------------------------------------------------------------
echo "[7/7] 安装 cmake..."
if ! command -v cmake &>/dev/null; then
sudo apt-get install -y -qq cmake
fi
echo " ✓ cmake 已就绪"
#-------------------------------------------------------------------------------
# 8. 配置工具链环境变量
#-------------------------------------------------------------------------------
TOOLCHAIN_PATH="$TARGET_DIR/device/soc/hisilicon/ws63v100/sdk/tools/bin/compiler/riscv/cc_riscv32_musl_100/cc_riscv32_musl/bin"
BASHRC_ENTRY="export PATH=$TOOLCHAIN_PATH:\$PATH"
if ! grep -qF "$TOOLCHAIN_PATH" ~/.bashrc 2>/dev/null; then
echo "" >> ~/.bashrc
echo "# ws63_ohos RISC-V 工具链" >> ~/.bashrc
echo "$BASHRC_ENTRY" >> ~/.bashrc
echo " ✓ 工具链已写入 ~/.bashrc"
else
echo " ✓ 工具链已在 ~/.bashrc 中"
fi
#-------------------------------------------------------------------------------
# 完成提示
#-------------------------------------------------------------------------------
echo ""
echo "=========================================="
echo " 下载和配置完成!"
echo "=========================================="
echo ""
echo "请执行以下命令使环境变量生效:"
echo " source ~/.bashrc"
echo ""
echo "验证工具链:"
echo " riscv32-linux-musl-gcc -v"
echo ""
echo "【编译系统】在源码根目录执行:"
echo " cd $TARGET_DIR"
echo " hb set -p nearlink_dk_3863"
echo " hb build -f"
echo ""
echo "或一键完整编译(含清理):"
echo " cd $TARGET_DIR"
echo " rm -rf out && hb set -p nearlink_dk_3863 && hb build -f"
echo ""
echo "编译完成后,固件位于:"
echo " $TARGET_DIR/out/nearlink_dk_3863/nearlink_dk_3863/ws63-liteos-app/ws63-liteos-app_all.fwpkg"
echo ""
如果你是夜猫子,三更半夜突然有闲情配环境了(如果是在白天配置,请跳过这一部分,直接看执行脚本那一步):
-
那么在执行脚本前,请先准备好你的 Gitee 用户名和密码(Gitee 在深夜时段有可能会强制要求登录认证,白天匿名即可访问)
-
并在上面的脚本开头的
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"这一行代码的下面添加以下代码:#------------------------------------------------------------------------------- # 0. 配置 Gitee 凭据(自动认证,避免手动输入) #------------------------------------------------------------------------------- GITEE_USERNAME="<用户名>" GITEE_PASSWORD="<密码>" # URL 编码密码(将 @ 转换为 %40) GITEE_PASSWORD_ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$GITEE_PASSWORD', safe=''))") # 配置 git 凭据存储 git config --global credential.helper store 2>/dev/null || true # 写入凭据到 ~/.git-credentials(如果尚未存在) if ! grep -q "gitee.com" ~/.git-credentials 2>/dev/null; then echo "https://${GITEE_USERNAME}:${GITEE_PASSWORD_ENCODED}@gitee.com" >> ~/.git-credentials chmod 600 ~/.git-credentials 2>/dev/null || true fi # 配置 git 用户信息(如果尚未配置) if [ -z "$(git config --global user.name 2>/dev/null)" ]; then git config --global user.name "$GITEE_USERNAME" fi if [ -z "$(git config --global user.email 2>/dev/null)" ]; then git config --global user.email "${GITEE_USERNAME}@gitee.com" fi -
然后将脚本中gitee的用户名和密码改为自己的
Linux下执行脚本
接下来依次执行以下命令:
cd /root进入到root目录chmod +x ./download_ws63_ohos.sh用于给脚本添加可执行权限./download_ws63_ohos.sh执行脚本,耐心等待- 如果执行脚本发生错误,可能是因为从Windows下复制到Linux的文件产生了经典的Windows/Linux 换行符不兼容的问题,需要进行以下操作进行解决:
sudo apt install dos2unix安装 dos2unix 工具dos2unix ./download_ws63_ohos.sh转换文件./download_ws63_ohos.sh执行脚本
- 脚本执行完成后,最后打印的信息中会提醒你执行一些命令:
source ~/.bashrc使环境变量生效riscv32-linux-musl-gcc -v验证工具链的完整性cd ws63_ohos进入到源码目录中rm -rf out && hb set -p nearlink_dk_3863 && hb build -f一键完整编译,包含了“清理 + 选择芯片型号 + 编译”,如果没有红色报错即为环境配置成功,不需要理会WARNING
编译我们编写的项目
-
首先修改
applications/sample/wifi-iot/app/BUILD.gn,需要在features中修改为项目对应的静态库名称, -
在
device/soc/hisilicon/ws63v100/sdk/build/config/target_config/ws63/config.py中ws63-liteos-app下的ram_component中添加对应的组件名(通常和静态库名称一致), -
在
device/soc/hisilicon/ws63v100/sdk/libs_url/ws63/cmake/ohos.cmake中的 COMPONENT_LIST 中添加对应的组件名称(通常和静态库名称保持一致), -
然后在openharmony sdk根目录执行:
rm -rf out && hb set -p nearlink_dk_3863 && hb build -f进行编译。
烧录流程
所需工具:
| 工具 | 用途 | 获取方式 |
|---|---|---|
| BurnTool | 固件烧录 | https://gitee.com/hihope_iot/near-link/tree/master/tools |
| CH340 驱动 | 串口驱动 | https://www.wch.cn/downloads/CH343SER_EXE.html |
| 串口调试助手 | 查看日志 | 微软商店搜索“串口调试助手”直接下载即可 |
步骤:
- 连接开发板:USB 连接电脑,安装 CH340 驱动。
- 打开 BurnTool:选择对应串口,顶部菜单栏Option → 芯片选择 WS63(WS63E 与 WS63 同系列)
- 选择波特率(可选):顶部菜单栏Settings -> Settings,将Baud改为921600,这样烧录的速度更快
- 选择烧录文件:
- 路径示例:
out/nearlink_dk_3863/nearlink_dk_3863/ws63-liteos-app/ - 文件:
ws63-liteos-app_all.fwpkg
- 勾选:
Auto Burn、Auto disconnect。 - 点击 Connect,然后单按开发板 RST 按键开始烧录。
- 烧录完成后按 Reset 重启开发板。
- 打开串口工具(波特率 115200)查看启动日志。
更多推荐

所有评论(0)