Windows Wsl Source Build And Flash
适用对象:参照《开发环境搭建》、《系统烧录与初始化》在 Windows + WSL 环境中通过 Docker 从源码构建并烧录 NE301 的用户。本篇仅做参考,具体可结合设备使用情况分析。
以下是关键过程示例:
1. 环境准备
- 安装/启用
- Windows 10/11 + WSL2(推荐 Ubuntu)。
- Docker Desktop,并在 Settings → Resources → WSL Integration 中启用对应发行版。
- STLink 驱动安装:https://www.st.com/en/development-tools/stsw-link009.html?utm_source=chatgpt.com#get-software
- STM32CubeProgrammer: https://www.st.com/en/development-tools/stm32cubeprog.html#get-software (可辅助验证调试器与连接线)
- 克隆仓库(WSL 中完成)
git clone https://github.com/camthink-ai/ne301.git
cd ne301 - 修正 CRLF 脚本
有些脚本在 Windows 中会变成 CRLF,执行会报
$'\r': command not found。在 WSL 中将其改为 LF:sed -i 's/\r$//' Script/generate-reloc-model.sh - 确认 WSL 能访问 Docker 命令:
docker version应输出客户端信息。
2. 透传 ST-LINK 到 WSL
-
在 管理员 PowerShell 中安装 usbipd-win(已安装可跳过):
winget install --exact dorssel.usbipd-win -
插好 ST-LINK,查设备:
usbipd list记下 ST-LINK 所在的
<busid>(例如,可能是: 2-3)。 -
强制绑定并启用自动挂载到所有 WSL2 发行版:
usbipd bind --force --busid <busid>
usbipd attach --wsl --auto-attach --busid <busid>

-
若提示需要重启,重启 Windows 后重跑以上命令。
-
如果 attach 提示 failed,可
usbipd detach --busid <busid>、usbipd unbind --busid <busid>、wsl --shutdown后重插 ST-LINK,再重复 bind/attach。
Tips: 如果使用STM32CubeProgrammer连接绑定了STLink,需断开连接再重新透传到WSL。
-
-
回到 WSL,验证:
lsusb能看到
0483:3748 STMicroelectronics ST-LINK/V2即表示透传成功。若中途 ST-LINK 重枚举导致消失,重复 PowerShell 的 attach 步骤即可。
3. 启动 Docker 开发容器
在 WSL 的仓库目录运行(推荐使用 $(pwd),不要在 PowerShell 中用 \ 续行):
docker run -it --rm --privileged \
-v "$(pwd)":/workspace \
-v /dev/bus/usb:/dev/bus/usb \
camthink/ne301-dev:latest
若必须在 PowerShell 运行,请改为单行或使用反引号
`续行;主机缺少/dev/bus/usb时无法透传,仍建议在 WSL 中执行。
进入容器后,确认工具链与 ST-LINK:
STM32_Programmer_CLI -l
若未列出 ST-LINK,再检查 usbipd attach 状态。
4. 构建 + 烧录流程
- 推荐一键命令(容器内):
make flash - 如果仅需构建:
make # FSBL + App + Web + Model
make app # 等同单模块 - 分组件烧录:
make flash-fsbl
make flash-app
make flash-web
make flash-model
make flash-wakecore