跳转至

WSL_DOCKER环境使用指南

前置条件

  1. 确保PC网络可以正常访问Web,如Microsoft Store
  2. 系统要求: Windows 10(版本1903或更高) 或 Windows 11
  3. CPU虚拟化已启用(任务管理器 -> 性能 -CPU查看 -> 虚拟化:已启用)
  4. 磁盘剩余空间不低于100GB

启用WSL 2功能

以管理员身份打开PowerShell,执行下面命令。启用 WSL和虚拟机平台命令和设置WSL 2为默认版本命令。若wsl命令执行不成功,请参考wsl命令执行失败

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

安装完成后,重启系统。

安装Linux发行版和Docker Desktop

在Windows系统开始菜单中,搜索Microsoft Store并打开(如何查找Microsoft Store,请参考如何查找Microsoft Store应用

安装Ubuntu并初始化用户名和密码

从Microsoft Store中搜索并安装Ubuntu(如下左图)。 安装成功后,从Windows启动菜单中搜索并启动Ubuntu(如下右图)。按照提示信息,初始化用户名和密码。

Microsoft应用商店中的Ubuntu安装页面 从Windows开始菜单启动Ubuntu

安装Docker Desktop并启动Docker Desktop

从Microsoft Store中搜索并安装Docker Desktop(如下左图)。 安装成功后,从Windows启动菜单中搜索并启动Docker Desktop(如下右图)。

Microsoft应用商店中的Docker Desktop安装页面 从Windows开始菜单启动Docker Desktop

配置Docker Desktop

在"设置 > 通用"中勾选"使用基于 WSL 2 的引擎"(Use the WSL 2 based engine)(如下左图)。 在 "设置>资源>WSL 集成",启用 Docker 集成的已安装 WSL 2 分发版。(Enable integration with my default WSL distro)(如下右图)

在Docker Desktop通用设置中启用WSL 2引擎 在Docker Desktop资源设置中启用WSL集成

更多Docker Desktop优化配置,请参考 docker优化配置

WSL中运行docker环境

docker配置

在 WSL 命令界面,将当前用户加入到docker用户组,可以免sudo使用Docker

sudo usermod -aG docker $USER

安装git lfs工具

需要通过lfs下载Diting的开发镜像,因此需要先安装git lfs工具,只需安装一次即可。 在WSL中输入git --version命令检查版本,如git未安装或git版本低于1.8.2,需要通过下方命令安装git

sudo apt update && sudo apt install git -y

执行下方命令安装git lfs

sudo apt update && sudo apt install git-lfs -y

加载docker镜像

(1)从docker仓库中下载docker镜像文件 首次下载,配置git信息

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global credential.helper store
下载docker镜像
git clone https://gitcode.com/HiSpark/hispark-docker.git

按照界面提示,首次执行git clone命令时,需要输入gitcode账号和令牌信息,按照提示输入即可。

(2)加载镜像

cd hispark-docker
docker load -i ubuntu22.04_dt_env.tar

执行docker load命令后,如无异常,则会输出当前加载镜像名,如Loaded image: swr.cn-north-4.myhuaweicloud.com/hispark_docker/ubuntu22.04_dt:env 如果docker命令执行失败,请参考docker命令执行失败

创建容器

使用docker run命令创建容器。镜像名为上一步骤加载的镜像名,如下:

docker run -d -it swr.cn-north-4.myhuaweicloud.com/hispark_docker/ubuntu22.04_dt:env bash

如无异常情况,会输出64位的容器ID号,如744c012a440e11c4c25211452fe01e80658c4f0995e27513311de418bfb48d2f

进入容器

使用docker exec可进入容器,容器ID为上一步骤创建的ID号,如下:

docker exec -it 744c012a440e11c4c25211452fe01e80658c4f0995e27513311de418bfb48d2f bash

完整执行流程如下图

*完整执行流程如下图*

如果忘记容器ID号,可通过下面命令找到指定的容器ID

docker ps -a
docker exec -it ${CONTAINER ID} bash

*如果忘记容器ID号,可通过下面命令找到指定的容器ID*

docker中代码下载与编译

源码获取

首次下载,配置git信息

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global credential.helper store
下载diting代码
git clone https://gitcode.com/HiSpark/hs-fbb.git

源码获取

编译器获取

进入工程目录

cd hs-fbb

编译前运行预处理脚本。脚本读取 src/build/config/target_config/3322/3322.jsonrequires.toolchains 的名称和版本,从毕昇下载目录的 tools.json 清单选择当前 Linux 架构对应的安装包,校验 SHA256 后解压:

python3 src/tools/bin/fbb_tool/install_bisheng.py --root src --config src/build/config/target_config/3322/3322.json --platform linux

下载目录为 https://dl.hispark.hisilicon.com/?tool=bisheng。编译器存放目录由 nameversion 生成,版本号中的点替换为下划线。例如 bisheng 26.03.1 对应 src/tools/bin/compiler/bisheng_26_03_1

下载编译器

注意: tag_V26.08.1HiDiTing V26.08.1 首个正式版本因为缺少install_bisheng.py脚本,下载好tag或者发行版代码后,可以通过以下两种方式进行编译器下载。 - 方法1:拷贝代码仓主干src/tools/bin/fbb_tool/install_bisheng.py脚本到tag和发行版中,按上述流程操作下载; - 方法2:工程目录下,执行命令git submodule update --init --recursive,等待编译器同步到工程目录src/tools/bin/compiler/bisheng_26_03_1下。

SDK编译

进入sdk目录

cd src
构建普通社区固件
./build.py pack_diting_community
构建行车形态社区固件
./build.py pack_diting_community_bike
不带 target 执行 ./build.py 时,当前脚本会列出 8 个独立 target 和 4 个完整固件 target group。其中,diting-community-bike 是行车形态应用 target,pack_diting_community_bike 会联动构建启动镜像、恢复镜像、SELiteOS 和行车形态应用镜像并生成完整固件包。菜单序号由当前 config.py 中的定义顺序生成,建议直接使用 target 名称构建,避免后续目标调整造成误选。

编译目标选择界面:

编译脚本

编译结果:

编译结果

构建资源镜像

需要将界面、字体、应用等文件系统资源随固件一起烧写时,在容器内打开 src/build/config/target_config/3322/config.py,将本次构建所用 target 的 fs_image 设置为 True。例如 pack_diting_community 目标组对应 diting-community

target = {
    # 保留 config.py 中已有的完整字段,仅修改 diting-community 条目
    'diting-community': {
        # 其余配置保持不变
        'fs_image': True,
    },
}

完成配置后,在 src 目录重新构建:

./build.py pack_diting_community

构建脚本会调用 Linux 版 YAFFS2 镜像工具,并在 src/output/3322/file.bin 生成资源镜像,随后将其打包进 src/output/3322/fwpkg/diting-community.fwpkg。使用其他目标时,应修改与目标组对应的 target,并以该目标的实际输出文件名为准。

Windows 环境下的一站式 CLI 和 HiSpark Studio for VS Code 可构建代码固件,但不执行 file.bin 生成流程;需要资源镜像时使用本节的 WSL + Docker 环境。

固件获取

编译完成后,从 SDK 的 output/3322/fwpkg 输出目录获取 diting-community.fwpkg。启用 fs_image 后,还应确认 output/3322/file.bin 已生成且固件打包成功。WSL 中可通过 Docker 命令拷贝到 PC,请参考docker数据拷贝

如需直接验证开发板,可从 tag_V26.08.1 发行版下载 26.08.1 默认社区固件。该固件使用 pack_diting_community 目标组构建,应用 target 为 diting-communityfs_imageTrue,资源镜像 file.bin 已包含在 .fwpkg 中。

固件获取编译

烧写与调试

工具获取

BurnTool

  • 下载链接:HiSpark资源下载中的BurnTool 26.03.3

  • 功能支持:

    • 支持多种烧写协议(基于脚本集成)
    • 支持eFuse读写
    • 支持Flash导出
    • 支持cmd命令行烧写或者BurnTool GUI烧写
    • 支持一拖多

DebugKits

  • 下载链接:HiSpark资源下载中的DebugKits 26.03.3

  • 功能支持:

    • 支持日志查看
    • 支持自定义参数配置
    • 支持自定义维测命令
    • 支持多种数据导入导出
    • 支持寄存器读写
    • 支持死机分析

串口工具

推荐SSCOM V5.13.1- 用于串口调试,不单独提供,可自行百度下载安装

开发板

开发板接口与接线

HiDiTing V100 社区开发板主要接口

  • 电源:type-c 5V电源供电
  • 屏幕:MIPI/QSPI屏幕
  • USB转串口:USB转串口板两块,分别用于烧写和调试(推荐FT232RL USB To TTL UART,可淘宝/京东采购);PC端需要安装对应驱动才可识别串口板(推荐:CDM21228串口驱动,可百度下载安装)
  • 波特率:串口工具/BurnTool波特率为750000;DebugKits波特率为921600
  • 开关键:支持上下电
  • Power键:亮屏、切页面
  • 接线:开发板上T2用于烧写和串口通信,T3用于DebugKits调试,开发板的RX/TX与串口小板的RX/TX反接,即:开发板RX接串口板TX,开发板TX接串口板RX,开发板地线GND任选与串口板地线GND连接

开发板接口、电平、拨码开关和外设接线详见社区开发板使用指南;模组管脚、电源和 PCB 参考设计详见硬件用户指南

固件烧写

BurnTool配置与烧写

因串口工具和烧写工具共用一个串口,所以烧写固件时,串口工具里要关闭串口

*因串口工具和烧写工具共用一个串口,所以烧写固件时,串口工具里要关闭串口*

  • ① 操作按钮中切换芯片
  • ② 选择Hi3322
  • ③ 切换串口为烧写串口(与串口工具共用一个串口,可在串口工具中设置波特率750000上电看串口是否有日志打印,选择有打印的串口作为烧写串口,如图中COM4)
  • ④ 勾选"自动烧写"
  • ⑤ 勾选"烧写完成后断开连接"
  • ⑥ 选择文件,选择SDK编译后的固件包"diting-community.fwpkg",下方列表中会展开各镜像信息
  • ⑦ 点击"连接"按钮开始烧写,如下图所示:

⑦ 点击"连接"按钮开始烧写,如下图所示

  • ① 点击"连接"并将开发板断电后重新上电,开始烧写;"连接"变成"断开连接",点击可以终止烧写
  • ② 烧写进度显示,烧写完成后,自动断开连接,显示所有镜像烧写成功

BurnTool固件烧写成功

使用 USB 加速烧写

开发板已有可正常启动的基础镜像时,可以使用 USB DFU 缩短完整固件的烧写时间:

  1. 在 BurnTool 的“Option > Change Chip”中选择 Hi3322-USB(部分版本显示为 3322-USB),填写 Vid=0x3361Pid=0x3322
  2. 选择本节编译得到的 diting-community.fwpkg,点击“Start burn”。
  3. 使用 750000 波特率打开 UART2 对应串口,发送 AT+USBDFUTRIGGER;开发板进入 USB DFU 后,以 BurnTool 的进度和 PASS/Fail 结果为准。

无法发送 AT 指令时,先将开发板断电并短接 UART2 的 RX2GND,点击“Start burn”后重新上电也可触发 USB 烧写;烧写结束后应断电并移除短接线。首次空板或基础镜像不能启动时,使用前述串口烧写流程。完整操作与注意事项参见 BurnTool 工具使用指南的 USB 快速烧写章节

烧写完成后,双击"Power键"亮屏进入APP list,下滑找到Hello World应用,点击应用进入,屏幕显示"Hello World"。

BurnTool工具更多用法和介绍,可参考HiDiTingV100 BurnTool工具 使用指南

串口调试

固件烧写完成后,打开串口工具,开启串口,输入正确的波特率,单板上下电会打印启动日志,后续开发板运行日志也在日志区域显示,如下图所示:

固件烧写完成后,打开串口工具,开启串口,输入正确的波特率,单板上下电会打印启动日志,后续开发板运行日志也在日志区域显示,如下图所示

  • ① 选择端口号,与烧写端口一致
  • ② 开启串口
  • ③ 串口波特率750000
  • ④ ①到③也可在"串口设置"中设置
  • ⑤ 点击"多字符串",可以显示多字符串列表
  • ⑥ 多字符串列表中填写AT调试命令,可以进行调试,如设置"退出低功耗模式"、设置"开发板系统时间"
  • ⑦ 多字符串命令发送需要先勾选"加回车换行"

DebugKits调试

开始 DebugKits 调试前,请确认开发板已连接 T3 调试线;T2 用于烧写和串口日志,T3 用于 DebugKits。两组线缆的用途不同,不能仅连接 T2。

以"Hello World"js应用开发为例,应用开发完成后,使用DebugKits推送应用安装包到开发板上进行日志调试

获取samples代码

从 hs-fbb 工程的 samples/js_samples/helloworld 目录中将 Hello World 应用工程源码拷贝到 Windows,可通过 Docker 命令拷贝到 PC,请参考docker数据拷贝

js应用编译

使用DevEco Studio For OpenHarmony(链接下载,以下简称DevEco Studio,推荐下载DevEco Studio 5.0 Release)打开js工程; 点击Build -> Build Hap(s)进行应用编译

js应用编译下载

DevEco Studio是基于IntelliJ IDEA Community开源版本打造,用作开发穿戴JS应用。当前HiDiTing产品使用的IDE版本为DevEco Studio 5.0 Release

更多 OpenHarmony JS 应用开发可参考工程目录下 samples/js_samples 中的样例代码,JS 应用开发指南可参考HiDiTingV100 OpenHarmony JS应用开发用户指南

DebugKits配置

  • 选择芯片3322

选择芯片3322

  • 配置端口号和波特率

配置端口号和波特率

应用包推送

编译成功后,从应用工程的 entry/build/default/outputs/default/bin 中找到应用包,并将其 Windows 磁盘路径配置到 DebugKits 中进行推送,例如 D:\332x\entry-default-unsigned.binsamples/js_samples 存放应用源码,SDK 归档的应用二进制位于 src/application/wearable/res/js/IDE5.0,其中 Hello World 应用包为 com.vendor.helloworld.bin

应用包推送成功

使用 DebugKits 从 System 页面将应用包推送到开发板,并将目标路径设置为 /user/helloworld.bin。必须先确认文件推送成功,再进入串口安装和应用调试步骤。

使用DebugKits推送应用包,从system页面推送到开发板指定路径并改名,方便后续使用(此路径应用安装时需要使用)

应用安装

确认 /user/helloworld.bin 已推送到开发板后,再在串口工具中执行安装命令:AT+OHOS=OHOSFWK_BM_INSTALL,/user/helloworld.bin。当前 SDK 注册的命令名为 OHOSFWK_BM_INSTALL;部分早期资料写作 OHOSFWK_INSTALL,请以仓库中的 OHOS 命令表为准。应用如果没有使用 OpenHarmony 应用市场签名,可先执行 AT+OHOS=OHOSFWK_BM_SET,disable 关闭签名后安装。

应用安装

更多AT调试指令用法和介绍,可参考HiDiTingV100 AT指令 使用指南

应用运行

应用安装完成后,双击 Power 键进入 APP list,滑动 APP list 找到 Hello World 应用,点击应用运行,显示如下:

应用安装完成后,双击 Power 键进入 APP list,滑动 APP list 找到 Hello World 应用,点击应用运行,显示如下

DebugKits工具更多用法和介绍,可参考HiDiTingV100 DebugKits工具 使用指南

其他

HiDiTing 开发进阶

更多Native/Native-js应用开发、外设驱动开发、蓝牙/星闪开发可参考开发文档快速入口 HiDiTing也提供了一些外设驱动的Demo和Demo开发指南,请参考"/docs/zh-CN/HiDiTingV100/samples/"路径下的指南,跟随指南可快速上手相关外设的应用开发

WSL+Docker环境搭建注意事项

避免C盘空间占用

将Docker数据目录迁移到其他分区(需通过Docker Desktop 设置 -> Advanced 调整磁盘路径)。在WSL中将项目代码存储在Linux文件系统(如~/project),而非/mnt/c/路径,避免占用C盘空间。

docker数据拷贝

(1) 将docker中的文件拷贝到宿主机Ubuntu目录下

在WSL中,通过

docker ps -a

获取目标容器ID(CONTAINER ID),通过下列命令,将docker容器中/home/{PATH}/{FILE_NAME}的文件,复制到宿主机的指定{LOCAL_PATH}路径下

docker cp {CONTAINER ID}:/home/{PATH}/{FILE_NAME} ${LOCAL_PATH}

如需要将CONTAINER ID为744c012a440e中的/home/diting下的images.tar.gz文件,拷贝到Ubuntu宿主机/home/build/projects下。执行命令如下:

docker cp 744c012a440e:/home/diting/images.tar.gz /home/build/projects

(2) 将Ubuntu上的文件复制到Windows

在Windows文件管理树结构中,找到Linux图标下的Ubuntu目录,展开子目录找到/home/build/projects,在里面找到images.tar.gz文件,直接拷贝复制到Windows上使用即可。

Windows文件资源管理器访问Ubuntu目录

其他docker命令参考

以下为部分可能会用到的docker命令,供参考。

容器停止:

docker stop {容器ID}

容器删除:

docker rm {容器ID}

镜像删除:

docker rmi {镜像ID} 或者 docker rmi {镜像名称}

退出容器:

exit

更多的git和git lfs相关配置指引参考

Linux中安装Git

WSL+Docker环境搭建常见问题排查

WSL命令执行失败

(1)执行wsl指令,若出现"未安装适用于Linux的Windows子系统"时,根据提示直接回车安装

(1)执行wsl指令,若出现"未安装适用于Linux的Windows子系统"时,根据提示直接回车安装

或在PowerShell中执行下面指令单独安装

wsl.exe --install

(2)若执行wsl命令报错,如下图

(2)若执行wsl命令报错,如下图

请在Windows开始菜单中,直接搜索wsl,手动启动wsl,并按提示安装

**请在Windows开始菜单中,直接搜索wsl,手动启动wsl,并按提示安装**

如何查找Microsoft Store应用

(1)Windows系统上,在开始菜单中,搜索Microsoft Store

(1)Windows系统上,在开始菜单中,搜索Microsoft Store

docker命令执行失败

(1)从Windows开始菜单中搜索WSL,点击启动。在终端界面输入

sudo docker info

有下面输出信息,即表明docker环境已运行正常

有下面输出信息,即表明docker环境已运行正常

(2)在PowerShell中,执行如下命令,查看WSL已安装的发行版及版本

wsl --list --verbose

wsl --list --verbose

因下载WSL、Ubuntu、Docker的顺序不同,可能默认的WSL发行版不是Ubuntu,可通过 wsl --set-default Ubuntu 命令切换

docker命令执行失败下载

docker优化配置

在 "设置>资源>高级"中,可以更改Disk image location路径(默认为C盘。建议修改到其他磁盘,且磁盘剩余空间大于100GB)。

在 "设置>资源>高级"中,可以更改Disk images location路径(默认为C盘。建议修改到其他磁盘,且磁盘剩余空间大于100GB)

更多 Docker 设置参见 Microsoft WSL 容器开发环境教程