林宇祥的技术博客

  • 首页
  • RZ/V2H 开发指南
  • 关于作者
MYZR RZ/V2H EK320开发指南
MYZR RZ/V2H EK320开发指南

MYZR RZ/V2H EK320 CM33 Freertos实战入门

本文档记录了如何基于官方提供的工程便捷地对EK320开发板的cm33核进行Freertos开发。本博客的前置博客为“MYZR RZ/V2H EK320 CM33核配置UART串口并实现与外设通信”和“MYZR RZ/V2H EK320 CM33核配置GPT并产生PWM波”,请在学习本篇博客前完成前两篇博客的学习。 1. 了解Freertos 不了解Freertos的同学可以先通过下方视频链接简要的了解一下Freertos究竟是什么,我们为什么需要使用Freertos,以及它的便捷之处: https://www.bilibili.com/video/BV1mhWqzFEzn 2. 配置PWM和UART线程 不同于之前两篇博客我们直接在main_task_entry中使用GPT和UART。在本博客中,我们新建两个任务来编写pwm和uart的代码,让两个需求分别由两个任务负责,这样我们就不需要在main_task_entry中编写繁杂的代码了。 进入e2 studio,选中项目,点击上方任务栏的项目->Open fsp Configuration,打开我们的fsp配置界面。在左侧Threads窗口点击New Thread,位置如下图: 新建完成后我们可以选中新建的线程,点击下方的属性可以看到线程的一些基本信息,我们可以对线程以及待会儿会生成的文件名进行修改,比如这里博主设置为pwm_thread,栈大小设置为1024bytes: 然后为我们的线程添加GPT模块,如果你完成了前两篇博客,那么在我们的HAL/Common这个线程下会有我们的gpt和uart模块,点击HAL/Common线程,在右边Stacks窗口选中gpt模块,按下快捷键ctrl+x,再选中我们的pwm_thread线程,点击右边的Stacks窗口,再按下快捷键ctrl+v,即可把模块搬移过来,如下图: 按照同样的方法,我们也可以对uart_thread完成设置。 配置完成后我们点击右上角的Generate Project Content,完成代码生成。 3. 编写uart_thread代码 回到资源管理器界面,打开src文件夹我们可以看到其中多了一个uart_thread_entry.c的文件,这个文件就相当于是我们这个线程的main.c。打开之后我们发现定义了一个函数void uart_thread_entry(void *pvParameters),这就相当于这个线程的main函数。右键include的文件uart_thread.h,打开声明可以看到在这个头文件中已经包含了我们需要使用的uart和Freertos相关的头文件,所以我们不需要再包含额外的头文件,非常的方便。 回到uart_thread_entry.c文件。我们的需求就是电脑通过串口连接开发板,通过串口助手发送一个字符或者数字达到控制舵机启停的效果。避免uart_thread在主循环中反复监看串口,我们这还是使用中断回调来接收串口信息。如果没有开启终端回调,可以参考上一篇博客。 在void uart_thread_entry(void *pvParameters)函数前添加以下代码: 这个回调函数用来接收发来的数据并将标志位置1。紧接着我们编写void uart_thread_entry(void *pvParameters)函数: 标志位置1以后在主循环中将数据回传,查看串口是否正常工作。 为了完成uart_thread和pwm_thread之间的通信,我们再次前往dsp配置界面,在Threads窗口下方还有一个Objects,拖拽开点击右上角的New Object,选择Binary Semaphore,新建好后可以给我们的信号量取一个名字: 点击右上方绿箭头生成代码后回到void uart_thread_entry(void *pvParameters)函数,修改代码: 多出的函数意思是将信号量给give,当另一个task收到了give这个信号就可以返回一个值,通过返回值我们可以完成状态设置。 4. 编写pwm_thread代码 前往pwm_thread_entry.c文件,编写我们的主循环代码: 这里主要就是通过xSemaphoreTake函数来获取信号量的状态来对舵机的状态进行控制,其中一定尤其注意延时的应用,否则其他线程容易卡死,也可以设置不同的线程优先级,可以自行探索。在我们控制舵机的同时也可以在linux命令行中继续调用官方的rpmsg_sample_client示例。如此,我们就达到了三个任务并发进行。下面附上演示效果: 在开发过程中博主也发现当串口设置为开漏输出无上下拉时直接接串口模块也可以使用,可能是因为串口模块自带上拉。 以上便是本文档的全部内容。主要对Freertos在EK320开发板上的运用做了一个初步探索。

