概述
Windows 用户开发 Ai-WB2 使用官方支持(SDK 自带 Windows 工具链)的 MSYS2 方案:装一个 MSYS2 终端(让 Windows 能用 Linux 风格的 make 命令),在里面克隆 SDK、编译、烧录,全程无需虚拟机。本教程按完整流程(装 MSYS2 → 克隆 SDK → 配环境变量 → 编译 → 烧录),带你用官方 helloworld 示例跑通第一个程序。
用大白话讲:Windows 自带命令提示符干不了「编译」这活,MSYS2 相当于在 Windows 里装一个「小号 Linux 命令行」,SDK 的编译命令只有在这个环境里才跑得起来。本教程做完,你的 Windows 电脑就具备了完整的开发能力,后面的教程都是「照着菜谱做菜」。
本教程基于安信可官方 SDK(Ai-Thinker-Open/Ai-Thinker-WB2,版本
release_bl_iot_sdk_1.6.40)编写。官方 SDK 自带的 Windows 工具链在toolchain/riscv/MSYS/目录下(MSYS = Windows 上的 Linux 模拟环境),本教程即官方支持的 Windows 开发方案。
浏览器打开 MSYS2 官网(https://www.msys2.org/),下载安装包(文件名类似 msys2-x86_64-*.exe),双击一路「下一步」安装,安装目录建议保持默认(如 C:\msys64)。
安装完成后,从开始菜单打开 MSYS2 MINGW64(名字带 MINGW64 的那个,不是 MSYS2 MSYS),出现一个黑色终端窗口即成功。
说明:MSYS2 是 Windows 上的「Linux 风格命令行环境」,SDK 的编译命令(
make)必须在这个终端里执行,在普通的「命令提示符 cmd」里执行会报「不是内部或外部命令」。
然后安装编译用的两个软件包(在 MSYS2 终端里执行):
pacman -S git make
说明:
pacman是 MSYS2 自带的软件安装命令,-S表示安装;git(拉取代码)和make(编译命令)是官方方案必需的。看到一堆Proceed with installation? [Y/n]提示时按回车确认。国内网络下载慢时,可参考网上「MSYS2 更换清华源」教程加速。
在 MSYS2 终端里执行(--recursive 必须带上,用于拉取子模块):
git clone --recursive https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2.git
说明:
git clone是「下载仓库」命令。⚠️ 一定用git clone命令克隆,不要手动下载 GitHub 页面的 Zip 压缩包——SDK 的toolchain/工具链目录是空目录(由 git 子模块机制拉取),手动解压 zip 会导致工具链缺失、后面编译必失败。国内网络下载 GitHub 慢或失败时,改用官方提供的 Gitee(码云)镜像,内容完全一致:
git clone --recursive https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2.git
下载完成后(进度条走满、回到命令提示符),确认目录存在:
ls ~/Ai-Thinker-WB2
能看到 applications、components、toolchain 等目录即克隆成功。
💡 MSYS2 里的
~相当于你的 Windows 用户目录(C:\Users\你的用户名\)。后续所有教程的cd ~/Ai-Thinker-WB2/applications/...都基于这个位置。
这一步让系统能找到工具链里的编译器。打开 Windows 设置 → 系统 → 系统信息 → 高级系统设置 → 环境变量,在「用户变量」里操作两步:
第一步:新建变量,变量名 MSYS2_PATH_TYPE,变量值 inherit(表示 MSYS2 继承 Windows 环境变量,不然烧录脚本找不到串口)。
第二步:选中「Path」变量 → 点「编辑」→ 「新建」,添加下面两行(路径按你的实际安装位置改):
C:\msys64\usr\bin
C:\Users\你的用户名\Ai-Thinker-WB2\toolchain\riscv\MSYS\bin
说明:第一行是 MSYS2 的常用命令目录(让
git/make在普通命令行里也能用);第二行是 SDK 的 Windows 工具链目录(里面是riscv64-unknown-elf-gcc.exe等编译器,官方专为 Windows 打包的)。两行都要加,少了哪个后面都会报「找不到命令」。
添加完成后重启 MSYS2 终端(关掉重开),让新环境变量生效。
在(重启后的)MSYS2 终端里进入官方入门示例工程,执行编译:
cd ~/Ai-Thinker-WB2/applications/get-started/helloworld
make -j8
说明:
make是「编译」命令(把 C 代码变成开发板能运行的固件),-j8表示 8 个任务并行编译更快。必须在 helloworld 工程目录内执行(刚才cd已进入)。首次编译需要几分钟(要编译整个 SDK 组件),之后增量编译很快。
编译成功后会生成固件 build_out/helloworld.bin,并显示:
✓ Built target helloworld
看到这行即编译成功。
⚠️ 若报
make: command not found或riscv64-unknown-elf-gcc: No such file or directory,说明步骤③的环境变量没配好或没重启终端,检查路径后重试。
开发板用 Type-C 数据线连接电脑,先确认串口号:打开 Windows 设备管理器(右键开始菜单 → 设备管理器),展开「端口 (COM 和 LPT)」,能看到类似 USB-SERIAL CH340 (COM3) 的一项,记下括号里的 COM 号(如 COM3)。
说明:设备管理器里没有串口设备,说明数据线只能充电不能传数据,或没装 USB 转串口驱动(Ai-WB2 开发板常用 CH340 芯片,官网或驱动精灵可下载驱动),换线/装驱动后重试。
然后在 MSYS2 终端执行烧录(p= 后是你的 COM 号):
make flash p=COM3 b=921600
说明:
p=是串口号(Windows 用COM加数字表示,和 Linux 的/dev/ttyUSB0格式不同);b=是烧录波特率(传输速度),官方固定921600。
看到 Waiting for download... 之类的提示时,长按开发板上的 EN 键(RST 复位键)约 1 秒后松开,开发板进入下载模式,进度条开始走动。
⏳ 进度条走到 100% 并提示烧录完成即成功。若一直停在等待状态,多半是 EN 键没按对,重按一次试试。
烧录完成后开发板自动重启运行程序。串口工具种类很多,这里推荐在 MSYS2 里直接安装 screen(和 Linux 教程一致):
pacman -S screen
说明:
screen是串口查看工具,装好后在 MSYS2 终端里用它打开串口观察输出。
screen /dev/ttyS2 921600
说明:注意端口名的变化——Windows 的
COM3在 MSYS2 里写作/dev/ttyS2(COM换成/dev/ttyS,数字要减 1:COM1 → /dev/ttyS0、COM2 → /dev/ttyS1、COM3 → /dev/ttyS2……这是最容易踩的坑,记不住就在终端先执行ls /dev/ttyS*看实际设备名);921600是波特率,必须和烧录时一致,否则看到的是乱码。
屏幕持续打印启动日志,重点看这几行:
Hello World.
Restarting in 10 seconds...
Restarting in 9 seconds...
看到 Hello World. 和倒计时,说明开发板已经跑起来了——你的第一个程序成功!
💡 官方示例会倒计时 10 秒后自动重启开发板(相当于测试软复位),这是正常的。看完日志按
Ctrl + A再按K退出 screen(提示时按y确认)。
代码执行流程
例程从启动到运行的完整流程如下(图中的循环箭头表示反复执行):
本文用到的命令汇总
pacman -S(软件包名)
MSYS2 的软件安装命令(本教程用于安装 git、make、screen)。
参数:
- 软件包名:空格分隔的包名,如
git make
返回值:安装完成回到提示符即成功;Proceed? [Y/n] 提示按回车确认
git clone --recursive(仓库地址)
下载 SDK 仓库及全部子模块到当前目录(国内网络推荐 Gitee 镜像地址)。
参数:
--recursive:递归拉取子模块,必加(否则工具链目录是空的)- 仓库地址:
https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2.git或 Gitee 镜像
返回值:进度条走满回到提示符即成功
make flash(p=串口号 b=波特率)
把固件烧录进开发板(Windows 串口号格式为 COMx;烧录时需按开发板 EN 键进入下载模式)。
参数:
p=:串口号,如COM3(在设备管理器「端口 (COM 和 LPT)」里查看)b=:波特率,官方固定921600
返回值:进度条 100% 即成功;一直等待说明没进下载模式
screen(/dev/ttySx 波特率)
打开串口查看开发板运行日志(MSYS2 中串口写作 /dev/ttyS + 「COM 数字减 1」,如 COM3 → /dev/ttyS2)。
参数:
- 串口设备:
/dev/ttyS+ 「COM 数字减 1」,如/dev/ttyS2(可用ls /dev/ttyS*确认) - 波特率:与烧录一致
921600
返回值:实时滚动输出日志;Ctrl + A 再 K 退出
完整代码(参考:helloworld/main.c)
以下为官方 helloworld 示例源码,与官方(applications/get-started/helloworld/helloworld/main.c)完全一致。它打印 Hello World. 后倒计时 10 秒自动重启开发板,是验证环境是否装好的「体检程序」:
📜 点击展开 helloworld/main.c 完整代码
/*
* @Author: xuhongv@yeah.net xuhongv@yeah.net
* @Date: 2022-10-03 15:02:19
* @LastEditors: xuhongv@yeah.net xuhongv@yeah.net
* @LastEditTime: 2022-10-08 14:55:16
* @FilePath: \bl_iot_sdk_for_aithinker\applications\get-started\helloworld\helloworld\main.c
* @Description: Hello world
*/
#include <stdio.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include <blog.h>
#include "bl_sys.h"
void main(void)
{
printf("Hello World.\r\n");
for (int i = 10; i >= 0; i--)
{
printf("Restarting in %d seconds...\r\n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
printf("Restarting now.\r\n");
bl_sys_reset_por();
}常见问题与踩坑提示
⚠️ 打开的开始菜单里有好几个 MSYS2,该点哪个?
原因:MSYS2 安装后会生成多个终端快捷方式(MSYS2 MSYS / MINGW64 / MINGW32 / UCRT64)
解决:选 MSYS2 MINGW64(64 位 Windows 必选这个),后面的命令都在这一个终端里执行
⚠️ 手动下载了 GitHub 的 Zip 包,编译报找不到工具链
原因:网页下载的 Zip 压缩包不含 toolchain/ 工具链(它是 git 子模块,只在 git clone 时拉取)
解决:删除目录,重新用 git clone --recursive 克隆(GitHub 慢就换 Gitee 镜像)
⚠️ 编译报 make: command not found 或 gcc: No such file or directory
原因:步骤③的环境变量没配好,或配完没重启 MSYS2 终端
解决:检查 Path 里两条路径是否正确(C:\msys64\usr\bin 和 ...\Ai-Thinker-WB2\toolchain\riscv\MSYS\bin),配完关闭终端重开再试
⚠️ 设备管理器里找不到串口(COM 口)
原因:数据线只能充电不能传数据,或缺少 USB 转串口驱动
解决:换一根能传数据的 Type-C 数据线;Ai-WB2 开发板常用 CH340 芯片,到芯片官网(或驱动精灵)下载 CH340 驱动安装后重启电脑
⚠️ 烧录一直 Waiting for download / 进度条不动
原因:没有按 EN 键进入下载模式,或串口号写错
解决:看到等待提示时长按 EN(RST)键约 1 秒松开;确认 p= 的串口号和设备管理器里看到的一致(注意 MSYS2 里串口写作 /dev/ttyS3,但烧录参数 p= 仍用 COM3 格式)
⚠️ screen 提示 can't open /dev/ttyS3(或打开后没反应)
原因:把 COM 数字直接搬进了设备名——MSYS2 里串口设备名是「COM 数字减 1」
解决:COM3 对应 /dev/ttyS2(COM1 → ttyS0、COM2 → ttyS1、COM3 → ttyS2),拿不准就在终端执行 ls /dev/ttyS* 看实际列出的设备名
⚠️ 串口打开看到一堆乱码
原因:波特率不匹配(默认 115200 之类不对)
解决:打开串口的波特率必须和烧录一致,用 921600
运行自检
烧录后在串口看到 Hello World. 以及 Restarting in 10 seconds... 倒计时输出,即 Windows 环境搭建验证通过,可以开始 GPIO输出(点亮LED) 了。
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

