硬件环境配置与代码烧录

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
串口调试助手查看日志微软商店搜索“串口调试助手”直接下载即可
步骤:
  1. 连接开发板:USB 连接电脑,安装 CH340 驱动。
  2. 打开 BurnTool:选择对应串口,顶部菜单栏Option → 芯片选择 WS63(WS63E 与 WS63 同系列)
  3. 选择波特率(可选):顶部菜单栏Settings -> Settings,将Baud改为921600,这样烧录的速度更快
  4. 选择烧录文件
  • 路径示例:out/nearlink_dk_3863/nearlink_dk_3863/ws63-liteos-app/
  • 文件:ws63-liteos-app_all.fwpkg
  1. 勾选Auto BurnAuto disconnect
  2. 点击 Connect,然后单按开发板 RST 按键开始烧录。
  3. 烧录完成后按 Reset 重启开发板。
  4. 打开串口工具(波特率 115200)查看启动日志。
Logo

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

更多推荐