0comments 3489hotness 0likes 林宇祥 Read all
MYZR RZ/V2H EK320开发指南

MYZR RZ/V2H EK320 CM33核配置UART串口并实现与外设通信

本文档记录了如何在e2 studio中开启串口并使能中断,并且实现电脑向串口发送数据,cm33对串口数据进行回传的功能。一下是本文的参考链接: 1. 选取串口引脚 根据上文使用GPT时候提到,明远智睿这个开发板所有的拓展IO都是1.8V的电平标准,所以我们在使用串口的时候仍然需要做开漏输出和外部上拉来统一电平标准。博主这里使用的是ch340的usb转ttl模块,避开官方例程已经占用的IO引脚,这里选择80和81这两个引脚作为串口,排针位置如下图: 2. 配置e2 stuido FSP,开启串口中断使能 按照上一篇GPT的博客。这次我们新增stack时,选择connectivity->UART(rsci_b_uart)。然后我们发现stacks窗口中多出了一个g_uart0模块,如下图: 来到pins界面,在ports中找到P8->P80、P81,将P80和P81的Output Type改为n-ch open drain,如下图: 选择Peripherals->Connectivity-RSCI->RSCI8,将模式设置为Asynchronous UART,如下图: 回到Stacks页面,点击g_uart0模块,选择属性,对串口进行配置。关闭FIFO支持,开启中断回调,填写的名称就是我们待会儿编写的回调函数的名称,设置波特率为115200,通道改为8,如下图: 点击Generate Project Content,生成代码。 3. 编写代码,运行固件验证 回到文件main_task_entry.c,在extern int app (struct rpmsg_device * rdev, void * platform, unsigned long svcno);这一行下方添加回调函数: 依旧在main_task_entry函数入口,init_system后添加以下代码: 点击锤子进行编译,得到固件。按照编译指南中的方法拷贝至开发板。随后进行电气连接,如下图: 运行固件后打开串口助手,选择合适的波特率,发送字符进行功能验证: 可以看到成功实现cm33串口通信!如果再执行rpmsg_sample_client时候,发送信息仍然发现信息能够正常回传,说明中断工作正常! 本文档到此为止,主要是对cm33的串口以及中断回调功能进行验证。

0comments 379hotness 0likes 林宇祥 Read all
MYZR RZ/V2H EK320开发指南

MYZR RZ/V2H EK320 CM33核配置GPT并产生PWM波

