GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:08 FPGA DMA 读写案例

【RK3568+PG2L50H开发板实验例程】Linux部分 | FPGA dma_memcpy_demo 读写案例 本文介绍了ARM端通过PCIe总线对FPGA的DRAM进行读写操作的实现方案。应用程序通过ioctl触发DMA传输后,等待驱动上报input事件作为传输完成的信号。测试流程包括:ARM端配置DMA参数并启动传输,FPGA端实现PCIe端点功能和处理BAR0空间事务。操作步骤详细说明了如何部署测试程序、查看PCIe设备状态、启用设备以及执行测试,最终输出传输速率和错误统计等结果。该方案实现了高效的数据传输控制机制,为ARM与FPGA间的数据交互提供了可靠解决方案。 阅读详情

本篇教程基于ShiMetaPi 研发的FPGA+ARM开发板——GM-3568JHF展开。

01 案例简介

案例功能描述:ARM端利用PCIe总线对FPGA的DRAM执行读写操作。应用程序通过ioctl函数触发DMA数据传输后,将等待驱动程序发出的input事件作为响应。应用程序接收到该事件时,表示DMA数据传输已经结束。

02 测试程序执行流程

ARM端

1.将数据写至 dma_memcpy 驱动申请的连续内存空间(位于 DDR)。配置 DMA,如源地址、目标地址、传输的数据大小等;

2.写操作:通过 ioctl 函数启动 DMA,通过 PCIe 总线将数据搬运至 FPGA DRAM;程序接收驱动上报 input 事件后,将通过 ioctl 函数获取 DMA 搬运数据耗时,并计算DMA写速率;

3.读操作:通过 ioctl 函数启动 DMA,通过 PCIe 总线将 FPGA DRAM 中的数据搬运至dma_memcpy 驱动申请的连续内存空间(位于 DDR);程序接收驱动上报 input 事件后,将数据从内核空间读取至用户空间,然后校验数据,同时通过 ioctl 函数获取 DMA 搬运数据耗时,并计算 DMA 读速率。

FPGA端

1.实现 PCIe Endpoint 功能;

2.处理 PCIe RC 端发起的 PCIe BAR0 空间读写事务;

3.将 PCIe BAR0 读写数据缓存至 FPGA DRAM 中。

03 操作流程

打开终端,将本案例 bin 目录下(05-开发资料\软件开发资料\linux_demo\smdt_fpga_dma_memcpy_demo\bin)的可执行程序 smdt_dma_memcpy_demo 拷贝至开发板文件系统 (源码可以在 src 路径下查看)。

#修改 Linux 内核日志的显示级别,内核的日志级别被设置为只显示紧急或更高级别的消息
echo 1 4 1 7 > /proc/sys/kernel/printk

在终端执行如下指令,切换到 smdt_dma_memcpy_demo 可执行程序所在目录

#切换到 smdt_dma_memcpy_demo 可执行程序所在目录
cd ‘可执行文件所在目录’

#查看 smdt_dma_memcpy_demo 是否在该目录下
ls

若可执行文件 smdt_dma_memcpy_demo 在当前目录下,则修改可执行文件的权限

#修改文件权限
chmod 777 smdt_dma_memcpy_demo 

#查询是否修改成功
ls -ld smdt_dma_memcpy_demo

查询确认文件修改权限成功后,执行 ./smdt_dma_memcpy_demo -h 可以查看该程序的帮助信息

#查看帮助信息
./smdt_dma_memcpy_demo  -h
#-a:设置 PCIe 地址;
#-s:设置传输数据大小(单位:Byte);
#-c:设置循环读写次数;
#-d:设置输入设备;
#-v:显示版本信息;
#-h:显示帮助内容。

执行结果如下图:

执行以下命令,查看 PCIe BAR 空间地址。从下图可见,PCIe BAR 空间映射至 0xf0200000 地址,大小为 64KByte,并查看 PCIe 设备连接状态。

lspci -s 0002:21:00.0 -vv

执行以下命令,使能 PCIe 设备。

echo 1 > /sys/class/pci_bus/0002\:21/device/0002\:21\:00.0/enable

应用程序通过ioctl函数发送命令开启 DMA 传输数据后,等待驱动上报 input 事件;当应用层接收到 input事件,说明 DMA 传输数据完成。执行以下指令以查看input输入事件接口。如图所示,input事件接口为/dev/input/event0。

evtest

