- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
本篇文章围绕 Zephyr RTOS 对 Renesas EK-RA4C1 评估板的官方支持展开,系统梳理该板卡的硬件资源、在 Zephyr 中的 SoC 与设备树(Devicetree)配置,以及基于板载 SEGGER J-Link 的完整构建与烧录流程。读完本文,你将能够独立完成 EK-RA4C1 的环境准备、固件编译、烧录与基础外设验证,并掌握 Zephyr 板级支持(board support)的阅读方法。
板卡概览:面向 RA4C1 MCU 的完整评估平台
EK-RA4C1 是 Renesas 针对 RA4 系列推出的评估套件(Evaluation Kit),核心目标是让开发者能够无缝评估 RA4C1 MCU 组的功能。板级支持定义位于 boards/renesas/ek_ra4c1/doc/index.rst,其硬件特性按评估套件的架构分为三大类。
Renesas RA4C1 微控制器组
板卡搭载R7FA4C1BD3CFPMCU(下文简称 RA MCU),关键规格如下:
- 主频:80 MHz,基于 Arm Cortex-M33 内核;
- 存储:512 KB Code Flash、96 KB SRAM;
- 封装:100 引脚 LQFP;
- 通过 3 × 26-pin 排针(默认未焊接)提供原生引脚访问;
- J4 接口内置篡改检测(Tamper Detection)功能;
- 预留 Segment LCD 板接口;
- 提供 MCU 电流测量点,用于高精度电流消耗测量;
- 多时钟源:RA MCU 振荡器与子时钟振荡器晶振,分别提供 8.000 MHz 与 32,768 Hz 参考时钟;RA MCU 内部另有低精度时钟可选。
系统控制与生态接入
- 双 5 V 输入源:USB(Debug)与外部电源 2-pin 排针(默认未焊接);
- 三种调试模式:板载调试(SWD)、调试输入(SWD)、调试输出(SWD / SWO / JTAG);
- LED 与按键:
- 三颗用户 LED(红、蓝、绿);
- 电源 LED(白色),指示稳压电源可用;
- 调试 LED(黄色),指示调试连接状态;
- 两颗用户按键 + 一颗复位按键;
- 五种主流生态扩展:
- 2 × Seeed Grove 系统(I2C/Analog)连接器(默认未焊接);
- SparkFun Qwiic 连接器(默认未焊接);
- 2 × Digilent Pmod(SPI、UART、I2C)连接器;
- Arduino UNO R3 连接器;
- MikroElektronika mikroBUS 连接器(默认未焊接);
- MCU 启动配置跳线(boot configuration jumper);
- 低压模式电压输入与运行支持。
特殊功能访问
- 32 MB(256 Mb)外部 Quad-SPI Flash;
- CAN-FD(3-pin 排针);
- 外部电池连接器;
- 配置开关(Configuration Switch)。
SoC 支持:RA4C1 系列在 Zephyr 中的注册
EK-RA4C1 的板级定义与 Renesas RA SoC 家族紧密关联。在 Kconfig.ek_ra4c1 中,板卡通过select SOC_R7FA4C1BD3CFP选定具体 SoC;而 SoC 层次的注册位于 soc/renesas/ra/ra4c1/Kconfig.soc:
config SOC_SERIES_RA4C1 bool select SOC_FAMILY_RENESAS_RA help Renesas RA4C1 series config SOC_R7FA4C1BD3CFP bool select SOC_SERIES_RA4C1 help R7FA4C1BD3CFP config SOC_SERIES default "ra4c1" if SOC_SERIES_RA4C1 config SOC default "r7fa4c1bd3cfp" if SOC_SERIES_RA4C1由此可以推断出完整的 Kconfig 选择链:BOARD_EK_RA4C1→SOC_R7FA4C1BD3CFP→SOC_SERIES_RA4C1→SOC_FAMILY_RENESAS_RA,并最终将SOC_SERIES与SOC分别解析为ra4c1与r7fa4c1bd3cfp。
板卡元数据在 board.yml 中声明:
board: name: ek_ra4c1 full_name: RA4C1 Evaluation Kit vendor: renesas socs: - name: r7fa4c1bd3cfp而在 ek_ra4c1.yaml 中则定义了构建相关的基本信息:identifier: ek_ra4c1、arch: arm、ram: 96(KB)、flash: 512(KB),支持的 toolchain 为zephyr与gnuarmemb,并声明supported外设包括gpio与uart。这些元数据供 twister 测试调度、构建系统与 CI 使用。
设备树配置:引脚复用与外设使能
板卡设备树源文件 ek_ra4c1.dts 首先包含 SoC 级设备树renesas/ra/ra4/r7fa4c1bd3cfp.dtsi,并引入本板的引脚复用文件ek_ra4c1-pinctrl.dtsi。
chosen 节点与默认外设
chosen { zephyr,sram = &sram0; zephyr,flash-controller = &code_flash_ctrl; zephyr,flash = &code_flash; zephyr,console = &uart4; zephyr,shell-uart = &uart4; zephyr,canbus = &canfd0; };zephyr,console与zephyr,shell-uart均指向uart4,意味着串口控制台与 Shell 默认使用 SCI4 通道;zephyr,canbus指向canfd0,表明 CAN-FD 是板级默认的 CAN 总线设备。
LED 与按键定义
leds { compatible = "gpio-leds"; led1: led1 { gpios = <&ioport6 10 GPIO_ACTIVE_HIGH>; label = "LED1"; }; led2: led2 { gpios = <&ioport4 7 GPIO_ACTIVE_HIGH>; label = "LED2"; }; led3: led3 { gpios = <&ioport4 4 GPIO_ACTIVE_HIGH>; label = "LED3"; }; }; buttons { compatible = "gpio-keys"; button0: s1 { gpios = <&ioport5 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; label = "Push button switch 1"; zephyr,code = <INPUT_KEY_0>; }; button1: s2 { gpios = <&ioport1 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; label = "Push button switch 2"; zephyr,code = <INPUT_KEY_1>; }; };三颗用户 LED 分别挂在 P610、P407、P404 引脚(GPIO_ACTIVE_HIGH);两颗按键 S1、S2 分别挂在 P513 与 P105(GPIO_PULL_UP | GPIO_ACTIVE_LOW),并映射为输入事件码INPUT_KEY_0/INPUT_KEY_1。此外aliases将led0 = &led1、sw0 = &button0、sw1 = &button1、watchdog0 = &wdt,方便应用层使用标准别名(如DT_ALIAS(led0))。
时钟树配置
&xtal { clock-frequency = <DT_FREQ_M(8)>; mosel = <0>; status = "okay"; }; &subclk { status = "okay"; }; &pll { clocks = <&xtal>; div = <1>; mul = <10 0>; status = "okay"; }; &canfdclk { clocks = <&pll>; div = <2>; status = "okay"; };xtal配置为 8 MHz 主晶振;subclk使能 32,768 Hz 子时钟(对应 RTC 等低速外设);pll由xtal驱动,div = 1、mul = 10,即 8 MHz × 10 = 80 MHz 系统主频;canfdclk由pll二分频得到 40 MHz,作为 CAN-FD 外设时钟。
串口、SPI、ADC、PWM、I2C 与 CAN-FD
外设使能片段(节选关键部分):
&sci4 { pinctrl-0 = <&sci4_default>; pinctrl-names = "default"; interrupts = <0 1>, <1 1>, <2 1>, <3 1>; interrupt-names = "rxi", "txi", "tei", "eri"; status = "okay"; uart4: uart { current-speed = <115200>; status = "okay"; }; }; &spi0 { interrupts = <4 1>, <5 1>, <6 1>, <7 1>; pinctrl-0 = <&spi0_default>; ... }; &adc0 { interrupts = <8 1>; interrupt-names = "scanend"; pinctrl-0 = <&adc0_default>; ... }; &pwm4 { pinctrl-0 = <&pwm4_default>; interrupts = <11 1>, <12 1>; interrupt-names = "gtioca", "overflow"; divider = <RA_PWM_SOURCE_DIV_256>; ... }; &iic1 { pinctrl-0 = <&iic1_default>; clock-frequency = <I2C_BITRATE_FAST>; ... }; &canfd_global { interrupts = <17 1>, <18 1>; interrupt-names = "rxf", "glerr"; ... canfd0 { pinctrl-0 = <&canfd0_default>; rx-max-filters = <16>; ... can-transceiver { max-bitrate = <5000000>; }; }; }; &wdt { status = "okay"; };值得注意的细节:
- SCI4串口速率为 115200 baud,中断按 rxi/txi/tei/eri 四类命名;
- SPI0(对应 Pmod 等扩展)、ADC0(scanend 中断)、GPT1 通道 PWM4(
RA_PWM_SOURCE_DIV_256分频)均已使能; - IIC1配置为快速模式(
I2C_BITRATE_FAST,400 kHz); - CAN-FD:
canfd0挂载于canfd_global之下,配置rx-max-filters = <16>,板载 CAN 收发器声明max-bitrate = <5000000>(5 Mbit/s); - data_flash定义了 8 KB 的
storage分区(zephyr,mapped-partition),可直接用于 NVS 等存储后端。
引脚复用(pinctrl)
ek_ra4c1-pinctrl.dtsi 通过RA_PSEL(外设, 端口, 引脚)宏完成引脚功能分配:
sci4_default:SCI_0 功能映射到 P207(TX)、P206(RX);spi0_default:SPI 映射到 P110(MISO)、P109(MOSI)、P111(RSPCK)、P112(SSL);adc0_default:ADC 输入位于 P002,并启用renesas,analog-enable模拟使能;pwm4_default:GPT1 的 GTIOC4A / GTIOC4B 映射到 P302 / P301;iic1_default:SCL1 / SDA1 映射到 P400 / P401,drive-strength = "medium";canfd0_default:CRX0 / CTX0 映射到 P103 / P102,drive-strength = "high"。
这些引脚定义与板级文档所述功能一一对应,是理解外设接线与驱动实现的直接依据。
构建与烧录
板载 J-Link 调试器
EK-RA4C1 板载 SEGGER J-Link OB 调试器,通过 USB 连接宿主机,支持 SWD 调试与烧录。在 board.cmake 中注册了两种烧录后端:
board_runner_args(jlink "--device=R7FA4C1BD") board_runner_args(pyocd "--target=R7FA4C1BD") include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)因此除jlink外,还可以使用pyocd作为烧录器。
环境准备
- 安装 SEGGER J-Link 驱动(下载地址见原文档 References 部分:https://www.segger.com/downloads/jlink/);
- 将板载 J-Link OB 的 USB 口连接到宿主机;
- 确认 J-Link OB 跳线处于默认配置——注意 SW4-4 需置于 OFF。
烧录步骤
原文档给出的烧录命令为:
west flash -r jlink即通过 west 构建系统的 flash 子命令,显式指定jlinkrunner 烧录程序到 EK-RA4C1。也可以先用west build完成构建,再执行上述 flash 命令;如需构建示例,可在west build时指定-b ek_ra4c1与示例路径。
默认串口控制台
依据设备树chosen配置,控制台输出位于 SCI4(UART4),速率 115200 baud。开发者在连接串口终端(如 minicom、PuTTY)时,应选用与 J-Link OB 对应的虚拟串口并设置为 115200-8-N-1。
底层驱动佐证
从板级supported列表与设备树使能情况看,gpio、uart已默认支持,spi、adc、pwm、i2c、can、watchdog、flash等外设在设备树中均已就绪,可通过对应 Kconfig 选项启用驱动。RA 系列驱动位于 drivers 对应子目录(如serial、gpio、spi、can、flash等),其实现依赖 soc/renesas/ra 下的 SoC 支持代码与 HAL 层。Zephyr 官方samples中的hello_world、blinky、drivers系列示例均可直接以ek_ra4c1为目标板编译验证。
总结
EK-RA4C1 在 Zephyr 中获得了完整的板级支持:从 Kconfig SoC 选择链、板卡元数据,到设备树的外设使能、引脚复用与时钟树配置,再到 J-Link / pyocd 双 runner 的烧录支持,形成了开箱即用的开发闭环。开发者只需遵循“安装 J-Link 驱动 → 连接 USB → 设置 SW4-4 为 OFF →west flash -r jlink”的流程,即可快速在 80 MHz Cortex-M33、512 KB Flash / 96 KB SRAM 的 RA4C1 平台上开展嵌入式应用开发与验证。
- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
相关推荐
FastAPI 与 OpenAPI Webhooks:如何把「你的 API 反向调用用户」的契约写进 OpenAPI 文档
FastAPI 与 OpenAPI Webhooks:如何把「你的 API 反向调用用户」的契约写进 OpenAPI 文档 当你的应用需要主动 通知 对方(在发
操作系统嵌入式RTOS物联网一条命令跑通多协议直播:MediaMTX 流媒体服务器快速上手指南
一条命令跑通多协议直播:MediaMTX 流媒体服务器快速上手指南 MediaMTX 是一款零依赖的流媒体服务器与媒体代理,一个服务同时接住 RTSP、RTMP
操作系统嵌入式RTOS物联网基于 Zephyr 的 Renesas EK-RA6M3 评估板实战指南:RA6M3 特性解析、设备树外设配置与 J-Link 烧录调试
基于 Zephyr 的 Renesas EK RA6M3 评估板实战指南:RA6M3 特性解析、设备树外设配置与 J Link 烧录调试 EK RA6M3 是
操作系统嵌入式RTOS物联网
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考