Skip to content

概述

Windows 用户开发 Ai-WB2 使用官方支持(SDK 自带 Windows 工具链)的 MSYS2 方案:装一个 MSYS2 终端(让 Windows 能用 Linux 风格的 make 命令),在里面克隆 SDK、编译、烧录,全程无需虚拟机。本教程按完整流程(装 MSYS2 → 克隆 SDK → 配环境变量 → 编译 → 烧录),带你用官方 helloworld 示例跑通第一个程序。

用大白话讲:Windows 自带命令提示符干不了「编译」这活,MSYS2 相当于在 Windows 里装一个「小号 Linux 命令行」,SDK 的编译命令只有在这个环境里才跑得起来。本教程做完,你的 Windows 电脑就具备了完整的开发能力,后面的教程都是「照着菜谱做菜」。

本教程基于安信可官方 SDKAi-Thinker-Open/Ai-Thinker-WB2,版本 release_bl_iot_sdk_1.6.40)编写。官方 SDK 自带的 Windows 工具链在 toolchain/riscv/MSYS/ 目录下(MSYS = Windows 上的 Linux 模拟环境),本教程即官方支持的 Windows 开发方案。

🎯本页目标装好 Windows 开发环境,编译并烧录官方 helloworld 示例,在串口看到 `Hello World.` 输出。
🧰前置条件① Windows 10/11 电脑 ② Ai-WB2 开发板一块(Type-C 数据线)③ 能访问外网。
🔗相关章节环境概念见 [SDK 简介](./sdk_intro);Linux 用户见 [Linux 平台](./get-start_for_Linux);装好后从 [GPIO输出(点亮LED)](../basic/gpio_led) 开始。

安装 MSYS2 终端

浏览器打开 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 更换清华源」教程加速。

克隆 SDK 到本地

在 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

能看到 applicationscomponentstoolchain 等目录即克隆成功。

💡 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 终端(关掉重开),让新环境变量生效。

编译官方 helloworld 示例

在(重启后的)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 foundriscv64-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/ttyS2COM 换成 /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 -j8

在示例工程目录内编译固件(-j8 并行编译更快)。

参数

  • -j8:并行核数,可改成 -j4/-j16

返回值✓ Built target xxx 即成功;报错按提示修复后重试

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 + AK 退出


完整代码(参考:helloworld/main.c)

以下为官方 helloworld 示例源码,与官方(applications/get-started/helloworld/helloworld/main.c)完全一致。它打印 Hello World. 后倒计时 10 秒自动重启开发板,是验证环境是否装好的「体检程序」:

📜 点击展开 helloworld/main.c 完整代码
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

Released under the MIT License. Build Time 2026-09-11 14:52:23