本文档记录如何修改镜像内核源码,如何在e2 studio中配置fsp、管脚等来达到开发板CM33核输出指定频率和占空比的PWM。一下是本文档的参考链接: 1. 修改内核,开启GPT时钟 为了保证GPT的时钟不被linux给枪毙,我们需要前往内核驱动源文件给时钟打上使能。 打开内核源码目录,修改文件:~/linux/drivers/clk/renesas/r9a09g057-cpg.c 在343行左右,将两个GPT中最后的0都改为1。 修改完成之后按照博主的编译指南重新编译Image,烧录系统。 2. 查阅原理图,确定PWM输出引脚 查阅原理图,找到Extended GPIO,这里博主选择下图黑框框出的GPIO作为PWM输出引脚。 3. 查阅RZ/V2H数据手册,进行e2 studio管脚配置与编译 查看datasheet 2.2.1 List of External Pins,我们往下翻,可以看到关于管脚P77的一些定义,如下图: 可以看到这个管脚的电平标准为1.8V或者3.3V。经过博主测试,明远智睿厂家的核心板这些扩展引脚都是以1.8V作为电平标准,所以如果直接输出,那么PWM幅值必为1.8V。要想获得3.3V的PWM波有两种方式: 这里博主主要是先快速验证,就用面包板搭了一个上拉电路。 打开e2 studio,点击导航栏中的项目->Open FSP Configuration。等待e2 studio加载完毕后在下方任务窗口选择Stacks,可以看到我们的HAL/Common Stacks窗口。这个时候可以发现其中并没有g_timer。我们点击窗口右上角的New Stack->Timers->general PWM。就可以发现多出了一个g_timer模块,如下图: 为该模块分配管脚。点击该模块,点击下方任务窗口的Pins,在Pin Selection窗口中找到Peripherals中的Timer:GPT中的GPT6,按照下图所示进行配置: 在Pin Selection中找到Ports->P7->P77,按照下图配置为开漏输出,无上下拉: 点击上方任务栏->窗口->显示视图->属性,返回Stacks窗口,点击g_timer0模块,点击下方任务窗口中的属性菜单,按照下图进行配置: 这里配置的意思为开启管脚输出使能,选择通道6,因为我们刚刚配置的GPT为GPT6。模式选择Saw-wave PWM可以输出方波,Period Unit选择Hertz表示以赫兹为单位,所以我们想生成50HZ方波我们直接在Period填写50即可(十分的方便!不用自己再去计算预分频,重装载什么的了,好评!!),下面的Output|Duty Cycle Percent (only applicable in PWM mode) 填写50表示占空比为50%。使能Output|GTIOCB Output Enabled,因为我们刚刚勾选的是这个管脚。 一切准备就绪,点击右上角Generate Project Content,为我们进行项目代码初始化(比较像stm32cubemx配置操作)。完成过后回到我们的资源管理器页面。编辑src/main_task_entry.c文件,在ret = platform_init(proc_id, rsc_id, &platform);这一行代码前添加: 点击锤子进行编译!得到产物,按照编译指南中的方法拷贝到开发板。 4. 搭建外部上拉,查看PWM波形 博主这里直接使用板子上的3.3V进行上拉,具体排针位置可以查阅原理图,上拉电阻选择15K,电路连接图如下图: 按照编译指南中的方法启动cm33固件,再用示波器去打,可以发现PWM生成效果良好,电源有一点偏差是正常现象(板子上的3.3确实就是这么大)如下图: 如果发现波形存在高频噪声,如下图,可以尝试更换质量更好的电源: 以上就是此次文档的全部内容,想要进行更多开发可以翻看项目文件下的HAL库函数,按照自己的需求生成PWM,达到随时更改占空比,频率的效果。

2comments 638hotness 0likes 林宇祥 Read all
MYZR RZ/V2H EK320开发指南

MYZR RZ/V2H EK320 多核异构与 Docker 适配镜像编译指南

