发帖
0 1 0

【九章MCP验证板】开发环境配置教程

XEMOWO
注册会员

1

主题

0

回帖

57

积分

注册会员

积分
57
小安AI 23 0 3 小时前

📘 九章 MCP 验证板 开发环境配置教程

从开箱到开发,一站式指南 | 适用板卡:9Mod_MCPBorad(STM32F103CBT6)


组装总览

📖 关于九章 MCP 验证板

九章 MCP 验证板是一款专为 MCP(Model Context Protocol) 协议验证和物联网开发设计的开源硬件平台。基于安信可 Ai-WV01-32S-Kit 模组实现小智 AI 应用,通过 emMCP 库,AI 可以直接控制板载 LED、继电器、WS2812 灯条等外设,并能读取温湿度等传感器数据进行语音播报。

资源类型 链接
📋 产品简介 docs.ai-thinker.com/9mod-mcpboard
📦 固件资料 资料中心
🔧 硬件说明 硬件参数
📘 emMCP 编程 emMCP 使用文档
❓ 常见问题 FAQ

👥 适用人群

人群 场景
🎓 电子爱好者 学习嵌入式开发和物联网技术
🔧 硬件开发者 快速原型开发和产品验证
🤖 AI 工程师 验证 AI 模型与硬件设备的交互
📚 教育场景 物联网和嵌入式教学实验

🗺️ 目录

章节 内容 难度
一、开发环境总览 整体架构一图看懂
二、硬件接线 ST-Link 焊接与接线
三、WSL2 环境搭建 ARM 工具链一键安装 ⭐⭐
四、USB 设备穿透 SeaHi Serial 映射设备 ⭐⭐
五、VS Code 插件安装 必备插件清单 ⭐⭐
六、项目配置 launch.json + 编译预设 ⭐⭐⭐
七、编译 & 烧录 & 调试 日常开发三步走 ⭐⭐⭐
八、设备配网与运行 小程序配网 + AI 对话
九、串口 printf 调试 打印调试全链路 ⭐⭐⭐
十、改代码快速索引 OLED / MCP / 引脚 ⭐⭐
十一、常用命令速查 环境检查 + 故障排查
十二、项目结构 完整目录树 ⭐⭐

一、开发环境总览

🔗 核心技术栈

层级 技术 说明
🖥️ 操作系统 Windows 11 + WSL2 (Ubuntu 22.04) WSL2 提供原生 Linux 内核
🔧 编译器 arm-none-eabi-gcc 10.3.1 ARM Cortex-M 交叉编译
🐛 调试器 gdb-multiarch + OpenOCD 通过 ST-Link 实现 SWD 调试
📦 构建 CMake 3.22 + Ninja 快速增量编译
🏗️ HAL 库 STM32F1xx HAL + FreeRTOS 硬件抽象 + 实时操作系统
🖥️ 显示 SSD1306 OLED + GT20L16 字库 128×64 中文显示
🤖 AI emMCP + Ai-WV01-32S-Kit UART-MCP 协议交互

二、硬件接线

⚡ 快速参考

信号 ST-Link 板子丝印 必须
数据 SWDIO PA13
时钟 SWCLK PA14
GND GND
电源 3.3V VDD

⚠️ 板子必须通过 Type-C 口独立供电。ST-Link 的 3.3V 电流不足以驱动整板。

接线示意


三、WSL2 环境搭建

WSL2 是 Windows 自带的 Linux 虚拟机内核,不需要装双系统或 VMware。

📖 安装教程:WSL2 完整安装与使用教程

3.1 一键安装 ARM 工具链

sudo apt update && sudo apt install -y \
  cmake \
  ninja-build \
  gcc-arm-none-eabi \
  binutils-arm-none-eabi \
  gdb-multiarch \
  openocd

3.2 各组件角色说明

image.png