执行以下指令,将随机生成的数据写入FPGA的DRAM,随后从FPGA的DRAM中读取数据。测试结束后,通过/dev/input/event0接收事件通知,输出测试结果,其中包括平均读写时间、平均传输速率以及读写错误数量等统计信息。执行结果如下图。

./smdt_dma_memcpy_demo -a 0xf0200000 -s 65536 -c 100 -d /dev/input/event0
#这里的event0根据evetest查询到的结果更改。

超详细!工业级RK3568核心板性能测试与压力测试记录 该程序需要在空闲的机器上运行才能精确的获取到设置的CPU负载率,如果有其他占用CPU的进程在运行则实际的利用率会比设定值要高,所以与实际设置的CPU负载率存在一定的误差。 阅读详情

相关推荐

【紫光同创Logos2+RK3568开发板】国产芯片强强联合,开启嵌入式开发新篇章

FSPI 接口具备灵活配置的特性,在数据传输方面可根据实际应用场景,如对传输速率、数据格式等要求进行调整,适用于各类对数据传输有特定需求的应用场景,无论是简单的低速数据交互,还是较为复杂的中高速数据传输任务,都能稳定胜任。PCIe 接口凭借其高速串行通信的特性,能够为大量数据的快速传输开辟高速通道,满足诸如在多通道 AD 采集处理系统中,FPGA 端采集到的海量数据迅速传输至 RK3568 进行深度分析处理的需求。RK3568 成熟的开发工具和丰富的文档资料,让开发者能够快速上手,进行上层应用的开发。

MYMINIEYE的博客 1277

【RK3568+PG2L50H开发板实验例程】Linux部分 | GPS 调试案例

文章介绍了GPS模块接入开发板UART4接口的方法,提供了完整的操作流程:包括程序下载、权限设置、参数配置(默认波特率9600)以及定位信息获取指令。测试成功会显示坐标数据,失败则提示检查天线模块,按Ctrl+C可强制退出程序

MYMINIEYE的博客 422

【RK3568+PG2L50H开发板实战】Linux与FPGA高效数据交互:DMA_memcpy性能优化指南

本文以RK3568开发板与PG2L50H FPGA的异构系统为例,深入探讨了通过PCIe总线实现Linux与FPGA间高速DMA数据传输的性能优化。文章从基础环境搭建与基准测试入手,逐步剖析了驱动层内存管理、DMA配置、中断处理,以及应用层ioctl调用、内存映射和测试策略等关键优化点,旨在帮助开发者榨干硬件性能,实现高效稳定的数据交互。

perl8的博客 618

【RK3568+PG2L50H开发板实验例程】Linux部分 | 按键检测案例

摘要:按键检测案例,通过监听UBOOT按键事件实现按键状态检测。案例使用evtest命令识别事件设备节点(如event2),将可执行程序mes_key_demo拷贝至开发板并修改权限后,运行程序即可检测按键操作并打印状态信息。操作流程包括设备节点确认、程序部署、权限设置和测试执行,按Ctrl+C可退出测试。

MYMINIEYE的博客 323

【RK3568+PG2L50H开发板实验例程】Linux部分 | 以太网测试案例

本文介绍开发板与PC端以太网通信的实现方法。首先确保双方通过交换机连接并验证网络通畅,使用ifconfig/ipconfig查询IP地址并通过ping测试连通性。然后配置NetAssit软件建立TCP连接,在开发板运行mes_eth_demo程序,支持recv(接收数据)、send(发送数据)和exit(断开连接)三种指令操作。通过命令行交互可实现双向数据传输,并附有操作截图说明每个步骤的执行效果。该案例完整演示了从网络配置到数据收发的全过程操作流程。

MYMINIEYE的博客 570

【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用

本文介绍了在紫光PG2L50H-484芯片上使用RAM、ROM和FIFO三种存储IP的实验方法。详细阐述了三种存储器的特性差异:RAM支持随机读写,分为单端口、伪双端口和真双端口三种模式;ROM只能读取,需初始化配置;FIFO具有先入先出特性,常用于数据缓存和跨时钟域传输。文章通过时序分析和代码示例(包括状态机控制逻辑)展示了三种存储器的读写操作,特别强调了时序逻辑中"当前时钟采样、下一周期生效"的特点。实验基于PDS2022.2-SP6.4开发环境,采用Verilog实现,并提供了完整的仿真测试方案。

MYMINIEYE的博客 1380

使用cmd查看3568主板相关

所以,往后我们想通过cmd了解RK3568的某一项参数的时候,或者想使用RK3568某一个系统功能的时候。rk3568主板能运行的程序都在system/bin里面,这个是我们直接可以使用cmd用到的。如果系统里面有对应的方法,则可以查找出对应的参数。如果没有,则无须去看。后面会继续补全,如果有啥不对的地方。

xiaoyifeishuang1的博客 850

系统性能优化——Linux系统上运用DMA实现memcpy

DMA(Direct Memory Access)是一种高效的数据传输方式,允许某些硬件子系统在不需要CPU介入的情况下直接访问系统内存。高效性:通过DMA,数据可以直接在内存和I/O设备之间传输,而不需要经过CPU。这样可以减少CPU的负担,使其可以处理其他任务。自主性:一旦CPU初始化了传输操作,DMA控制器就会接管总线控制权,自行完成数据传输任务。这意味着在传输过程中,CPU可以并行执行其他操作。高速性:DMA通常用于高速数据传输,特别是在大量数据的移动时,能够显著提高系统的吞吐量。硬件控制。

fy2412955857的博客 3466

【rk3568性能测试】

【代码】【rk3568性能测试】

ldinvicible的专栏 1324

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

Chihiro_S的专栏 1335

模板匹配加速之金字塔分层搜索

图像金字塔是一种多分辨率图像表示方法,它通过一系列逐渐缩小或放大的图像来表示原始图像的不同尺度。高斯金字塔(Gaussian Pyramid):通过不断下采样(降采样)生成更小的图像。拉普拉斯金字塔(Laplacian Pyramid):通过高斯金字塔和差分操作生成一组残差图像。在模板匹配中,我们主要使用高斯金字塔来实现多尺度匹配。金字塔灰度模板匹配通过多尺度搜索策略,在保持较高准确率的同时显著提升匹配速度,尤其适用于:高分辨率图像处理实时检测系统移动端设备等资源受限场景。

weixin_44969144的博客 1732

DMA驱动的demo

【代码】DMA驱动的demo。

weixin_45930312的博客 603

N32在Keil中J-Link识别失败的排查与修复指南

本文详细解析了在Keil开发环境中,J-Link调试器无法识别N32系列MCU的常见问题。通过分步指导,从检查修改Keil工程配置文件、更新J-Link驱动,到手动添加N32专用设备支持包,系统性地提供了排查与修复方案,帮助开发者快速恢复调试连接,确保开发流程顺畅。

301

基于 UltraScale FPGA+华为海思 ARM 的高性能综合视频图像处理板 / FPGA+ARM

PCIE703 是一款基于 PCIE 总线架构的高性能综合视频图像处理平台,该平台采用 Xilinx 的高性能 Kintex UltraScale系列 FPGA 加上华为海思的高性能视频处理器来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强大的神经网络引擎,支持多种智能算法应用,集成多路 MIPI视频接口,突破了数字接口视频输入的性能瓶颈,高性能的 H.265 视频编解码引擎,使得传统视频图像处理的算法效果和性能得到进一步的提升。 板载功能强大的 FPGA 处理

F_white的博客 5273

【项目分享】RailTracker: 火车票务数据采集与分析

从12306使用爬虫爬取火车站及车次信息、火车票价 通过本项目,我们将带领访问者手把手完成火车票数据采集、数据清洗、数据集成、可视化的一整个流程!

zhushatong的博客 3344

AutoSar标准官网下载

AutoSar文档下载和文档命名格式。。。

m0_56208280的博客 3521

开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图

ARM单片机是基于Cortex-M3内核的LM3S6911,插补核心算法均在该ARM内完成,一方面通过以太网与上位机界面交换加工数据,另一方面与FPGA(ALTERA的EP1C3)交换加工脉冲计数与IO开关量等相关参数。插补带有连续插补功能,即在插补过程中输入下一点的插补数据,以保证脉冲的连续,使插补达到更快更好的性能。注意实物图是旧版的,出售的图纸是新版本的,元器件布局合理些,跟实物图稍有不同。支持多种控制方式,如定量运动,连续运动,回零运动,多轴直线插补,圆弧插补等。源码,ARM去掉算法后的框架源码。

m0_74113537的博客 1295

为Ollama本地大模型添加持久化记忆层:openclaw-ollama-memory项目详解