本文档记录了如何利用明远智睿提供的镜像、TF-A、U-Boot 以及内核源码,结合官方的 Multi-OS 补丁,基于 Yocto/Poky 重新编译具备运行 Docker 和 Multi-OS(Remoteproc)能力的适配 EK320 开发板的镜像。在开发板上对多核异构及docker功能进行验证。由于tf-a以及uboot源码是博主单独联系明远智睿工程师获得的,是否可以开源出来还需征求厂家允许。下面贴出本文的一些参考链接: RZ/V2H Quick Start Guide for RZ Multi-OS Package多核异构参考应用文档 RZ Common System Release Package | Renesas ルネサスRZ通用系统包 https://docs.myzr.com.cn明远智睿ek320调试文档 RZ/V2H BSP Manual Set (RTK0EF0045Z94001AZJ-v1.0.1.zip) | Renesas 瑞萨电子RZ/V2H BSP Manual Renesas RZ/V AI | The best solution for starting your AI applications.RZ/V2H evk镜像编译教程 RZV Getting Started with Flexible Software Package e2studio配置RZ/V2H开发环境教程 参考下载链接: https://pan.baidu.com/s/16vUZhdR6dh_xncWr7ice0g 明远智睿镜像 提取码: xwyd ROS2 Installation Guide for the RZ/V2H | Renesas 瑞萨电子 ROS2安装指导(处理docker依赖) RZ 多操作系统软件包 | Renesas 瑞萨电子 0. 环境准备 (Prerequisites) 1. Bootloader 与 TF-A 源码准备与修补 1.1 解压与补丁准备 在 Windows 下解压 r01an7254ej0320_rzv-multi-os-pkg.zip,提取其中的 meta-rz-features_multi-os_v3.2.0.tar.gz 拷贝至 WSL2 的 ~ (home) 目录下并解压。 将 TF-A 和 U-Boot 源码包拷贝至 home 目录解压后,删除原压缩包。 分别进入 TF-A 和 U-Boot 的根目录,执行并打入所有补丁文件 。 1.2 开启 MCPU 对 SRAM 的访问权限 为确保协处理器能够正常访问共享内存,需要修改 TF-A 源码: 操作提示:修改完成后,将 TF-A 和 U-Boot 源码重新压缩,严格命名为 tfa.tar.gz 和 uboot.tar.gz。 2. Yocto 编译环境配置与初次构建 2.1 安装系统依赖包 Bash 提示:安装完成后请重启 WSL2 以确保语言环境变量生效。 2.2 初始化 Yocto 环境 解压 SDK 包并初始化环境: Bash 2.3 网络代理配置 (防 Fetch 失败) Yocto 构建极其依赖网络,建议配置 Git 及环境变量代理: Bash 2.4 执行编译 Bash 选择对应内存大小的板子 (例如 rvb)。 异常处理:若运行后期报错中断,查看 home 根目录是否生成了 downloads 文件夹。将之前打包好的 tfa.tar.gz 和 uboot.tar.gz 拷贝进该目录,重新执行脚本即可。 编译完成后,前往 build/tmp/deploy/images/myzr-rzv2h-ek320 提取 bl2_bp_emmc-myzr-rzv2h-ek320.srec 和 fip-myzr-rzv2h-ek320.srec。将这两个文件烧录至开发板,即可开放 Linux 对 CM33_sram 的读写权限。 3. 设备树 (DTS) 定制与协处理器配置 为了方便后续频繁修改内核,第二阶段改用 Poky 工具链 直接编译内核源码。 3.1 准备独立内核编译环境 3.2 移植 Multi-OS 设备树配置 将 ~/linux/arch/arm64/boot/dts/renesas/r9a09g057h4-evk-multi-os.dtsi 拷贝至 ~/linux/arch/arm64/boot/dts/myzr/ 目录中。 修改 r9a09g057.dtsi 使用 VS Code (code .) 打开 ~/linux/arch/arm64/boot/dts/myzr/r9a09g057.dtsi,在文件末尾附近(约 2293 行处)添加 CM33 协处理器节点: DTS 跳转到200行左右,将: 改为: 跳转到216行左右,将: 改为: 修改板级设备树 myzr-rzv2h-ek320.dts DTS 至此设备树的修改结束 。 4. 内核驱动集成与 Docker 依赖配置 4.1 集成 AWO Notifier 驱动 代码段 3. 修改 ~/linux/drivers/soc/renesas/Makefile,在末尾追加: 4.2 Menuconfig设置 进入linux目录,在命令行输入make ARCH=arm64 menuconfig进入menuconfig菜单 (1). 开启 Cgroups 和 Namespaces(资源隔离核心) 路径:General setup ---> (2). 开启网络桥接与防火墙(Docker 联网核心) 路径:Networking support ---> Networking options ---> (3).…

2comments 431hotness 0likes 林宇祥 Read all
12
林宇祥

林宇祥

电子科技大学信息与通信工程学院电子信息工程专业本科生,主攻嵌入式软硬件协同开发、Linux 内核与驱动定制、多核异构系统架构(ARM Cortex-A55 + Cortex-M33)与端侧 AI 模型部署。

核心技术栈
C / C++ Linux 内核/驱动 ARM Cortex-A/M RZ/V2H 平台 多核异构 (AMP) OpenCV 视觉 FreeRTOS Docker 容器
联络与专栏
🏫 校园邮箱: linyuxiang@std.uestc.edu.cn
📮 常用邮箱: 1741942344@qq.com
💬 QQ 交流: 1741942344
📚 精选专栏: RZ/V2H 开发指南 (10篇)
查看完整资料 →

近期文章

  • 我把论文阅读器做进了 VS Code:中英对照、公式原图、AI 答疑
  • 多传感器相对定位的观测建模与优化方法
  • 基于 Yocto 与瑞萨 RZ/V2H 多核异构的跨海大桥智能巡检 ROV 全景结项总结
  • 关于MIPI摄像头的问题
  • 关于CA55与CM33总线访问冲突的问题

近期评论

  1. SevenFriends on 基于瑞萨ai_sdk的yolov8模型部署(一):环境搭建
  2. xcc on 基于瑞萨ai_sdk的yolov8模型部署(一):环境搭建
  3. SevenFriends on MYZR RZ/V2H EK320 CM33核配置GPT并产生PWM波
  4. 悲伤程序员 on MYZR RZ/V2H EK320 CM33核配置GPT并产生PWM波
  5. HiSysCore on MYZR RZ/V2H EK320 多核异构与 Docker 适配镜像编译指南

COPYRIGHT © 2026 林宇祥的技术博客 · 电子科技大学. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang