測試數(shù)據(jù)匯總 表 1 PCIe總線介紹 PCIe,即PCI-Express(peripheral component interconnect express)是一種高速串行計算機擴展總線標(biāo)準(zhǔn)。主要用于擴充計算機系統(tǒng)總線數(shù)據(jù)吞吐量以及提高設(shè)備通信速度。 圖 1 DMA技術(shù)介紹 DMA(Direct Memory Access,直接內(nèi)存訪問)是一種讓硬件外設(shè)直接與存儲器進行數(shù)據(jù)交換的技術(shù),無需CPU參與數(shù)據(jù)傳輸過程。 使用非DMA方式進行數(shù)據(jù)傳輸時,外設(shè)與內(nèi)存之間的數(shù)據(jù)搬運需要依靠CPU來完成。這意味著每次數(shù)據(jù)傳輸都需要CPU的介入,導(dǎo)致CPU資源占用較高,并且數(shù)據(jù)傳輸速度相對較低。 使用DMA方式進行數(shù)據(jù)傳輸時,外設(shè)可以直接與內(nèi)存進行數(shù)據(jù)交換。減少了CPU的介入和中斷處理,數(shù)據(jù)傳輸過程更加流暢和高效。 圖 2 RK3568J + FPGA典型應(yīng)用場景 圖 3 基于RK3568J + FPGA的PCIe通信案例 本文主要介紹基于RK3568J + FPGA的PCIe通信案例,適用開發(fā)環(huán)境如下: Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit Linux開發(fā)環(huán)境:VMware15.5.5、Ubuntu18.04.4 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-4.19.232、Linux-RT-4.19.232 LinuxSDK:LinuxSDK-[版本號](基于rk356x_linux_release_v1.3.1_20221120) 硬件平臺:創(chuàng)龍科技TL3568F-EVM工業(yè)評估板 (基于瑞芯微RK3568J + 紫光同創(chuàng)Logos-2) 為了簡化描述,本文僅摘錄部分方案功能描述與測試結(jié)果,詳細(xì)產(chǎn)品資料可以通過公眾號(Tronlong創(chuàng)龍科技)下載。 案例說明 ARM端基于PCIe總線對FPGA DRAM進行讀寫測試。應(yīng)用程序通過ioctl函數(shù)發(fā)送命令開啟DMA傳輸數(shù)據(jù)后,等待驅(qū)動上報input事件;當(dāng)應(yīng)用層接收到input事件,說明DMA傳輸數(shù)據(jù)完成。 程序流程如下圖所示。 圖 4 (1)ARM端程序原理說明如下:a)采用DMA方式; b)將數(shù)據(jù)寫至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間(位于DDR); c)配置DMA,如源地址、目標(biāo)地址、傳輸?shù)臄?shù)據(jù)大小等; d)寫操作:通過ioctl函數(shù)啟動DMA,通過PCIe總線將數(shù)據(jù)搬運至FPGA DRAM; e)程序接收驅(qū)動上報input事件后,將通過ioctl函數(shù)獲取DMA搬運數(shù)據(jù)耗時,并計算DMA傳輸速率(即寫速率); f)讀操作:通過ioctl函數(shù)啟動DMA,通過PCIe總線將FPGA DRAM中的數(shù)據(jù)搬運至dma_memcpy驅(qū)動申請的連續(xù)內(nèi)存空間(位于DDR); g)程序接收驅(qū)動上報input事件后,將數(shù)據(jù)從內(nèi)核空間讀取至用戶空間,然后校驗數(shù)據(jù),同時通過ioctl函數(shù)獲取DMA搬運數(shù)據(jù)耗時,并計算DMA傳輸速率(即讀速率)。 (2) FPGA端程序原理說明如下: a)實現(xiàn)PCIe Endpoint功能; a)處理PCIe RC端發(fā)起的PCIe BAR0空間讀寫事務(wù); b)將PCIe BAR0讀寫數(shù)據(jù)緩存至FPGA DRAM中。 案例演示 評估板上電啟動后,進入評估板文件系統(tǒng)執(zhí)行如下命令,將隨機數(shù)據(jù)先寫入FPGA DRAM,再從FPGA DRAM讀出。測試完成后,程序?qū)蛴∽罱K測試結(jié)果,包含讀寫平均傳輸耗時、讀寫平均傳輸速率、讀寫錯誤統(tǒng)計等信息。 Target#./dma_memcpy_demo -a 0xf0200000 -s 65536 -c 100 -d /dev/input/event6 圖 5 表 2 測試結(jié)果說明 |