精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【含案例源碼】IMX8基于FlexSPI、PCIe與FPGA的高速通信開發詳解!

Tronlong創龍科技 ? 2021-09-02 14:33 ? 次閱讀

前 言

本文主要介紹i.MX 8M Mini基于FlexSPI、PCIe與FPGA的高速通信案例。

本文檔適用開發環境:

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)

案例一:主要演示ARM Cortex-A53通過FlexSPI接口讀取FPGA(Spartan-6采集卡TL-HSAD-LX)發送的模擬數據,并進行校驗,通過串口打印相關信息。實測速率為114.89MB/s。

案例二:主要演示ARM Cortex-A53通過PCIe接口與FPGA進行通信,實現對CameraLink相機圖像的采集、編碼和顯示。實測傳輸幀率為60fps。

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端:讀取數據并進行校驗,打印誤碼率、讀取速率和讀取到的數據。

程序流程圖如下:

4025651e7ef74aa38dbf445e48b8a7b4~tplv-tt-shrink:640:0.jpg

圖 2

1.2 案例測試

2f0a8d063cb84dcfbb388e762898938f~tplv-tt-shrink:640:0.jpg

圖 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

9614baebb1a3482484ff4970246d4e40~tplv-tt-shrink:640:0.jpg

圖 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

備注:更換設備樹后,需重啟評估板方可使設備樹生效。

3ebc3cf38b7b405fbae5067a079d6ff3~tplv-tt-shrink:640:0.jpg

圖 5

1.2.1 功能測試

執行如下命令加載FlexSPI驅動。

Target# insmod flexspi_imx8.ko

685ee452497d4785a44d726d49fdb71e~tplv-tt-shrink:640:0.jpg

圖 6

執行如下命令進行測試。

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

691d8efd38824b3baba6c375506a2d4f~tplv-tt-shrink:640:0.jpg

圖 7

本次測試速率為37.56MB/s,誤碼率為0,與理論速率40MB/s接近。

備注:受限于測試板卡的硬件連接形式的影響,37.56MB/s是零誤碼率時的最高實測速率。

若讀取小于或等于2048Byte的數據時,每次讀完需清空FlexSPI的RX Buffer,否則下次讀取的數據是緩存在Buffer中的舊數據。

Target# devmem2 0x30bb0000 w 0xFFFF7031

bf7e990308474078aa5cc6a336592089~tplv-tt-shrink:640:0.jpg

圖 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為分頻系數,詳細說明請查閱驅動說明章節。

f6f2185b17e14d9a8c8e229f1d81e277~tplv-tt-shrink:640:0.jpg

圖 9

執行如下命令進行測試。

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

45fbe790f8e84ad4820d1d0e918be8d4~tplv-tt-shrink:640:0.jpg

圖 10

可以看到本次測試速率為114.89MB/s,與理論速率133MB/s接近。

備注:受限于測試板卡的硬件連接形式的影響,此速率下的誤碼率為99.8%。

1.3 案例關鍵代碼

(1) main函數

17d7f8c4ec384bb7b21e059291877954~tplv-tt-shrink:640:0.jpg

圖 11

(2) 地址映射。

84abcee8ab8944eaa423359af176e02b~tplv-tt-shrink:640:0.jpg

圖 12

(3) 讀取數據。

c9d59ad447414899b1788219f3ddf0bf~tplv-tt-shrink:640:0.jpg

圖 13

(4) 校驗數據。

5437b786ddd1442c845ee9232f582152~tplv-tt-shrink:640:0.jpg

圖 14

(5) 打印數據。

3e6433f99d9246b9b6989bbe4ae3b1ea~tplv-tt-shrink:640:0.jpg

圖 15

1.4 FPGA工程關鍵代碼

(1) 端口IO定義

flexspi_sclk和flexspi_ss0_n為輸入信號,flexspi_data和flexspi_data為輸出信號。

82772c16f9a340689e59bfcb733dfef4~tplv-tt-shrink:640:0.jpg

圖 16

(2) 時鐘輸入信號flexspi_sclk設置為2倍頻

7488544a2bbc499886b7a1e419338293~tplv-tt-shrink:640:0.jpg

圖 17

(3) 數據發送

47f7f89710c04ac7b07dd5b87dfb6934~tplv-tt-shrink:640:0.jpg

圖 18

e4693d0ac32b495ea2660251408fa72e~tplv-tt-shrink:640:0.jpg

圖 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顯示實時圖像。

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

