0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Zynq UltraScale+RFSoC的AXI CDMA Linux用戶空間示例

jf_pJlTbmA9 ? 來源:CSDN博主芯選 ? 作者:CSDN博主芯選 ? 2023-07-07 14:15 ? 次閱讀

以下為個(gè)人譯文,僅供個(gè)人學(xué)習(xí)記錄參考之用,如有疏漏之處,還請(qǐng)不吝賜教。

本篇博文將為您演示如何創(chuàng)建 AXI CDMA Linux 用戶空間示例應(yīng)用。示例設(shè)計(jì)將在 Zynq UltraScale+ RFSoC ZCU111 評(píng)估板上實(shí)現(xiàn)通過AXI CDMA 把數(shù)據(jù)從 PS DDR 傳輸至 AXI BRAM。

本篇博文將為您演示如何創(chuàng)建AXI CDMA Linux用戶空間示例應(yīng)用。

示例設(shè)計(jì)將在Zynq UltraScale+ RFSoC ZCU111評(píng)估板上實(shí)現(xiàn)通過AXI CDMA把數(shù)據(jù)從PS DDR傳輸至AXI BRAM。

適用平臺(tái)

Vivado和PetaLinux 2019.2。

Zynq UltraScale+ RFSoC ZCU111評(píng)估板

啟動(dòng)模式:JTAG,SD

模塊框圖

1677489944184445.png

1677489950812566.png

Vivado步驟

步驟1:基于ZCU111評(píng)估版創(chuàng)建一個(gè)工程,并根據(jù)上圖中的模塊設(shè)計(jì)完成相應(yīng)的模塊設(shè)計(jì)。

步驟2:按下列設(shè)置來配置AXI CDMA:

1677489958777733.png

步驟3:成功完成后,選擇“驗(yàn)證設(shè)計(jì)(Validate design)”以驗(yàn)證設(shè)計(jì),并檢查地址編輯器。

步驟4:創(chuàng)建整個(gè)模塊設(shè)計(jì)的頂層文件并生成比特流。

步驟5:導(dǎo)出硬件設(shè)計(jì)以獲取XSA文件。

PetaLinux步驟

以下步驟用于生成啟動(dòng)鏡像和Linux用戶空間應(yīng)用。

步驟1:

使用以下命令和隨附內(nèi)容(axicdma.c)創(chuàng)建AXI CDMA用戶空間應(yīng)用。

vim axicmda.c

步驟2:

petalinux-create -t project -n bram --template zynqMP

步驟3:

petalinux-config --v --get-hw-description=

步驟4:

在system-user.dtsi文件中添加以下更改以禁用CDMA驅(qū)動(dòng)并保留內(nèi)存。

/include/"system-conf.dtsi"
/{
#address-cells=<2>;
#size-cells=<2>;
memory{
device_type="memory";
reg=<0x0?0x0?0x0?0x80000000>,<0x0?0xA0000000?0x0?0x40000>,<0x00000008?0x00000000?0x0?0x80000000>;
};
reserved-memory{
ranges;
reserved{
reg=<0x0?0xa0000000?0x0?0x40000>;
};
};
};
&axi_bram_ctrl_1{
status="disabled";
};
&axi_cdma_0{
status="disabled";
};

步驟5:

petalinux-config -c kernel

然后,按如下方式操作:

Kernel hacking --->[ ] Filter access to /dev/mem --> Save & exit

步驟6:

petalinux-build

步驟7:

petalinux-package --boot --fsbl images/linux/zynqmp_fsbl.elf --pmufw images/linux/pmufw.elf --fpga images/linux/system.bit --u-boot images/linux/u-boot.elf --force

步驟8:

將BOOT.bin和image.ub文件與測(cè)試應(yīng)用二進(jìn)制文件一起復(fù)制到SD卡。

步驟9:

啟動(dòng)評(píng)估板,并運(yùn)行隨附的應(yīng)用(axicmda.c)。

運(yùn)行設(shè)計(jì)

要運(yùn)行設(shè)計(jì),請(qǐng)首先連接到ZCU111評(píng)估板并從SD卡啟動(dòng)鏡像,然后運(yùn)行二進(jìn)制應(yīng)用文件。

控制臺(tái)輸出