包名 一句话作用 验证命令
cmake 构建系统,管"怎么编译" cmake --version
ninja-build 比 make 快 3~5 倍的构建器 ninja --version
gcc-arm-none-eabi ARM 交叉编译器 arm-none-eabi-gcc --version
binutils-arm-none-eabi objdump / nm 等工具 arm-none-eabi-objdump --version
gdb-multiarch 多架构 GDB 调试器 gdb-multiarch --version
openocd 连接 ST-Link 的 GDB 服务器 openocd --version

💡 为什么用 gdb-multiarch

Ubuntu 22.04 的 gcc-arm-none-eabi 包不附带 GDB。gdb-multiarch 支持 ARM 架构且已预装,效果完全一样。


四、USB 设备穿透

STM32 板子和 ST-Link 插在 Windows 上,WSL2 默认看不到 USB 设备。
使用 SeaHi Serial(GUI 工具)一键完成映射。

4.1 安装 SeaHi Serial

📥 GitHubSeaHi-Mo/Seahi-Serial

SeaHi Serial 是便捷式的 USB 映射工具,比 usbipd 更简单——不需要命令行,GUI 勾选即可。

4.2 操作步骤

image.png

设备勾选
映射完成

4.3 验证挂载(WSL 端)

lsusb

预期看到:

Bus 001 Device 004: ID 1a86:55d3 QinHeng Electronics USB Single Serial
Bus 001 Device 005: ID 0483:3748 STMicroelectronics STM32 STLink

验证成功

4.4 设备识别表

设备 VID:PID WSL 节点 用途
CH343 串口 1a86:55d3 /dev/ttyACM0 printf 串口输出
ST-Link V2 0483:3748 libusb(用户态) SWD 烧录 + 调试

五、VS Code 插件安装

⚠️ 全部装在 WSL 端。在 VS Code 左侧 Extensions 面板搜索安装,确保右下角有 "Install in WSL: Ubuntu" 字样。

5.1 必备清单

序号 插件 ID 插件名 一句话作用 必装
1 ms-vscode-remote.remote-wsl WSL 让 VS Code 进入 WSL2
2 ms-vscode.cmake-tools CMake Tools 一键编译(F7)
3 marus25.cortex-debug Cortex-Debug 一键烧录 + 断点调试(F5)
4 STMicroelectronics.stm32-vscode-extension STM32CubeIDE for VS Code 打开 .ioc、MCU 选择、自带工具链

5.2 插件关系图

image.png

分类 插件 数量
🔴 必须手动装 WSL + CMake Tools + Cortex-Debug + STM32 4 个
🟢 自动附带 STM32 扩展的 4 个依赖(core/build-cmake/analyzer/bundles) 0 个

插件列表 1
插件列表 2
插件列表 3
插件列表 4
插件列表 5


六、项目配置

6.1 获取源码

git clone https://github.com/Ai-Thinker-Open/emMCP.git

6.2 打开项目

⚠️ 必须打开具体项目文件夹,不能打开仓库根目录!

File → Open Folder → /home/xemowo/emMCP/example/9Mod_MCPBorad

打开项目

6.3 确认 MCU 型号

步骤 操作
1 双击左侧**9Mod_MCPBorad.ioc**
2 Pinout & Configuration 标签页顶部确认芯片
3 型号:STM32F103CBT6(128KB Flash)

一般不需要改,项目默认就是正确的 MCU。

6.4 配置 Cortex-Debug(.vscode/launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "🔵 Debug STM32F103 (OpenOCD)",
            "cwd": "${workspaceFolder}",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "configFiles": [
                "interface/stlink.cfg",
                "target/stm32f1x.cfg"
            ],
            "device": "STM32F103CB",
            "gdbPath": "gdb-multiarch",
            "toolchainPrefix": "arm-none-eabi",
            "svdFile": "",
            "runToEntryPoint": "main"
        }
    ]
}

6.5 配置项说明

