本帖最后由 sujingliang 于 2026-4-19 09:26 编辑
FPB_RA6E2已经做了Zephyr适配,直接安装Zephyr开发环境就可以进行FPB_RA6E2开发。
关于Zephyr命令行开发环境的搭建可以参考Zephyr的官方地址:https://docs.zephyrproject.org/latest/develop/getting_started/index.html
开发环境的搭建主要包括:
1、在搭建命令行Zephyr开发环境
2、获取源代码
3、构建、烧录并运行示例应用程序
一、安装依赖
- sudo apt install --no-install-recommends git cmake ninja-build gperf \
- ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \
- xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
主要依赖| Tool | Min. Version | | CMake | 3.20.5 | | Python | 3.12 | | Devicetree compiler | 1.4.6 | 由于系统之前已经安装了一些依赖,所以主要安装了device-tree-compiler
二、获得Zephyr,安装ython依赖1、建立python虚拟环境- python3 -m venv ~/zephyrproject/.venv
2、激活python虚拟环境(以后每次进入Zephyr命令行,先执行激活命令)- source ~/zephyrproject/.venv/bin/activate
3、安装west在 Zephyr RTOS 开发环境中,West 是一个官方提供的多用途工具(命令行工具),它的名字来源于 “West” 是 “Zephyr’s meta-tool” 的简称。既管理依赖(拉取外部模块),又负责执行构建和运行任务。
4、获得Zephyr源代码- west init ~/zephyrproject
- cd ~/zephyrproject
- west update
5、将当前工作区的 Zephyr 安装,作为一个CMake配置包,注册到系统的CMake用户包注册表中,让CMake能够自动找到Zephyr6、使用west packages安装python依赖- west packages pip --install
三、安装Zephyr SDK- cd ~/zephyrproject/zephyr
- west sdk install
Zephyr软件开发套件(SDK)包含适用于Zephyr支持的每种架构的工具链,其中包括构建Zephyr应用程序所需的编译器、汇编器、链接器和其他程序。它还包含其他主机工具,如用于模拟、烧录和调试Zephyr应用程序的自定义QEMU和OpenOCD构建。
SDK会被安装到:~/zephyr-sdk-<version>/以上安装过程中,可能会遇到意外中断的情况,再次执行安装命令可以从断点继续安装。四、编译Blinky例程1、编译- source ~/zephyrproject/.venv/bin/activate
- cd ~/zephyrproject/zephyr
- west build -p always -b fpb_ra6e2 samples/basic/blinky
2、烧录fpb_ra6e2配置了2中烧录方式:
开发板上已经自带JLINK,因此选择JLINK烧录,但是首先要使linux支持jlink:- 访问SEGGER 官方网站:https://www.segger.com/downloads/jlink/,选择对应的 Linux 64-bit (deb) 格式的安装包
- 安装 .deb 安装包:sudo dpkg -i <安装包名字>.deb
- 验证安装:JLinkExe -v
jlink烧录:
main.c
- #include <stdio.h>
- #include <zephyr/kernel.h>
- #include <zephyr/drivers/gpio.h>
- /* 1000 msec = 1 sec */
- #define SLEEP_TIME_MS 1000
- /* The devicetree node identifier for the "led0" alias. */
- #define LED0_NODE DT_ALIAS(led0)
- /*
- * A build error on this line means your board is unsupported.
- * See the sample documentation for information on how to fix this.
- */
- static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
- int main(void)
- {
- int ret;
- bool led_state = true;
- if (!gpio_is_ready_dt(&led)) {
- return 0;
- }
- ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
- if (ret < 0) {
- return 0;
- }
- while (1) {
- ret = gpio_pin_toggle_dt(&led);
- if (ret < 0) {
- return 0;
- }
- led_state = !led_state;
- printf("LED state: %s\n", led_state ? "ON" : "OFF");
- k_msleep(SLEEP_TIME_MS);
- }
- return 0;
- }
在~/zephyrproject/zephyr/boards/renesas/fpb_ra6e2/fpb_ra6e2.dts中定义如下:
- compatible = "gpio-leds";
- led1: led1 {
- gpios = <&ioport2 7 GPIO_ACTIVE_HIGH>;
- label = "LED1";
- };
- led2: led2 {
- gpios = <&ioport2 6 GPIO_ACTIVE_HIGH>;
- label = "LED2";
- };
- };
- aliases {
- led0 = &led1;
- led1 = &led2;
- sw0 = &button0;
- watchdog0 = &wdt;
- };
可以看到main.c中led0对应dts中的p207
实际运行效果:
|