一、开篇
这是 RA8M1 测评系列的第 1 篇,也是开箱帖。本篇先把开发环境跑通,让板子上的灯先亮起来。
e² studio 支持直接生成 ThreadX 和 FreeRTOS 两种工程。考虑到后面要折腾以太网,ThreadX 配套的 NetX Duo 协议栈是现成的,做 ModbusTCP 时能省掉手工移植协议栈的一大堆事,所以本篇直接选 ThreadX 工程。
二、开箱:一块接近 20cm 的"长板"
板子比想象中大不少,实测接近 20cm,是我目前开箱过的最大一块评估板。

长条布局是为了把 Arduino、mikroBUS、PMOD、Grove、Qwiic 这些扩展口全部排开,代价是对桌面不太友好,插着杜邦线的时候尤其明显。
不过这块板有个小问题:翘曲比较明显,放在桌面上对角能看出不平。

目前插拔 PMOD、按按键都正常,但长期这么平放着,BGA 封装的焊点多少让人有点担心。希望是个体差异,不是批次问题。
硬件速览:
R7FA8M1AHECBD,Cortex-M85 @480MHz,2MB Flash / 1MB SRAM
板载 J-Link OB:一根 micro USB 同时搞定下载、调试、虚拟串口,不用另配调试器
板载以太网 PHY、CAN FD 收发器、64MB Octo-SPI Flash
PMOD / Arduino / mikroBUS / Grove / Qwiic 五种扩展口
这四行基本就是后面七步计划的硬件底子:CAN FD 上报、以太网 ModbusTCP、PMOD 挂传感器,都能直接在这块板上落地,不用额外画转接板。
三、开发环境
项 | 值 |
e² studio | 2026 |
构建系统 | CMake + Ninja |
FSP | 6.5.0 |
编译器 | LLVM |
板卡 | EK-RA8M1 v1 / R7FA8M1AHECBD |
有三点值得提前说:
1. 构建系统值得选 CMake。 这个配置下 e² studio 生成的是标准 CMake 工程(CMakeLists.txt + Ninja),并且能直接导出 VSCode 工作区,配合 Cortex-Debug 插件就能在 VSCode 里编译、下载、单步,工程不会被 IDE 绑死。对平时用 VSCode 的人来说这比传统 IDE 工程舒服得多,也是我没用默认e2udio managed build的原因。

2. 板卡选 EK-RA8M1,别直接选芯片。 选板卡之后,BSP 会按板卡原理图把晶振、时钟树、调试口全部配好,省掉一堆手工核对。但要说清楚一点:这不代表"完全不用管引脚"——如果你从 Minimal 模板起步,三颗用户 LED 还是得在 Pins 里手动配成 GPIO 输出;用 Blinky 模板,模板已经配好了。
3. FSP 和 e² studio 版本是强绑定的。 装之前对一下 release note,版本错配最典型的症状就是新建工程列表里找不到这块板。
四、新建工程
File → New → Renesas RA
工程名 + 英文路径 + 编译器,Board 选 EK-RA8M1
Build Artifact and RTOS selection → Azure RTOS ThreadX (vX.X.X + fsp6.5.0)
Template → Azure RTOS ThreadX - Blinky
Finish,进入 FSP Configuration




生成的工程里有也提供了可以手动注册任务的函数:tx_application_define_user()
提醒一下:ra_gen/ 是生成目录,手改会被下次 Generate 覆盖。要加任务就在 RASC/FSP 里 New Thread,让工具把注册代码生成出来;确实要自己写 tx_thread_create,就写在 src/ 下的用户文件里,别动 ra_gen/。
五、编译下载与实测
编译、下载,板子上电后现象:蓝绿红闪烁,亮灭500ms。

六、小结
优点
从新建工程到点灯全程图形化,RTOS 工程可以直接生成,内核不用手工移植。这一点比在 STM32 上折腾 FreeRTOS 省太多事了。
CMake + VSCode 工作区是意外之喜,工程不被 IDE 绑死,调试体验反而更顺。
板载调试器 + 单根 USB,开箱即用,不用为下载线折腾。
缺点 / 需要注意
生成代码量大,一个点灯工程就几十个文件,对新手不太友好。
入口不是熟悉的 main。这里我一开始也理解错了,说准确点:FSP 的 main() 在 ra_gen/main.c 里,裸机工程中用户代码写在 hal_entry();而 ThreadX 工程里 main() 直接进 tx_kernel_enter(),hal_entry() 根本不会被调用,点灯代码必须写在线程入口里。这一点和 STM32 直接往 main() 里写代码的习惯差别最大,也最容易踩。
整体上手成本比预期低,几乎没遇到卡住的问题。
我要赚赏金