配置项 为什么这样填
servertype "openocd" 用 OpenOCD 作为 GDB Server 桥接 ST-Link
configFiles stlink.cfg + stm32f1x.cfg 告诉 OpenOCD:调试器型号 + 芯片系列
device "STM32F103CB" 芯片型号(去掉 T6 后缀)
gdbPath "gdb-multiarch" Ubuntu 22.04 不自带 gdb-arm-none-eabi
toolchainPrefix "arm-none-eabi" 修复 objdump/nm 符号解析警告
runToEntryPoint "main" 烧录后自动停在 main() 第一行

配置完毕后,底部状态栏应出现 CMake preset 和调试按钮。

状态栏


七、编译 & 烧录 & 调试

7.1 日常开发三步走

image.png

7.2 操作详解

🏗️ 编译

Ctrl+Shift+P → CMake: Configure → 选 Debug
Ctrl+Shift+P → CMake: Build(或直接 F7)

编译

编译成功标志:

编译完成

🔌 烧录

F5 → 选择 "🔵 Debug STM32F103 (OpenOCD)"

F5 调试
选择配置

🐛 调试

烧录完成后自动停在 main() 函数第一行:

调试界面

7.3 快捷键一览

操作 快捷键 说明
编译 F7 增量编译
烧录+调试 F5 一键烧录并进入调试
继续运行 F5 从断点处继续执行
单步跳过 F10 Step Over
单步进入 F11 Step Into
停止调试 Shift+F5 断开与芯片的连接

7.4 编译产物

build/Debug/
├── 9Mod_MCPBorad.elf      ← ELF 文件(含符号表,用于调试)
├── 9Mod_MCPBorad.bin      ← 纯二进制固件
├── 9Mod_MCPBorad.hex      ← Intel Hex 格式固件
└── ...

⚠️ .elf 是 ARM 固件,在 Linux 下直接运行会报错 Exec format error,这是正常的——它只能跑在 STM32 芯片上。

7.5 验证运行

编译烧录成功后,OLED 屏幕应出现显示:

OLED 显示

💡 修改 OLED 显示内容:Core/Src/freertos.c 第 254~255 行

axk_ssd1306_show_utf8_str(32, 0, "你的名字");
axk_ssd1306_show_utf8_str(24, 3, "九章开发板");

内置 GT20L16 中文字库芯片,show_utf8_str() 直接支持中文 UTF-8。


八、设备配网与运行

8.1 配网流程(语音交互)

板子断电再上电(冷启动)
        │
        ▼
  "你好小安"      ← 对板子说话
        │
        ▼
  "你好呀"        ← 板子回复(说明唤醒成功)
        │
        ▼
  "开始配网"      ← 对板子说话
        │
        ▼
  "开启配网,      ← 板子回复
   请使用小程序
   配置 WiFi"

8.2 微信小程序配网

① 搜索小程序 → ② 扫描设备 → ③ 输入 WiFi → ④ 配网成功

① 搜索小程序
微信搜「AI 硬件智能体」
② 扫描设备
小程序自动发现
③ 输入 WiFi
仅支持 2.4G 网络
④ 配网成功
等待连接确认

⑤ 板子断电重上电 → ⑥ OLED 显示验证码 → ⑦ 小程序输入验证码完成绑定

⑤ 断电重启
板子重新上电,等待连接 WiFi
⑥ 获取验证码
OLED 屏幕显示 6 位验证码
⑦ 完成绑定
小程序输入验证码,绑定成功

8.3 小程序功能

配网完成后,通过「AI 硬件智能体」小程序可以:

功能 说明
📋 设备状态 查看设备在线/离线
🔄 OTA 升级 无线固件更新
🤖 AI 智能体 配置工具注册、语音风格
🔧 恢复出厂 重置设备

九、改代码快速索引

🔍 想改什么,去这里找

