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

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

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

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

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

Hx ? 作者:工程師陳翠 ? 2018-07-08 05:46 ? 次閱讀

使用的工具為vivado2016.4,sdk也是2016.4.

準(zhǔn)備工作:

首先下載如下的目標(biāo)文件:

1.下載xilinx官方的bootloader文件

$ git clone https://github.com/Xilinx/u-boot-xlnx.git boot_loader-generator

2.下載xilinx device tree生成工具

git clone https://github.com/Xilinx/device-tree-xlnx.git device_tree-generator

3.下載dtc編譯工具

git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git dtc

4.下載linux kernel

git clone https://github.com/Xilinx/linux-xlnx.git linux_kernel-sources

5.下載root file system

$ git clone git://git.buildroot.net/buildroot file_system

6.拷貝用戶空間AXIDMA測(cè)試程序

git clone https://github.com/bperez77/xilinx_axidma

PL端

1.創(chuàng)建PL端工程

這里給一張圖,按圖在vivado里設(shè)置該工程,(我用的是zedboard)

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

2.創(chuàng)建設(shè)備樹(shù)

a)在生成bit文件并export后的vivado工程中,選擇file--》launch sdk---》點(diǎn)擊ok

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

b)在菜單欄中選擇Xilinx Tools --》 Repositories

c)在彈窗中選擇New,并添加在第一小節(jié)中下載的device tree,如下圖所示。

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

d)接下來(lái)創(chuàng)建BSP

選擇File--》New--》Board Support Package,在Board Support Package框中選擇 device tree,然后點(diǎn)擊Finish。在跳出的窗口中選擇bootargs,并填入如下:

console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 earlyprintk rootwait

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

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

完成后會(huì)多出如下內(nèi)容:

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

生成的設(shè)備樹(shù)位于axidma_user/axidma_user.sdk/device_tree_bsp_0:

其中pl.dtsi是PL側(cè)設(shè)備樹(shù)信息,正確的工程生成的設(shè)備樹(shù)如下:

/*

* CAUTION: This file is automatically generated by Xilinx.

* Version:

* Today is: Sun Apr 2 18:20:15 2017

*/

/ {

amba_pl: amba_pl {

#address-cells = 《1》;

#size-cells = 《1》;

compatible = “simple-bus”;

ranges ;

axi_dma_0: dma@40400000 {

#dma-cells = 《1》;

clock-names = “s_axi_lite_aclk”, “m_axi_sg_aclk”, “m_axi_mm2s_aclk”, “m_axi_s2mm_aclk”;

clocks = 《&clkc 15》, 《&clkc 15》, 《&clkc 15》, 《&clkc 15》;

compatible = “xlnx,axi-dma-1.00.a”;

interrupt-parent = 《&intc》;

interrupts = 《0 29 4 0 30 4》;

reg = 《0x40400000 0x10000》;

xlnx,addrwidth = 《0x20》;

dma-channel@40400000 {

compatible = “xlnx,axi-dma-mm2s-channel”;

dma-channels = 《0x1》;

interrupts = 《0 29 4》;

xlnx,datawidth = 《0x20》;

xlnx,device-id = 《0x0》;

};

dma-channel@40400030 {

compatible = “xlnx,axi-dma-s2mm-channel”;

dma-channels = 《0x1》;

interrupts = 《0 30 4》;

xlnx,datawidth = 《0x20》;

xlnx,device-id = 《0x0》;

};

};

axi_gpio_0: gpio@41200000 {

#gpio-cells = 《2》;

compatible = “xlnx,xps-gpio-1.00.a”;

gpio-controller ;

reg = 《0x41200000 0x10000》;

xlnx,all-inputs = 《0x0》;

xlnx,all-inputs-2 = 《0x0》;

xlnx,all-outputs = 《0x1》;

xlnx,all-outputs-2 = 《0x0》;

xlnx,dout-default = 《0x00000000》;

xlnx,dout-default-2 = 《0x00000000》;

xlnx,gpio-width = 《0x8》;

xlnx,gpio2-width = 《0x20》;

xlnx,interrupt-present = 《0x0》;

xlnx,is-dual = 《0x0》;

xlnx,tri-default = 《0xFFFFFFFF》;

xlnx,tri-default-2 = 《0xFFFFFFFF》;

};

};

};

生成FSBL

依然是剛剛打開(kāi)的skd中。

a)File-》New-》Application Project.注意:按如下方式核對(duì)一下。無(wú)誤后點(diǎn)擊finish。

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

b)在Project explorer中右鍵FSBL,然后選擇Bulid Configuration項(xiàng),然后選擇Set Active -》Release。再一次右鍵FSBL,然后選擇Clean Project,然后在郵件FSBL,然后選擇Build Project。

如果順利console窗口的輸出如下:

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

其所在目錄和device tree在統(tǒng)一個(gè)目錄下:

編譯u-boot