在构建基于大型语言模型(LLM)的对话应用时,上下文管理是核心技术挑战之一。其原理在于模型本身不具备跨会话的持久化记忆能力,每次请求都是独立的。这导致在多轮对话中,模型无法有效利用历史信息,用户体验割裂。从技术价值看,独立的记忆层通过解耦推理与存储,能突破模型固定上下文窗口的限制,实现更智能、连贯的交互。其核心应用场景包括聊天机器人、智能助手及需要长期记忆的复杂代理。本文聚焦的 openclaw-ollama-memory 项目,正是为 Ollama 生态提供的记忆层解决方案,它通过向量检索和智能摘要等机制

weixin_42521558的博客 312

ArmSom-W3开发板之PCIE的开发指南(二)

介绍在Linux系统下如何应用pcie接上的设备

nb124667390的博客 902

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险

大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。

奶爸的编程之路,也就一周冷个三天 159

【实战教程】BMAD-METHOD 入门教程:用 AI 组建你的“七人开发团队”

简单说,BMAD-METHOD 就像一个会自己运转的“AI 软件公司”。它不是某个单一应用,而是一种AI 工作流方法论—— 把一个项目拆解成多个角色(产品、架构、前后端、测试、运维等),每个角色由一个 AI 智能体负责协作,就像你真的在带一个 7 人团队。GitHub 项目地址 👉目前 Star 数已经达到了恐怖的 20k,可见这套方法的影响力不小。BMAD-METHOD 的核心理念不是“生成代码”,而是“自动化协作”。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1624

全方位解析:什么是异构开发板?ARM + FPGA 异构开发板的优势。

我们常说的“异构开发板”,指的是在一块板子上集成了两种或多种不同类型的处理器。最常见的组合是:ARM 处理器 + FPGA 芯片。其中,ARM 负责通用控制和系统管理,像调度、数据处理这些常规任务;FPGA 则用于加速特定工作,比如高速并行处理、信号运算、协议转换等。ARM 是“通用工人”,负责日常运转;FPGA 是“定制专家”,专注特定场景的高效处理。两者协同,既能保证系统的灵活性,又能兼顾高性能需求。

ShiMetaPi的博客 771

教你如何阅读Autosar代码(6):常量变量定义

编译器抽象应该为常量的声明和定义定义CONST宏。编译器抽象应该定义VAR宏来声明和定义变量。memclass:常量本身的分类;memclass:变量本身的分类;vartype:变量的类型;type:常量的类型;

wdconan001的博客 958

【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程

本文介绍了DDR3读写测试实验,采用深圳市小眼睛科技有限公司的PG2L50H芯片开发板,搭载MT41K256M16 DDR3芯片(512MB容量)。实验使用PDS2022.2-SP6.4开发环境,详细说明了DDR3控制器的配置流程,包括IP核添加、参数设置(支持1066Mbps速率、16bit总线宽度)和管脚约束方法。实验现象通过LED状态显示:LED1/5常亮表示正常,LED3/4闪烁分别对应系统时钟正常和数据检测无误。实验验证了DDR3控制器的读写功能,为开发者提供了完整的配置参考方案。

MYMINIEYE的博客 1345

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

工程师评测 | RK3568开发板上手测试

OK3568-C开发板是飞凌嵌入式新推出的嵌入式开发板,采用核心板+底板的分体式设计,基于 Rockchip RK3568 处理器设计,该处理器具有高性能、低功耗特点,功能丰富,可玩性极高。

飞凌嵌入式 4195

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

中科亿海微SoM模组——FPGA+ARM核心板

本核心板共扩展出2个高速扩展口,使用2个100Pin的板间连接器和扩展板连接,PIN脚间距为0.8mm,公头连接器的高度为5mm,与底板的母座连接器配置实现高速数据通信。核心板FPGA扩展出42对LVDS线,ARM共有47根数据及控制线,具有一路有源晶振时钟输入,频率为20MHz,对于需要大量IO及丰富总线接口的用户,此核心板是很好的选择。核心板长宽高为62mm×52mm×8.5mm(正面高度3.5mm,背面高度5mm),为8层板,板厚1.6mm,适合二次开发。供电为5V直流供电,通过背面扩展口供电。

ehiway的博客 822

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:07 FPGA FSPI 通信案例
下一篇: 基于BM1684X算力盒子丨Qwen3-langchain-AI Agent
ShiMetaPi
博客等级 码龄1年 244粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值