你想改的 文件位置 改什么
🖥️ OLED 显示内容 Core/Src/freertos.c 第 254 行 axk_ssd1306_show_utf8_str() 的字符串参数
📟 启用 printf Core/Src/main.c → USER CODE 4 添加 __io_putchar() 函数
🔧 添加 MCP 工具 Core/Src/freertos.c emMCP API 注册新工具
📌 MCU 型号 / 引脚 9Mod_MCPBorad.ioc STM32CubeMX 图形界面修改
⚡ SPI 速率 / 模式 Bsp/spi/stm32f10x_bsp_spi.c SPI 初始化参数
⏱️ FreeRTOS 任务 Core/Src/freertos.c 任务创建、优先级、栈大小
🚨 中断处理 Core/Src/stm32f1xx_it.c 各外设中断回调

十、常用命令速查

11.1 一键环境检查

echo "========== 编译器 =========="  && arm-none-eabi-gcc --version | head -1
echo "========== 调试器 =========="  && gdb-multiarch --version | head -1
echo "========== 烧录工具 =========" && openocd --version | head -1
echo "========== 构建系统 =========" && cmake --version | head -1
echo "========== USB 设备 ==========" && lsusb
echo "========== 串口设备 =========" && ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null || echo "(无)"

11.2 命令行烧录(备用)

cd /home/xemowo/emMCP/example/9Mod_MCPBorad
openocd -f openocd.cfg \
  -c "program build/Debug/9Mod_MCPBorad.elf verify reset exit"

11.3 故障排查表

😱 现象 🔍 原因 ✅ 解决
openocd: open failed ST-Link 未映射到 WSL SeaHi Serial 重新勾选映射
GDB executable not found Cortex-Debug 找不到 GDB launch.json 配 gdbPath: gdb-multiarch
nm-multiarch ENOENT 符号工具名错误(仅警告) launch.json 配 toolchainPrefix: arm-none-eabi
Permission denied 读写串口 用户不在 dialout 组 sudo usermod -aG dialout $USER
.elf: Exec format error 在电脑上执行 ARM 固件 正常现象,用 openocd 烧录即可
VS Code 不识别 .ioc 插件未装或装错端 确认 STM32 扩展装在 WSL 端
OLED 屏幕不亮 代码未烧录或 SPI 未初始化 重新 F5 烧录
SeaHi Serial 看不到设备 驱动未装 管理员运行 stlink_winusb_install.bat

11.4 快捷键速查卡

┌─────────────────────────────────────────┐
│  F5      →  烧录 + 启动调试              │
│  F7      →  编译项目                     │
│  F10     →  单步跳过                     │
│  F11     →  单步进入函数                  │
│  Shift+F5 → 停止调试                     │
│  Ctrl+`  →  打开终端                     │
│  Ctrl+Shift+P → 命令面板(万能入口)      │
└─────────────────────────────────────────┘

十一、项目结构

12.1 完整目录树

9Mod_MCPBorad/
│
├── 📁 Core/                           # 🎯 用户代码
├── 📁 Drivers/                        # 📚 STM32 HAL 库
├── 📁 Middlewares/                    # 🔧 中间件
├── 📁 Bsp/                            # 🔌 板级支持包
├── 📁 components/                     # 🧩 外设组件库
├── 📁 cmake/                          # ⚙️ CMake 工具链
├── 📁 .vscode/                        # 🛠️ VS Code 配置
└── 📁 build/                          # 📦 编译产物

12.2 核心文件一句话总结

       main.c  ──→ 硬件初始化 + 启动 FreeRTOS 调度器
   freertos.c  ──→ 业务逻辑 + OLED 显示 + MCP 工具注册
   syscalls.c  ──→ printf 重定向到串口(需补 __io_putchar)
     axk_*.c   ──→ OLED 驱动 + 中文字库
stm32f10x_it.c ──→ 中断处理(串口接收/定时器等)

📅 文档版本:v1.0

📅 更新日期:2026-07-08

🛠️ 适用板卡:九章 MCP 验证板(9Mod_MCPBorad)|MCU:STM32F103CBT6

💻 开发环境:Windows 11 + WSL2 (Ubuntu 22.04) + VS Code

📦 项目仓库:github.com/Ai-Thinker-Open/emMCP

──── 1人觉得很赞 ────

使用道具 举报

您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 31158 个
  • 话题数: 42243 篇