按如下方式修改u-boot,使用SD上的文件系統(tǒng)而非ramdisk文件系統(tǒng)

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

導(dǎo)出xilinx路徑:

export PATH=/opt/Xilinx/SDK/2016.4/gnu/arm/lin/bin:$PATH

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

然后編譯

gsc@gsc-250:~/zynq7000/ZedBoard/resources/boot_loader/boot_loader-generator$ make distclean

gsc@gsc-250:~/zynq7000/ZedBoard/resources/boot_loader/boot_loader-generator$ make zynq_zed_config

編譯完成以后,u-boot跟目錄變成:

我們需要圖中綠色的u-boot文件,這里將其重命名成u-boot.elf。下一小節(jié)將使用它。

生成二進(jìn)制文件

依然是SDK里。選擇Xilinx Tools-》Create Boot Image,切記相關(guān)配置。

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

其中-boot.elf,F(xiàn)SBL.elf以及bit文件是前面生成的。

最終將在output path下指定的路徑里將生成Boot.bin文件供后面使用。至此可以退出SDK。

編譯linux

導(dǎo)出xilinx路徑:

export PATH=/opt/Xilinx/SDK/2016.4/gnu/arm/lin/bin:$PATH

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

配置linux

$ make distclean

$make ARCH=arm xilinx_zynq_defconfig

$ make ARCH=arm menuconfig

$ export PATH=/home/gsc/zynq7000/ZedBoard/projects/boot_loader/tools/:$PATH(這個(gè)是前面編譯生成uboot下的tools路徑)

$make ARCH=arm UIAMGE_LOADDR=0x8000 uImage

這里需要配置linux,具體來(lái)說(shuō)就是去掉ramdisk的支持,并且開(kāi)啟代碼的支持。

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

文件太長(zhǎng)不單獨(dú)列出,有需要,下載地址:

編譯完成后

生成linux加載使用的設(shè)備樹(shù)

如果沒(méi)錯(cuò),則生成的設(shè)備樹(shù)在如下目錄:

使使用如下命令生成設(shè)備樹(shù)

gsc@gsc-250:~/zynq7000/ZedBoard/projects/linux_kernel/scripts/dtc$ dtc -O dtb -I dts -o devicetree.dtb /home/gsc/zynq7000/ZedBoard/projects/hardware_design/axidma_user/axidma_user.sdk/device_tree_bsp_0/system.dts

生成文件系統(tǒng)

導(dǎo)出xilinx路徑:

export PATH=/opt/Xilinx/SDK/2016.4/gnu/arm/lin/bin:$PATH

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

make xconfig

make

整個(gè)編譯過(guò)程會(huì)根據(jù)配置先下載相關(guān)工具,然后進(jìn)行編譯。

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

在生成的目錄中

file_system/output/images/rootfs.ext4

編譯DMA測(cè)試程序:

make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm KBUILD_DIR= driver

拷貝到SD中

1.拷貝跟文件系統(tǒng)到ext4分區(qū):

sudo mount -t ext4 -o loop XXX/rootfs.ext4 /mnt

