当前位置:首页 > 公众号精选 > 小麦大叔
[导读] 前 言 本文主要介绍i.MX8MMini基于FlexSPI、PCIe与FPGA的高速通信案例。本文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bit虚拟机:VMware15.1.0Linux开发环境:Ubuntu18.04.464b...


前  言
本文主要介绍i.MX 8M Mini基于FlexSPI、PCIeFPGA高速通信案例。


本文档适用开发环境:


Windows开发环境:Windows 7 64bit、Windows 10 64bit


虚拟机:VMware15.1.0


Linux开发环境:Ubuntu18.04.4 64bit


U-Boot:U-Boot-2020.04


Kernel:Linux-5.4.70


Linux SDK:5.4.70_2.3.0


*测试硬件平台:TLIMX8-EVM评估板(NXP i.MX 8M Mini)



点击图片/图注即可查看产品详细介绍↓↓↓


图 1 TLIMX8-EVM评估板


案例一:主要演示ARM Cortex-A53通过FlexSPI接口读取FPGA(Spartan-6采集卡TL-HSAD-LX)发送的模拟数据,并进行校验,通过串口打印相关信息。实测速率为114.89MB/s。


案例二:主要演示ARM Cortex-A53通过PCIe接口与FPGA进行通信,实现对CameraLink相机图像的采集、编码和显示。实测传输帧率为60fps。


案例详细说明、源码请扫描下方二维码或点击下载链接:


http://site.tronlong.com/pfdownload


1 flexspi_read案例


1.1 案例说明

本案例主要演示ARM Cortex-A53通过FlexSPI接口读取FPGA(Spartan-6采集卡TL-HSAD-LX)发送的模拟数据,并进行校验,通过串口打印相关信息。




(1) 驱动默认配置FlexSPI为DDR模式(双边沿),配置FlexSPI的时钟源为400MHz,分频系数pre_divider和post_divider分别为2和5,此时FlexSPI的ROOT CLK时钟为400MHz/2/5 = 40MHz,DDR模式的传输时钟SCLK= ROOT SCLK/2 = 20MHz,数据位宽为8bit,即理论传输速率为40MB/s,实测速率为37.56MB/s。




(2) 驱动如配置FlexSPI为DDR模式(双边沿),配置FlexSPI的时钟源为400MHz,分频系数pre_divider和post_divider分别为1和3,此时FlexSPI的ROOT SCLK时钟为400MHz/1/3 = 133MHz,DDR模式的传输时钟SCLK = ROOT SCLK/2 = 66.5MHz,数据位宽为8bit,即理论传输速率为133MB/s,实测速率为114.89MB/s。


FPGA端:发送从0x00递增至0xFF的数据。


ARM端:读取数据并进行校验,打印误码率、读取速率和读取到的数据。



程序流程图如下:


图 2


1.2 案例测试


图 3


请按照上图进行硬件连接,并将案例bin目录下的可执行文件flexspi_read、“driver\bin\”目录下驱动文件flexspi_imx8.ko、“dts\image\”目录下的设备树文件tlimx8-evm-flexspi.dtb拷贝至评估板文件系统。采集卡TL-HSAD-LX加载或固化“data_to_flexspi\bin\”目录下的.bit或.mcs文件。在评估板文件系统flexspi_read文件所在路径下,执行如下命令查询程序参数说明。


Target# ls


Target# ./flexspi_read -h


图 4


执行如下命令将默认使用的设备树tlimx8-evm.dtb进行备份,然后把tlimx8-evm-flexspi.dtb拷贝至“/run/media/mmcblk1p1/”目录并重命名为tlimx8-evm.dtb。


Target# cp /run/media/mmcblk1p1/tlimx8-evm.dtb linux-tlimx8-evm.dtb//备份默认的tlimx8-evm.dtb,新文件名为linux-tlimx8-evm.dtb


Target# cp tlimx8-evm-flexspi.dtb /run/media/mmcblk1p1/tlimx8-evm.dtb


备注:更换设备树后,需重启评估板方可使设备树生效。


图 5

1.2.1 功能测试

执行如下命令加载FlexSPI驱动。


Target# insmod flexspi_imx8.ko


图 6


执行如下命令进行测试。


Target# ./flexspi_read -a 0x08000000 -s 4096


图 7


本次测试速率为37.56MB/s,误码率为0,与理论速率40MB/s接近。


备注:受限于测试板卡的硬件连接形式的影响,37.56MB/s是零误码率时的最高实测速率。


若读取小于或等于2048Byte的数据时,每次读完需清空FlexSPI的RX Buffer,否则下次读取的数据是缓存在Buffer中的旧数据。


Target# devmem2 0x30bb0000 w 0xFFFF7031


图 8


1.2.2 性能测试

执行如下命令卸载flexspi驱动,并重新加载驱动。同时采集卡TL-HSAD-LX重新加载或固化FPGA程序。


Target# rmmod flexspi_imx8


Target# insmod flexspi_imx8.ko pre_divider=1 post_divider=3


备注:pre_divider和post_divider为分频系数,详细说明请查阅驱动说明章节。


图 9


执行如下命令进行测试。


