本文基于 RA-Eco-RA4M2-100PIN-V2.0 开发板(主控 R7FA4M2AD3CFP )的真实搭建过程整理,全程使用 VSCode + Renesas FSP 路线,不依赖 e²-studio,也不需要买 J-Link 就能完成"编译 → 烧录 → 运行"。
你可以只带一份 VSCode,照着做一遍就能跑通。
一、写在前面:这块板子到底是什么情况
先把最容易误解的三件事说清楚,后面很多"奇怪现象"都是由此而来。
| 传闻/手册说法 | 实际情况 |
|---|---|
| 板载 J-Link,接上就能调试 | ❌ 没有板载调试器 。两个 USB 口都不是 J-Link,原理图里 J-Link/JTAG 全文命中 0 次 |
| 板载 SWD 接口 = 板载调试器 | ⚠️ 那只是一组排针,仍需外挂调试器(想要 F5 单步调试才需要买) |
| 板载 USB 转 TTL,串口烧录很方便 | ✅ 这是真的。其中一个 USB 口是 CH340G (VID_1A86&PID_7523),串口打印、SCI 烧录都靠它 |
结论 :烧程序不需要任何外部调试器 ,用瑞萨官方的 Renesas Flash Programmer (RFP) 走 USB BOOT 就行,零成本跑通。本文就按这个最小成本路径写。
二、环境准备
2.1 VSCode + Renesas Platform 扩展
- 装 VSCode(1.82+)。
- 扩展商店搜 Renesas Platform 安装。它会连带拉上几个附属扩展:
- Renesas Debug(调试,基于 Cortex-Debug)
- Renesas Build Utilities(构建工具链桥接)
- Renesas Smart Manual(寄存器手册速查)
- Renesas Memory Usage View(内存占用视图)
装完左侧出现 R 图标即代表环境就绪。
建议给瑞萨单独配一份 VSCode 运行环境(
Ctrl+Shift+P→Preferences: Open User Settings (JSON)),避免和 ESP-IDF、STM32 等其它嵌入式扩展抢全局设置。
2.2 一键装工具链(Quick Install)
点左侧 R 图标 → Renesas Quick Install → 设备家族只勾 RA,它会自动拉取并配好:
- CMake + Ninja
- Python 3.x(RASC 的运行依赖)
- Arm GNU Toolchain 13.3.Rel1 (
arm-none-eabi-gcc,FSP 官方支持版本) - SEGGER J-Link 软件与驱动
- RA Family Support Files
安装路径保持默认,默认的坑最少。

三、踩坑一:Smart Configurator 装不上,用离线包手动注册
症状:Quick Install 里下载 RA Smart Configurator 一直失败 / 卡死 / 超时。国内网络下非常常见。
根治办法 :跳过在线下载,用瑞萨 GitHub 上的离线安装包。
-
打开 https://github.com/renesas/fsp/releases/tag/v6.6.0 → 展开 Assets → 下载 Windows 那个:
setup_fsp_v6_6_0_rasc_v2026-07.exe -
双击安装,记下安装路径 (里面会有
rasc.exe)。 -
回到 VSCode → R 图标 → Manage Smart Configurators → Register SC → 手动指向刚才的
rasc.exe。 -
状态变成 Manually Registered 就成了。
版本必须配套 :FSP 6.6.0 ↔ RASC
2026-07。什么 FSP 版本就配对应期次的 RASC,别东拼西凑。顺便一提,从 FSP 6.6.0 起 GCC 工具链不再随平台安装器默认集成,所以 2.2 节的 Quick Install 依然要做------rasc 包只管配置器本身。
四、踩坑二:新建工程,这两个下拉框选错后面全白搭
Ctrl+Shift+P → Renesas: Create Renesas RA Project with Smart Configurator,按下面逐项填:
| 配置项 | 选什么 | 说明 |
|---|---|---|
| 工程名 / 路径 | 纯英文,无中文、无空格 | 有中文或空格,CMake 和 RASC 都会给你使绊子 |
| Board | Custom User Board | ⚠️ 关键。这块板不是官方 EK-RA4M2,选板卡预设会被灌进 EK 的引脚定义 |
| Device | 点 Device 右侧三个小点 展开 → RA4 → RA4M2 → **R7FA4M2AD3CFP(100Pin)** |
⚠️ 关键 。必须精确到后缀 3CFP |
| Core | CM33 | |
| Toolchain | GCC Toolchain for ARM | 别选 LLVM / IAR |
| Project Type | Flat (Non-TrustZone) | 裸机不需要安全隔离 |
| Use Smart Bundle | 取消勾选 | |
| RTOS | No RTOS | |
| Template | Bare Metal - Minimal | 已含时钟/引脚/堆栈初始化 |
两个必踩的坑:
- Device 停在
RA4M2这一级没往下点 →configuration.xml缺封装信息,编译时找不到启动文件。 - Board 误选官方 EK 板 → LED、按键引脚全被写成 EK 的定义,和你的板子对不上,照着点灯就是不亮。
Finish 后会自动生成 configuration.xml、ra_gen/、ra_cfg/、script/fsp.ld。
首次打开如果 VSCode 处于 Restricted Mode ,点左下角 Trust the Workspace Author,否则 CMake 命令是灰的。
五、编译:顺序不能反
首次打开工程,严格按这个顺序:
Ctrl+Shift+P→CMake: Select a Kit→ 选Renesas Platform: Arm GNU Toolchain - 13.3.Rel1Ctrl+Shift+P→CMake: Configure→ 等状态栏变CMake: ReadyTerminal → Run Build Task→ Build Project → 等退出码 0
⚠️ 第 1 步绝对不能跳。 必须先选 Kit,再 Configure。选 Kit 是告诉 CMake Tools 去用瑞萨专用编译参数(
ARM LLVM - Ninja这档才会带上工具链文件);跳过了直接 Configure,要么失败,要么生成出一棵看起来能编、实际参数全错的构建树。
六、点亮 LED:改三个引脚 + 改 hal_entry
到这一步工程已经能编过了,但点灯还得手动改两处------新建模板只是个空壳。
6.1 先搞清硬件
三颗 LED 分别接在 P002 / P404 / P405 ,各自串一颗 4.7K(原理图 R9/R10/R11)到 GND,所以是高电平点亮。
6.2 在 configuration.xml 里把三个脚配成输出
configuration.xml → Pins 页 → 搜索 P002 / P404 / P405,每个脚设:
| 项 | 值 |
|---|---|
| Mode | Output |
| Initial level | Low(想上电就亮就设 High) |
保存后点 Generate 。生成完去 ra_gen/pin_data.c 里核对,能看到三个脚就说明配上了:
c
{
.pin = BSP_IO_PORT_00_PIN_02,
.pin_cfg = IOPORT_CFG_PORT_DIRECTION_OUTPUT | IOPORT_CFG_PORT_OUTPUT_HIGH
},
⚠️ 顺序别反 :先改 configuration.xml → Generate → 再改
hal_entry.c→ 再编译。反过来生成代码时读到的还是旧引脚,编出来能跑但灯不动。
6.3 在 hal_entry 里写循环
裸机模板(No RTOS)里 hal_entry() 是被 main() 直接调用的,函数返回就啥也不干了,所以 while(1) 必须有:
c
#include "hal_data.h"
void hal_entry(void)
{
while (1)
{
/* 第一颗亮 */
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
/* 第二颗亮 */
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
/* 第三颗亮 */
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
}
}
几个只在这块板上管用的点:
R_IOPORT_PinWrite()要的g_ioport_ctrl已经在hal_data.h里了,直接用,不用自己声明。R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS)不需要任何定时器配置,Bare Metal 模板自带。- 三个脚必须先在 configuration.xml 配成 Output,否则写电平也白搭。
编译通过,产物就是 build/Debug/<工程名>.hex。
七、烧录:RFP 走 USB BOOT,不用买调试器
先说结论:VSCode + CMake 这条路本身没有"Flash / Download"菜单项。 Renesas Platform 提供的是调试 (F5 → J-Link GDB Server,会顺便烧进去),但"只烧录不调试"要用 Renesas Flash Programmer (RFP)。
7.1 操作步骤
- 装 Renesas Flash Programmer (RFP) V3.11.00(瑞萨官网可下)。
- 打开 RFP → New Project → MCU 这里选 RA 系列 (不要手填型号),具体芯片型号是板子进 Boot 模式后由 RFP 自动读出来的。
- 连接方式选 COM Port (USB BOOT)。
- 让板子进 Boot 模式 :断电 → 板载 MODE 跳线切到
SCI/USB BOOT档 → 上电。 上电后板子会多出一个 USB 设备,这就是 RFP 要连的那个口------也就是第一节表格里"插上没反应"的那一类口(进了 Boot 模式才会枚举)。 - 回到 RFP,Connect (这一步之后型号才会显示成
R7FA4M2AD3CFP)。 - 加载编译产物:
build/Debug/<工程名>.hex(或.srec,两种 RFP 都支持)。 - 点 Start → 自动擦除 → 编程 → 校验 → 提示
Operation completed即成功。 - 退出 Boot 模式 :断电 → MODE 跳回
INTERNAL FLASH档 → 上电 → 按 RESET。
RFP 支持 Intel HEX、Motorola S、binary 三种格式;
.sbd(Smart Bundle)读不了,别选。
7.2 排障:烧完了灯不亮?看 MODE 跳线
这是我最先踩的坑,而且官方手册里压根没写。
现象很邪乎:RFP 明确报 Operation completed,板子也确实在上电、在供电,但 LED 纹丝不动,串口也没吐任何东西。
原因 :MODE 跳线还停在 SCI/USB BOOT。此时 MCU 复位后根本不会去执行内部 Flash 里的用户代码,而是停在 Boot Loader 里等串口。程序其实烧成功了,只是没人让它跑。
原理图(RA4M2-100PIN_原理图_V2_综合包.pdf 第 1 页 "MCU MODE CONFIG" 区)里写得很清楚:
| 网络标号 | 说明 |
|---|---|
MODE |
板上那三个脚的模式跳线(丝印就叫 MODE,不是 SW1) |
P201/MD |
直接接 MCU 的运行模式脚 |
R7 10K / R8 10K |
P201/MD 的上拉 / 下拉 |
| 两档 | INTERNAL FLASH (跑用户程序) / SCI/USB BOOT(进 Boot Loader) |
SW1 / SW2 |
⚠️ 这俩是板上的两个用户按键,跟模式选择没关系,别搞混 |
| 你要做的事 | MODE 状态 |
|---|---|
| 跑自己烧的程序 | INTERNAL FLASH (把 SCI/USB BOOT 那侧跳线拔掉) |
| RFP USB BOOT 烧录 | SCI/USB BOOT |
| SCI 串口烧录 | SCI/USB BOOT |
烧完灯不亮,按这三步查,一分钟搞定:
- 断电 → 确认 MODE 不在
SCI/USB BOOT档 → 必要时把跳线物理拔掉 - 重新上电 → 按一下 RESET
- 还不亮 → 回到第六节的引脚配置和
hal_entry()代码,确认三个脚配成了 Output 且真的在while里翻电平
📌 官方 V1.0 手册只有一句"板载USB转TTL模块,可用于串口通信和烧录",全文没提 MODE 跳线。查这个板的硬件行为,得回原理图。

