RA-Eco-RA4M2-100PIN-V2.0 开发环境:VSCode + FSP 从新建工程到点亮 LED

本文基于 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 扩展

  1. 装 VSCode(1.82+)。
  2. 扩展商店搜 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 上的离线安装包。

  1. 打开 https://github.com/renesas/fsp/releases/tag/v6.6.0 → 展开 Assets → 下载 Windows 那个:

    复制代码
    setup_fsp_v6_6_0_rasc_v2026-07.exe
  2. 双击安装,记下安装路径 (里面会有 rasc.exe)。

  3. 回到 VSCode → R 图标 → Manage Smart Configurators → Register SC → 手动指向刚才的 rasc.exe。

  4. 状态变成 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 已含时钟/引脚/堆栈初始化

两个必踩的坑:

  1. Device 停在 RA4M2 这一级没往下点 → configuration.xml 缺封装信息,编译时找不到启动文件。
  2. Board 误选官方 EK 板 → LED、按键引脚全被写成 EK 的定义,和你的板子对不上,照着点灯就是不亮。

Finish 后会自动生成 configuration.xml、ra_gen/、ra_cfg/、script/fsp.ld。

首次打开如果 VSCode 处于 Restricted Mode ,点左下角 Trust the Workspace Author,否则 CMake 命令是灰的。


五、编译:顺序不能反

首次打开工程,严格按这个顺序:

  1. Ctrl+Shift+P → CMake: Select a Kit → 选 Renesas Platform: Arm GNU Toolchain - 13.3.Rel1
  2. Ctrl+Shift+P → CMake: Configure → 等状态栏变 CMake: Ready
  3. Terminal → 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 操作步骤

  1. 装 Renesas Flash Programmer (RFP) V3.11.00(瑞萨官网可下)。
  2. 打开 RFP → New Project → MCU 这里选 RA 系列 (不要手填型号),具体芯片型号是板子进 Boot 模式后由 RFP 自动读出来的。
  3. 连接方式选 COM Port (USB BOOT)。
  4. 让板子进 Boot 模式 :断电 → 板载 MODE 跳线切到 SCI/USB BOOT 档 → 上电。 上电后板子会多出一个 USB 设备,这就是 RFP 要连的那个口------也就是第一节表格里"插上没反应"的那一类口(进了 Boot 模式才会枚举)。
  5. 回到 RFP,Connect (这一步之后型号才会显示成 R7FA4M2AD3CFP)。
  6. 加载编译产物:build/Debug/<工程名>.hex(或 .srec,两种 RFP 都支持)。
  7. 点 Start → 自动擦除 → 编程 → 校验 → 提示 Operation completed 即成功。
  8. 退出 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

烧完灯不亮,按这三步查,一分钟搞定:

  1. 断电 → 确认 MODE 不在 SCI/USB BOOT 档 → 必要时把跳线物理拔掉
  2. 重新上电 → 按一下 RESET
  3. 还不亮 → 回到第六节的引脚配置和 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 与动态广播包改写、以及不同工作模式下的功耗实测。

相关推荐
索端阳2 小时前
I.MX6ULL 裸机开发:LCD Framebuffer 与 RGB888 学习笔记
笔记·vscode·嵌入式硬件·学习
围炉聊科技2 小时前
你从IDE切到ADE了吗?智能体开发环境赛道地图——智能体基建系列
ide·人工智能
passion2 小时前
CnPack IDE专家包发布1.8.1正式版!
ide·delphi·cnpack
宁静致远20212 小时前
在VScode中使用MATLAB
vscode·matlab
霸道流氓气质3 小时前
Graph Studio Web IDE 深度实战:可视化编排、断点调试与生产级运维全指南
运维·前端·ide
VIP_CQCRE12 小时前
把 OpenCode 接入 Ace Data Cloud:让 VS Code、Cursor、Windsurf 统一调用 AI 编程模型
vscode·大模型·ai编程·opencode·acedatacloud
LCDduhui13 小时前
如何选择适配自己设备的液晶屏
编辑器
木由里予16 小时前
GDB 使用手册(详细版)
c语言·vscode
广东帝工16 小时前
桥梁防撞主动预警系统优势
编辑器