Target# ./flexspi_read -a 0x08000000 -s 4096


图 10


可以看到本次测试速率为114.89MB/s,与理论速率133MB/s接近。


备注:受限于测试板卡的硬件连接形式的影响,此速率下的误码率为99.8%。


1.3 案例关键代码

(1) main函数


图 11


(2) 地址映射。


图 12


(3) 读取数据。


图 13


(4) 校验数据。


图 14


(5) 打印数据。


图 15

1.4 FPGA工程关键代码

(1) 端口IO定义


flexspi_sclk和flexspi_ss0_n为输入信号,flexspi_data和flexspi_data为输出信号。


图 16


(2) 时钟输入信号flexspi_sclk设置为2倍频


图 17


(3) 数据发送


图 18


图 19


2 gst_pcie_enc案例


2.1 案例说明

本案例主要演示ARM Cortex-A53通过PCIe接口与FPGA进行通信,实现对CameraLink相机图像的采集、编码和显示。其中ARM端获取到的原始图像通过dma-buf机制,在采集、硬件编码和显示输出等功能中进行共享,可实现高效的图像数据“零拷贝”的录播方案。


FPGA端:


(1) 采集CameraLink相机图像;


(2) 通过XDMA IP实现为PCIe EP设备,RC端可通过PCIe接口访问FPGA端DDR以及对VDMA IP的寄存器进行配置。


ARM端:


(1) 作为PCIe RC设备,配置VDMA IP将图像存储到FPGA DDR指定位置、将图像从FPGA DDR通过XDMA搬运到ARM端DDR;


(2) 调用协处理器VPU进行H264硬件编码,并将编码后的数据存储到文件;


(3) 编码的同时,通过HDMI显示实时图像。


程序工作流程框图如下所示:


图 20


2.2 案例测试

请参考下图,将创龙科技的TLCamerLinkF模块连接至TLK7-EVM评估板的FMC2接口,TLK7-EVM评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口。再将TLK7-EVM评估板的PCIe插到TLIMX8-EVM评估板的PCIe插槽上,使用HDMI线缆连接TLIMX8-EVM评估板的HDMI OUT接口至HDMI显示屏。


图 21


将该案例bin目录下的驱动文件xdma-video.ko拷贝至TLIMX8-EVM评估板文件系统中,并将案例bin目录下的.bit或.bin文件加载或固化到TLK7-EVM评估板。


评估板上电,可执行lspci命令检查PCIe连接是否正常。如不能获取到如下信息,请检查硬件连接和FPGA端是否正常运行。


Target# lspci


图 22


Target# insmod xdma-video.ko debug=1


备注:“debug=1”表示打印帧率信息,可根据实际需求选择是否配置。若需修改分辨率和帧率,可执行命令“insmod xdma-video.ko width=1280 height=1024 fps=60”,具体的分辨率和帧率大小,请以相机实际可支持范围为准,分辨率参数需和相机分辨率参数匹配,帧率参数仅作用于软件上相机参数,不影响实际的相机帧率。


图 23


执行如下命令进行图像的采集、编码和显示,编码后的test.264文件将保存在当前目录下。


Target# gst-launch-1.0 -v -e v4l2src device=/dev/video1 ! "video/x-raw, format=(string)NV12, width=(int)1280, height=(int)1024" ! tee name=t ! queue ! vpuenc_h264 ! h264parse ! filesink location=test.264 t. ! queue ! waylandsink


其中"/dev/video1"为设备节点,请以实际节点为准,1280和1024为图像的宽和高。


图 24


执行成功后可观察到如下输出,串口不停打印帧率,并在HDMI显示器上观看到实时图像。


备注:帧率显示为61fps,是由于CameraLink相机输出的并不是标准的60fps图像。


图 25


图 26


按下“Ctrl C”停止录制后,将在当前目录生成test.264文件,并可观察到实际帧率为59.954fps。


图 27


执行如下命令播放编码后的视频,HDMI显示器显示对应图像。


Target# gst-play-1.0 test.264


图 28


图 29


播放结束后,将打印视频时长、帧率信息。


图 30


备注:由于码流文件中不包含播放帧率信息,因此在执行“gst-play-1.0 test.264”时未能按60fps进行播放。从串口打印信息可知,实际是以30fps进行播放,并且播放时长为录制时长的两倍。在录制时,将H264码流封装成MP4格式可解决此问题,因为封装成MP4格式时,播放帧率信息将被记录在MP4文件中。


执行如下命令,可将H264码流保存成MP4文件。


Target# gst-launch-1.0 -v -e v4l2src device=/dev/video1 ! "video/x-raw, format=(string)NV12, width=(int)1280, height=(int)1024" !  tee name=t ! queue ! vpuenc_h264 ! h264parse ! qtmux ! filesink location=test.mp4 t. ! queue ! waylandsink


图 31


图 32


注意:H264码流保存成MP4文件,程序可正常工作,录制的视频文件播放帧率正常,但系统会出现概率性的丢帧。为了避免这种情况,在实际的应用编程中,建议将MP4的保存功能另外建立一个pipeline进行,或改用其它开源MP4库进行开发。




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