sudo cp -rf /mnt/* ${Where you mount SD card}

sudo umount -l /mnt

將生成的DMA測(cè)試程序拷貝到SD卡的/media目錄下

2.拷貝系統(tǒng)鏡像到FAT分區(qū)

boot.bin

devicetree.dtb

uIamge

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

    關(guān)注

    3

    文章

    559

    瀏覽量

    100429
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    608

    瀏覽量

    47126
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Xilinx zynq AXI總線全面解讀

    4 版本。 AXI總線 ZYNQ有三種AXI總線: (A)AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地
    的頭像 發(fā)表于 12-04 12:22 ?7047次閱讀
     Xilinx <b class='flag-5'>zynq</b> <b class='flag-5'>AXI</b>總線全面解讀

    ZYNQ跑系統(tǒng)系列開(kāi)發(fā):AXI-DMAlinux驅(qū)動(dòng)案例

    一、搭建硬件環(huán)境 vivado版本2017.4,芯片為7010,不過(guò)不管什么版本和芯片大致步驟是一樣的 本文工程文件: https://gitee.com/long_fly/AXIDMA_linux
    的頭像 發(fā)表于 01-02 09:11 ?9287次閱讀
    <b class='flag-5'>ZYNQ</b>跑系統(tǒng)系列開(kāi)發(fā):<b class='flag-5'>AXI-DMA</b>的<b class='flag-5'>linux</b>驅(qū)動(dòng)案例

    ZYNQ SOC案例開(kāi)發(fā):AXI DMA使用解析及環(huán)路測(cè)試

    一、AXI DMA介紹 本篇博文講述AXI DMA的一些使用總結(jié),硬件IP子系統(tǒng)搭建與SDK C代碼封裝參考米聯(lián)客ZYNQ教程。若想讓
    的頭像 發(fā)表于 12-31 09:52 ?8453次閱讀
    <b class='flag-5'>ZYNQ</b> SOC案例開(kāi)發(fā):<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用解析及環(huán)路測(cè)試

    如何在ZedBoard中使用AXI DMA核心

    你好最近我一直在研究如何在ZedBoard中使用AXI_DMA核心。我正在使用s2mm通道以分散聚集模式將數(shù)據(jù)傳輸到DRAM??驁D如下圖所示(基于Mohammadsadegh Sadri Zynq
    發(fā)表于 04-09 11:53

    zynq7020板子+ad采集+dma傳輸問(wèn)題?

    求助各位大神,我用的是ad7606采集數(shù)據(jù),然后通過(guò)dma傳輸到arm核中,用的板子時(shí)zynq7020,但是一直出現(xiàn)一個(gè)問(wèn)題,[BD 41-237] Bus Interface property
    發(fā)表于 06-17 16:51

    ZYNQ PSPL DMA傳輸怎么使用?

    我在AXI lite上設(shè)計(jì)了一個(gè)帶有32個(gè)寄存器的簡(jiǎn)單PL,并希望使用集成的DMA在PL和PS之間進(jìn)行數(shù)據(jù)傳輸。是否有關(guān)于此方案的任何文檔或教程?有人可以告訴我必要的步驟嗎?從我到目前
    發(fā)表于 03-06 10:19

    ZYNQ中不同應(yīng)用的DMA總結(jié)

    不同類型的DMAHigh performance w/DMA幾種DMA的總結(jié)ZYNQ中不同應(yīng)用的DMA幾個(gè)常用的 AXI 接口 IP 的功能
    發(fā)表于 03-31 11:39

    AXI接口協(xié)議詳解

    1、AXI接口協(xié)議詳解  AXI 總線  上面介紹了AMBA總線中的兩種,下面看下我們的主角—AXI,在ZYNQ中有支持三種
    發(fā)表于 10-14 15:31

    Adam Taylor玩轉(zhuǎn)MicroZed系列67:AXI DMA II

    上周的博客中我們學(xué)習(xí)了Zynq SoC的AXI DMA,我解釋了怎樣利用AXI DMA控制器將數(shù)據(jù)從PL搬運(yùn)到PS。在本期博客中我們將學(xué)習(xí)怎
    發(fā)表于 02-08 08:10 ?379次閱讀

    一文詳解ZYNQ中的DMAAXI4總線

    ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,但PS與PL之間的接口卻只支持前兩種,AXI-Stream只能在
    的頭像 發(fā)表于 09-24 09:50 ?5222次閱讀
    一文<b class='flag-5'>詳解</b><b class='flag-5'>ZYNQ</b>中的<b class='flag-5'>DMA</b>與<b class='flag-5'>AXI</b>4總線

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

    本篇博文將為您演示如何創(chuàng)建 AXI CDMA Linux 用戶空間示例應(yīng)用。 示例設(shè)計(jì)將在 Zynq UltraScale+ RFSoC ZCU111 評(píng)估板上實(shí)現(xiàn)通過(guò) AXI CDM
    的頭像 發(fā)表于 09-28 15:31 ?2499次閱讀
    如何創(chuàng)建<b class='flag-5'>AXI</b> CDMA <b class='flag-5'>Linux</b>用戶空間示例應(yīng)用

    你必須了解的AXI總線詳解

    DMA的總結(jié) ZYNQ中不同應(yīng)用的DMA 幾個(gè)常用的 AXI 接口 IP 的功能(上面已經(jīng)提到): AXI-DMA:實(shí)現(xiàn)從 PS 內(nèi)存到 P
    的頭像 發(fā)表于 10-09 18:05 ?7391次閱讀
    你必須了解的<b class='flag-5'>AXI</b>總線<b class='flag-5'>詳解</b>

    ZYNQDMAAXI4總線

    ZYNQDMAAXI4總線 為什么在ZYNQDMAAXI聯(lián)系這么密切?通過(guò)上面的介紹我們
    的頭像 發(fā)表于 11-02 11:27 ?4289次閱讀
    <b class='flag-5'>ZYNQ</b>中<b class='flag-5'>DMA</b>與<b class='flag-5'>AXI</b>4總線

    淺析AXI DMA收發(fā)數(shù)據(jù)傳輸過(guò)程

    MAIP的M_AXI_MM2S接口接收到數(shù)據(jù)完成后通過(guò)mm2s_introut接口輸出高電平告訴PS端DMA接收數(shù)據(jù)傳輸完成,PS端開(kāi)始執(zhí)行發(fā)送中斷程序。
    發(fā)表于 10-11 15:16 ?2325次閱讀

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

    本文將為您演示如何創(chuàng)建?AXI CDMA Linux?用戶空間示例應(yīng)用
    的頭像 發(fā)表于 07-07 14:15 ?789次閱讀
    <b class='flag-5'>Zynq</b> UltraScale+RFSoC的<b class='flag-5'>AXI</b> CDMA <b class='flag-5'>Linux</b>用戶空間示例