八、顺带把两个 USB 口认清楚
| USB 口 A(插上显示 COM3) | USB 口 B(插上"没反应") | |
|---|---|---|
| 硬件 | CH340G + 12MHz 晶振 |
直连 MCU USB_DP/USB_DM |
| 硬件 ID | VID_1A86&PID_7523 |
无(当前固件没有 USB 栈,永不枚举) |
| 干什么 | 串口打印、SCI 串口烧录 | 供电;RFP USB BOOT 烧录时才会冒出来 |
| 是 J-Link 吗 | ❌ | ❌ |
口 B 插上"没反应"是正常的,不是板子坏了。MCU 里没烧 USB 设备固件,USB 设备永远不会枚举。
想确认手上的是不是 J-Link,看设备管理器 → 端口 → 属性 → 详细信息 → 硬件 ID:
| 硬件 ID | 是什么 |
|---|---|
VID_1A86&PID_7523 |
CH340G(本板这个) |
VID_1366&PID_0096 |
J-Link OB / J-Link EDU |
VID_1366&PID_0101 |
J-Link |
九、收个尾:完整最小流程
text
① 装 VSCode + Renesas Platform 扩展
② Quick Install 拉工具链(CMake / Ninja / Python3 / Arm GNU Toolchain)
③ RASC 装不上 → 去 GitHub FSP v6.6.0 下 setup_fsp_v6_6_0_rasc_v2026-07.exe
→ R 图标 → Manage Smart Configurators → Register SC 手动注册
④ 新建工程:Board=Custom User Board,Device=R7FA4M2AD3CFP,No RTOS,Bare Metal - Minimal
⑤ configuration.xml → Pins 把 P002/P404/P405 设成 Output → Generate
⑥ src/hal_entry.c 里写 while 循环翻这三个脚 → Build Project
⑦ RFP New Project → MCU 选 RA 系列 → COM Port (USB BOOT)
⑧ 板子断电 → MODE 拨到 SCI/USB BOOT → 上电 → RFP Connect(型号自动读出)→ 加载 .hex → Start
⑨ 断电 → MODE 跳回 INTERNAL FLASH → 上电 → RESET → LED 亮
十、踩坑清单速查
| 症状 | 原因 / 解法 |
|---|---|
| Quick Install 装 RASC 失败 | 用 GitHub 离线包 + Register SC 手动注册 |
| 选不到 R7FA4M2AD3CFP | Device 右侧三个小点展开,必须选到后缀 3CFP |
| 引脚和实际板子对不上 | Board 别选 EK 预设,选 Custom User Board |
| CMake 命令灰色 | VSCode Restricted Mode → Trust 工作区 |
| 编译失败 / 生成错构建树 | 先 CMake: Select a Kit,再 CMake: Configure |
| 灯不亮但程序没报错 | 三个 LED 脚(P002/P404/P405)没配 Output,或改完没点 Generate |
| 找不到"烧录"菜单 | VSCode + CMake 没这菜单,用 RFP |
| 烧完提示成功但程序不跑 | MODE 还在 SCI/USB BOOT → 跳回 INTERNAL FLASH + 断电 + RESET |
| RFP 里型号是空的 / 连不上 | 板子不在 Boot 模式;断电 → MODE 拨 SCI/USB BOOT → 上电再 Connect |
| RFP 连不上(E3000105) | 重进 Boot 模式,短按 RESET 后再 Connect |
十一、小结
瑞萨 RA 系列的 VSCode + FSP 路线,本质上就是把 e²-studio 的"配置 → 编译 → 烧录"搬进 VSCode,底层的 configuration.xml / ra_gen / ra_cfg 跟 e²-studio 工程完全兼容。一旦把"RASC 离线安装"和"Board/Device 两个下拉框"这两关过了,后面就是标准的 CMake 流程,和普通嵌入式开发没区别。
真正的拦路虎全在细节上:Kit 的选择顺序、跳线的位置、手册里没写的东西。希望这篇能吃掉你半天时间。
本文属于 RA-Eco-RA4M2-100PIN-V2.0 开发板测评系列的第一篇。后续会写:SHT30 温湿度采集、DA14531 自定义 GATT 与动态广播包改写、以及不同工作模式下的功耗实测。