4545b5a9ed3e42b6a876b25ca85f3226~tplv-tt-shrink:640:0.jpg

圖 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顯示屏。

97696026b59843818e8de4970b13b7aa~tplv-tt-shrink:640:0.jpg

圖 21

將該案例bin目錄下的驅動文件xdma-video.ko拷貝至TLIMX8-EVM評估板文件系統中,并將案例bin目錄下的.bit或.bin文件加載或固化到TLK7-EVM評估板。

評估板上電,可執行lspci命令檢查PCIe連接是否正常。如不能獲取到如下信息,請檢查硬件連接和FPGA端是否正常運行。

Target# lspci

d1736435f45445268926196d450191c7~tplv-tt-shrink:640:0.jpg

圖 22

Target# insmod xdma-video.ko debug=1

備注:“debug=1”表示打印幀率信息,可根據實際需求選擇是否配置。若需修改分辨率和幀率,可執行命令“insmod xdma-video.ko width=1280 height=1024 fps=60”,具體的分辨率和幀率大小,請以相機實際可支持范圍為準,分辨率參數需和相機分辨率參數匹配,幀率參數僅作用于軟件上相機參數,不影響實際的相機幀率。

366b507912404c949612dfcf07aa8b7e~tplv-tt-shrink:640:0.jpg

圖 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為圖像的寬和高。

005bd421650547549ffd686b0b152647~tplv-tt-shrink:640:0.jpg

圖 24

執行成功后可觀察到如下輸出,串口不停打印幀率,并在HDMI顯示器上觀看到實時圖像。

備注:幀率顯示為61fps,是由于CameraLink相機輸出的并不是標準的60fps圖像。

5288cc2e7bd641c482a7401b15cf6e68~tplv-tt-shrink:640:0.jpg

圖 25

2faa23eb4e264b1bb99f8abef5c24213~tplv-tt-shrink:640:0.jpg

圖 26

按下“Ctrl+C”停止錄制后,將在當前目錄生成test.264文件,并可觀察到實際幀率為59.954fps。

b367da73bedc4abd97fc4fe75615226e~tplv-tt-shrink:640:0.jpg

圖 27

執行如下命令播放編碼后的視頻,HDMI顯示器顯示對應圖像。

Target# gst-play-1.0 test.264

121debb7678c4b85a032d1c39758d184~tplv-tt-shrink:640:0.jpg

圖 28

4dacffe0c5f24696be7b08789055f7b2~tplv-tt-shrink:640:0.jpg

圖 29

播放結束后,將打印視頻時長、幀率信息。

581f5d7cae264ee485ae483be28753f9~tplv-tt-shrink:640:0.jpg

圖 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

e1ffeca30a93417bb37f27a7d7fb963a~tplv-tt-shrink:640:0.jpg

圖 31

68a32b7c737a4bc4b5986c855122760f~tplv-tt-shrink:640:0.jpg

圖 32

注意:H264碼流保存成MP4文件,程序可正常工作,錄制的視頻文件播放幀率正常,但系統會出現概率性的丟幀。為了避免這種情況,在實際的應用編程中,建議將MP4的保存功能另外建立一個pipeline進行,或改用其它開源MP4庫進行開發。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    552

    文章

    7962

    瀏覽量

    348260
  • FPGA
    +關注

    關注

    1626

    文章

    21666

    瀏覽量

    601830
  • 嵌入式
    +關注

    關注

    5068

    文章

    19017

    瀏覽量

    303253
  • Linux
    +關注

    關注

    87

    文章

    11227

    瀏覽量

    208924
  • FPGA開發板
    +關注

    關注

    10

    文章

    122

    瀏覽量

    31485
收藏 人收藏

    評論

    相關推薦

    索尼_imx678_19DV500驅動源碼

    hi3519dv500_IMX678驅動源碼
    發表于 11-01 10:36 ?0次下載

    盤古50K開發

    收發接口用于圖像驗證及處理;預留的光纖接口、10/100/1000M 以太網接口,PCIE 接口,方便各類高速通信系統驗證;預留一個 40pin 的 IO 擴展連接器,方便用戶在開發
    發表于 10-28 17:34

    LwIP協議棧源碼詳解—TCP/IP協議的實現

    電子發燒友網站提供《LwIP協議棧源碼詳解—TCP/IP協議的實現.pdf》資料免費下載
    發表于 07-03 11:22 ?3次下載

    FPGAPCIE接口應用需要注意哪些問題

    和帶寬。 時鐘速度和同步 : FPGA的時鐘管理是實現高性能PCIe設計的關鍵。如果時鐘頻率設置不當或時鐘源不穩定,可能會導致數據丟失和性能下降。 信號完整性 : 高速信號在FPGA
    發表于 05-27 16:17

    FPGA高速接口應用注意事項

    等問題的影響。 接口標準化與兼容性 : FPGA設計的高速接口需要遵循行業標準,如PCIe、USB、SATA等,以確保與不同設備的兼容性。 對于不同的高速接口設計,如
    發表于 05-27 16:02

    精選推薦!紫光盤古系列FPGA開發板信息匯總

    接口,PCIE接口,方便各類高速通信系統驗證;預留一個40pin的10擴展連接器,方便用戶在開發平臺基礎驗證模塊電路功能。 紫光盤古系列:盤古50Pro
    發表于 04-11 11:57

    高速ADDA模塊開箱,FPGA專用,高速信號輸出,數模信號轉換

    高速ADDA模塊開箱,FPGA專用,高速信號輸出,數模信號轉換,8Bit高速低功耗DA轉換,DA速率高達125MSPS,10BitAD轉換,
    發表于 03-13 18:25

    高速ADDA模塊環路波形展示,FPGA專用

    高速ADDA模塊環路波形展示,FPGA專用,高速信號輸出,數模信號轉換,8Bit高速低功耗DA轉換,DA速率高達125MSPS,10BitA
    發表于 03-13 18:21

    高速ADDA模塊正弦波波形展示,FPGA專用

    高速ADDA模塊正弦波波形展示,FPGA專用,高速信號輸出,數模信號轉換,8Bit高速低功耗DA轉換,DA速率高達125MSPS,10Bit
    發表于 03-13 18:17

    【正運動】高速高精,超高實時性的PCIe EtherCAT實時運動控制卡 | PCIE464

    ,減少了數據通信的擁堵和沖突,每個PCIE464控制卡擁有獨立的的通信通道,可以直接與CPU進行數據交換,無需等待其他設備釋放總線資源,從而實現更高的數據傳輸速率。特別適用于高速數據采
    發表于 01-24 09:48

    高速視頻采集卡設計方案:620-基于PCIe高速視頻采集卡

    實驗室數據采集 , FPGA邏輯視頻采集 , 高速視頻采集卡 , PCIe視頻采集卡 , 視頻程序開發
    的頭像 發表于 01-05 09:44 ?784次閱讀
    <b class='flag-5'>高速</b>視頻采集卡設計方案:620-基于<b class='flag-5'>PCIe</b>的<b class='flag-5'>高速</b>視頻采集卡

    ELF 1技術貼|在NXP源碼基礎上適配ELF 1開發板的LED功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估板的Linux內核源碼(特定版本:Linux-imx_4.1.15)基礎上進行的。主要目標是調整功能接口引腳配置,以適應ELF1開發
    的頭像 發表于 12-29 10:04 ?809次閱讀
    ELF 1技術貼|在NXP<b class='flag-5'>源碼</b>基礎上適配ELF 1<b class='flag-5'>開發</b>板的LED功能

    AD采集卡設計原理圖:630-基于PCIe高速模擬AD采集卡

    一、產品概述 基于PCIe的一款分布式高速數據采集系統,實現多路AD的數據采集,并通過PCIe傳輸到存儲計算服務器,實現信號的分析、存儲。 產品固化FPGA邏輯,適配2路1Gsps
    發表于 12-11 11:36

    fpga高速接口有哪些

    應用領域,例如通信、嵌入式系統以及科學研究等等。 一個FPGA芯片通常具有許多不同類型的接口,以滿足不同的需求。在這篇文章中,我們將討論幾個常見的高速接口類型,包括PCIe、DDR、G
    的頭像 發表于 12-07 17:27 ?3037次閱讀

    基于iMX8處理器的SGTL5000音頻接口設計

    iMX8 處理器具有多路 SAI 通道,SAI1 已經被模塊片上的 SGTL5000 使用,SAI0 通道引出到模塊金手指上,并且是兼容 Apalis 標準數字音頻接口,該通道在基于其他 CPU 的 Apalis 模塊也可以直接使用。因此,我們選擇 SAI0 擴展外部 SGTL5000。
    發表于 12-01 14:38 ?445次閱讀
    基于<b class='flag-5'>iMX8</b>處理器的SGTL5000音頻接口設計