/dev/memopened.
BRAMMemorymappedataddress0x7fb5339000.
PSDDRMemorymappedataddress0x7fb5192000.
CDMAMemorymappedataddress0x7fb5336000.
Input:valueinPSDDR0:valueinBRAM1179403647
Input:valueinPSDDR1:valueinBRAM65794
Input:valueinPSDDR2:valueinBRAM0
Input:valueinPSDDR3:valueinBRAM0
Input:valueinPSDDR4:valueinBRAM11993091
Input:valueinPSDDR5:valueinBRAM1
Input:valueinPSDDR6:valueinBRAM13128
Input:valueinPSDDR7:valueinBRAM0
Input:valueinPSDDR8:valueinBRAM64
Input:valueinPSDDR9:valueinBRAM0
Input:valueinPSDDR10:valueinBRAM44872
Input:valueinPSDDR11:valueinBRAM0
Input:valueinPSDDR12:valueinBRAM0
Input:valueinPSDDR13:valueinBRAM3670080
Input:valueinPSDDR14:valueinBRAM4194313
Input:valueinPSDDR15:valueinBRAM1638426
Input:valueinPSDDR16:valueinBRAM6
Input:valueinPSDDR17:valueinBRAM4
Input:valueinPSDDR18:valueinBRAM64
Input:valueinPSDDR19:valueinBRAM0
Input:valueinPSDDR20:valueinBRAM64
Input:valueinPSDDR21:valueinBRAM0
Input:valueinPSDDR22:valueinBRAM64
Input:valueinPSDDR23:valueinBRAM0
Input:valueinPSDDR24:valueinBRAM504
Input:valueinPSDDR25:valueinBRAM0
Input:valueinPSDDR26:valueinBRAM504
Input:valueinPSDDR27:valueinBRAM0
Input:valueinPSDDR28:valueinBRAM8
Input:valueinPSDDR29:valueinBRAM0
Input:valueinPSDDR30:valueinBRAM3
Input:valueinPSDDR31:valueinBRAM4
Input:valueinPSDDR32:valueinBRAM568
Input:valueinPSDDR33:valueinBRAM0
Input:valueinPSDDR34:valueinBRAM568
Input:valueinPSDDR35:valueinBRAM0
Input:valueinPSDDR36:valueinBRAM568
Input:valueinPSDDR37:valueinBRAM0
Input:valueinPSDDR38:valueinBRAM27
Input:valueinPSDDR39:valueinBRAM0
Input:valueinPSDDR40:valueinBRAM27
Input:valueinPSDDR41:valueinBRAM0
Input:valueinPSDDR42:valueinBRAM1
Input:valueinPSDDR43:valueinBRAM0
Input:valueinPSDDR44:valueinBRAM1
Input:valueinPSDDR45:valueinBRAM5
Input:valueinPSDDR46:valueinBRAM0
Input:valueinPSDDR47:valueinBRAM0
Input:valueinPSDDR48:valueinBRAM0
Input:valueinPSDDR49:valueinBRAM0
Input:valueinPSDDR50:valueinBRAM0
Input:valueinPSDDR51:valueinBRAM0
Input:valueinPSDDR52:valueinBRAM37116
Input:valueinPSDDR53:valueinBRAM0
Input:valueinPSDDR54:valueinBRAM37116
Input:valueinPSDDR55:valueinBRAM0
Input:valueinPSDDR56:valueinBRAM65536
Input:valueinPSDDR57:valueinBRAM0
Input:valueinPSDDR58:valueinBRAM1
Input:valueinPSDDR59:valueinBRAM6
Input:valueinPSDDR60:valueinBRAM39544
Input:valueinPSDDR61:valueinBRAM0
Input:valueinPSDDR62:valueinBRAM105080
Input:valueinPSDDR63:valueinBRAM0
Input:valueinPSDDR64:valueinBRAM105080
Input:valueinPSDDR65:valueinBRAM0
Input:valueinPSDDR66:valueinBRAM5072
Input:valueinPSDDR67:valueinBRAM0
Input:valueinPSDDR68:valueinBRAM6168
Input:valueinPSDDR69:valueinBRAM0
Input:valueinPSDDR70:valueinBRAM65536
Input:valueinPSDDR71:valueinBRAM0
Input:valueinPSDDR72:valueinBRAM2
Input:valueinPSDDR73:valueinBRAM6
Input:valueinPSDDR74:valueinBRAM39560
Input:valueinPSDDR75:valueinBRAM0
Input:valueinPSDDR76:valueinBRAM105096
Input:valueinPSDDR77:valueinBRAM0
Input:valueinPSDDR78:valueinBRAM105096
Input:valueinPSDDR79:valueinBRAM0
Input:valueinPSDDR80:valueinBRAM512
Input:valueinPSDDR81:valueinBRAM0
Input:valueinPSDDR82:valueinBRAM512
Input:valueinPSDDR83:valueinBRAM0
Input:valueinPSDDR84:valueinBRAM8
Input:valueinPSDDR85:valueinBRAM0
Input:valueinPSDDR86:valueinBRAM4
Input:valueinPSDDR87:valueinBRAM4
Input:valueinPSDDR88:valueinBRAM596
Input:valueinPSDDR89:valueinBRAM0
Input:valueinPSDDR90:valueinBRAM596
Input:valueinPSDDR91:valueinBRAM0
Input:valueinPSDDR92:valueinBRAM596
Input:valueinPSDDR93:valueinBRAM0
Input:valueinPSDDR94:valueinBRAM68
Input:valueinPSDDR95:valueinBRAM0
Input:valueinPSDDR96:valueinBRAM68
Input:valueinPSDDR97:valueinBRAM0
Input:valueinPSDDR98:valueinBRAM4
Input:valueinPSDDR99:valueinBRAM0
controlreg:0x00000000
statusreg:0x00000002
allinterruptsmasked...
controlreg:0x00005000
statusreg:0x00000002
Writingsourceaddress
Sourceaddrreg:0x04000000
statusreg:0x00000002
Writingdestinationaddress
Destaddrreg:0xa0000000
statusreg:0x00000002
Writingtransferlength...
DMAtransferiscompleted
lengthreg:0x00000190
statusreg:0x00001002
Output:valueinPSDDR0:valueinBRAM0
Output:valueinPSDDR1:valueinBRAM1
Output:valueinPSDDR2:valueinBRAM2
Output:valueinPSDDR3:valueinBRAM3
Output:valueinPSDDR4:valueinBRAM4
Output:valueinPSDDR5:valueinBRAM5
Output:valueinPSDDR6:valueinBRAM6
Output:valueinPSDDR7:valueinBRAM7
Output:valueinPSDDR8:valueinBRAM8
Output:valueinPSDDR9:valueinBRAM9
Output:valueinPSDDR10:valueinBRAM10
Output:valueinPSDDR11:valueinBRAM11
Output:valueinPSDDR12:valueinBRAM12
Output:valueinPSDDR13:valueinBRAM13
Output:valueinPSDDR14:valueinBRAM14
Output:valueinPSDDR15:valueinBRAM15
Output:valueinPSDDR16:valueinBRAM16
Output:valueinPSDDR17:valueinBRAM17
Output:valueinPSDDR18:valueinBRAM18
Output:valueinPSDDR19:valueinBRAM19
Output:valueinPSDDR20:valueinBRAM20
Output:valueinPSDDR21:valueinBRAM21
Output:valueinPSDDR22:valueinBRAM22
Output:valueinPSDDR23:valueinBRAM23
Output:valueinPSDDR24:valueinBRAM24
Output:valueinPSDDR25:valueinBRAM25
Output:valueinPSDDR26:valueinBRAM26
Output:valueinPSDDR27:valueinBRAM27
Output:valueinPSDDR28:valueinBRAM28
Output:valueinPSDDR29:valueinBRAM29
Output:valueinPSDDR30:valueinBRAM30
Output:valueinPSDDR31:valueinBRAM31
Output:valueinPSDDR32:valueinBRAM32
Output:valueinPSDDR33:valueinBRAM33
Output:valueinPSDDR34:valueinBRAM34
Output:valueinPSDDR35:valueinBRAM35
Output:valueinPSDDR36:valueinBRAM36
Output:valueinPSDDR37:valueinBRAM37
Output:valueinPSDDR38:valueinBRAM38
Output:valueinPSDDR39:valueinBRAM39
Output:valueinPSDDR40:valueinBRAM40
Output:valueinPSDDR41:valueinBRAM41
Output:valueinPSDDR42:valueinBRAM42
Output:valueinPSDDR43:valueinBRAM43
Output:valueinPSDDR44:valueinBRAM44
Output:valueinPSDDR45:valueinBRAM45
Output:valueinPSDDR46:valueinBRAM46
Output:valueinPSDDR47:valueinBRAM47
Output:valueinPSDDR48:valueinBRAM48
Output:valueinPSDDR49:valueinBRAM49
Output:valueinPSDDR50:valueinBRAM50
Output:valueinPSDDR51:valueinBRAM51
Output:valueinPSDDR52:valueinBRAM52
Output:valueinPSDDR53:valueinBRAM53
Output:valueinPSDDR54:valueinBRAM54
Output:valueinPSDDR55:valueinBRAM55
Output:valueinPSDDR56:valueinBRAM56
Output:valueinPSDDR57:valueinBRAM57
Output:valueinPSDDR58:valueinBRAM58
Output:valueinPSDDR59:valueinBRAM59
Output:valueinPSDDR60:valueinBRAM60
Output:valueinPSDDR61:valueinBRAM61
Output:valueinPSDDR62:valueinBRAM62
Output:valueinPSDDR63:valueinBRAM63
Output:valueinPSDDR64:valueinBRAM64
Output:valueinPSDDR65:valueinBRAM65
Output:valueinPSDDR66:valueinBRAM66
Output:valueinPSDDR67:valueinBRAM67
Output:valueinPSDDR68:valueinBRAM68
Output:valueinPSDDR69:valueinBRAM69
Output:valueinPSDDR70:valueinBRAM70
Output:valueinPSDDR71:valueinBRAM71
Output:valueinPSDDR72:valueinBRAM72
Output:valueinPSDDR73:valueinBRAM73
Output:valueinPSDDR74:valueinBRAM74
Output:valueinPSDDR75:valueinBRAM75
Output:valueinPSDDR76:valueinBRAM76
Output:valueinPSDDR77:valueinBRAM77
Output:valueinPSDDR78:valueinBRAM78
Output:valueinPSDDR79:valueinBRAM79
Output:valueinPSDDR80:valueinBRAM80
Output:valueinPSDDR81:valueinBRAM81
Output:valueinPSDDR82:valueinBRAM82
Output:valueinPSDDR83:valueinBRAM83
Output:valueinPSDDR84:valueinBRAM84
Output:valueinPSDDR85:valueinBRAM85
Output:valueinPSDDR86:valueinBRAM86
Output:valueinPSDDR87:valueinBRAM87
Output:valueinPSDDR88:valueinBRAM88
Output:valueinPSDDR89:valueinBRAM89
Output:valueinPSDDR90:valueinBRAM90
Output:valueinPSDDR91:valueinBRAM91
Output:valueinPSDDR92:valueinBRAM92
Output:valueinPSDDR93:valueinBRAM93
Output:valueinPSDDR94:valueinBRAM94
Output:valueinPSDDR95:valueinBRAM95
Output:valueinPSDDR96:valueinBRAM96
Output:valueinPSDDR97:valueinBRAM97
Output:valueinPSDDR98:valueinBRAM98
Output:valueinPSDDR99:valueinBRAM99
TransmittedDatasuccessfully
root@cdma_proj:~#

輸出截屏

1677489991631637.png

本文轉(zhuǎn)載自:芯選的CSDN博客

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209538
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    609

    瀏覽量

    47184
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16631
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Zynq UltraScale + MPSoC USB 3.0 CDC器件類設(shè)計(jì)

    COM或UART通信等應(yīng)用中使用它。此設(shè)計(jì)包括:CDC設(shè)計(jì)示例框圖和概述如何為CDC類參考配置所有Zynq?smatrascale+?MPSoC Linux內(nèi)核和相關(guān)文件設(shè)置為使用Windows以及
    發(fā)表于 01-03 09:59

    怎么使用AXI CDMA從OCM/DDR寫入BRAM

    可以從Zynq上運(yùn)行的Linux控制的額外IP。我要做的就是將一些配置數(shù)據(jù)寫入PL中的BRAM。要做到這一點(diǎn),根據(jù)我在其他地方得到的建議,我提出了一個(gè)axi_cdma。所以CDMA有一
    發(fā)表于 04-19 07:50

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

    Xilinx DDR 控制器?! DR PHY 與電路板調(diào)試:  Zynq UltraScale+ MPSoC VCU DDR 控制器采用 MIG PHY?! ∵@意味著您可以使用標(biāo)準(zhǔn) MIG 示例設(shè)計(jì)來驗(yàn)證您
    發(fā)表于 01-07 16:02

    Xilinx ZYNQ UltraScale+RFSoCZU27DR 開源RFSOC算法驗(yàn)證評(píng)估板

    6.554 GSPS DAC 端口提供支持。 RF發(fā)送和RF接收端口通過高性能SMA側(cè)插RF連接器對(duì)外連接,以ZYNQ UltraScale RFSOC作為核心處理系統(tǒng),具有豐富的外設(shè)接口,用于匹配信號(hào)
    發(fā)表于 08-25 15:11

    zynq linux AXI DMA傳輸步驟教程詳解

    本文主要介紹zynq linux AXI DMA傳輸步驟教程,具體的跟隨小編一起來了解一下。
    的頭像 發(fā)表于 07-08 05:46 ?3w次閱讀
    <b class='flag-5'>zynq</b> <b class='flag-5'>linux</b> <b class='flag-5'>AXI</b> DMA傳輸步驟教程詳解

    Xilinx基于ARM的Zynq-7000和Zynq UltraScale+ MPSoC及RFSoC器件是否存在安全漏洞

    本文試圖搞清楚在 Xilinx 基于 ARM 的 Zynq-7000、Zynq UltraScale+ MPSoC 和 Zynq UltraScal
    發(fā)表于 06-28 15:53 ?2674次閱讀

    賽靈思推出同類首創(chuàng)的Zynq UltraScale+RFSoC ZCU111評(píng)估套件

    賽靈思推出了新款 Zynq UltraScale+ RFSoC ZCU111 評(píng)估套件,用于支持 RF 級(jí)模擬設(shè)計(jì)評(píng)估,便于廣大用戶親身嘗試這款顛覆性技術(shù).
    的頭像 發(fā)表于 08-26 11:08 ?8695次閱讀

    Zynq UltraScale+ RFSoC的功能特點(diǎn)與應(yīng)用

    在本演示視頻中,Xilinx討論了其Zynq?UltraScale+?RFSoC系列的產(chǎn)品詳細(xì)信息。
    的頭像 發(fā)表于 11-21 06:07 ?6377次閱讀

    Zynq UltraScale Rfsoc數(shù)據(jù)手冊(cè)的詳細(xì)資料概述

    Zynq UltraScale+?RFSOC系列將多波段、多模式蜂窩無(wú)線電和電纜基礎(chǔ)設(shè)施(docsis)的關(guān)鍵子系統(tǒng)集成到SOC平臺(tái)中,該平臺(tái)包含功能豐富的64位四核ARM?Cortex?-A53和基于雙核ARM Cortex-
    發(fā)表于 02-22 11:47 ?30次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b> <b class='flag-5'>Rfsoc</b>數(shù)據(jù)手冊(cè)的詳細(xì)資料概述

    支持6GHz以下頻段的Zynq UltraScale+RFSoC

    Zynq UltraScale+ RFSoC將業(yè)界唯一單芯片自適應(yīng)射頻平臺(tái)擴(kuò)展至全面支持 6GHz 以下頻段,實(shí)現(xiàn)全面射頻-模擬信號(hào)鏈突破性集成、軟決策前向糾錯(cuò) (FEC)以及適用于單芯片射頻的完整的SoC,廣泛的器件組合提供不
    發(fā)表于 06-01 10:32 ?1575次閱讀

    上新:Zynq UltraScale+ RFSoC ZCU111 評(píng)估套件

    上新:Zynq UltraScale+ RFSoC ZCU111 評(píng)估套件
    的頭像 發(fā)表于 07-02 12:04 ?4170次閱讀

    賽靈思關(guān)于Zynq UltraScale+ RFSoC系列產(chǎn)品介紹

    Zynq UltraScale+ RFSoC 在一款 SoC 架構(gòu)中集成數(shù)千兆采樣 RF 數(shù)據(jù)轉(zhuǎn)換器和軟判決前向糾錯(cuò) (SD-FEC)。
    的頭像 發(fā)表于 07-26 15:43 ?5567次閱讀
    賽靈思關(guān)于<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b>+ <b class='flag-5'>RFSoC</b>系列產(chǎn)品介紹

    如何創(chuàng)建AXI CDMA Linux用戶空間示例應(yīng)用

    本篇博文將為您演示如何創(chuàng)建 AXI CDMA Linux 用戶空間示例應(yīng)用。
    的頭像 發(fā)表于 09-28 15:31 ?2526次閱讀
    如何創(chuàng)建<b class='flag-5'>AXI</b> <b class='flag-5'>CDMA</b> <b class='flag-5'>Linux</b><b class='flag-5'>用戶</b><b class='flag-5'>空間</b><b class='flag-5'>示例</b>應(yīng)用

    Zynq UltraScale+ RFSoC器件介紹

    介紹一下Xilinx公司的新一代Zynq UltraScale+ RFSoC器件,可用于LTE、5G、SDR、衛(wèi)星通信等無(wú)線平臺(tái)。
    的頭像 發(fā)表于 05-22 10:38 ?5977次閱讀
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b>+ <b class='flag-5'>RFSoC</b>器件介紹

    Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b>+ MPSoC的隔離設(shè)計(jì)<b class='flag-5'>示例</b>