chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

ZYNQ跑系統(tǒng)系列開發(fā):AXI-DMA的linux驅動案例

電子設計 ? 來源:CSDN博主 ? 作者:long_fly ? 2021-01-02 09:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、搭建硬件環(huán)境

vivado版本2017.4,芯片為7010,不過不管什么版本和芯片大致步驟是一樣的

本文工程文件:https://gitee.com/long_fly/AXIDMA_linux

硬件平臺PL的搭建同ZYNQ基礎系列(六) DMA基本用法,在這個工程的基礎上添加SD卡(根據(jù)自己的開發(fā)板硬件選擇相應的引腳)

o4YBAF9uJIOAE8PDAAB1-qbQiXc289.png

然后直接生成bit文件,然后記得要導出硬件(包含bit文件)進SDK

二、生成設備樹

1.解壓設備樹工具文件夾到一個地方
https://github.com/Xilinx/device-tree-xlnx下載

2.菜單欄 –> Xilinx –> Repositories
添加剛剛解壓的位置

pIYBAF9uJISALIXNAADC-32FTL0002.png

3.菜單欄 –> File –> New –> Board Support Package
創(chuàng)建BSP,可以發(fā)現(xiàn)多了一欄device_tree,直接點確定到下一步

pIYBAF9uJIaAGFnxAACepXuBb_Y518.png

4.設置環(huán)境變量

pIYBAF9uJIeAB4d2AACVvVQ4PwI263.png

內容為:console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 earlyprintk rootwait

5.最后可以在工程文件夾中找到生成的設備樹文件

o4YBAF9uJImAY1BMAADBqPjxGaA048.png

待用

三、生成FSBL引導文件
1.在SDK中新建一個APP,選擇FSBL模板工程,然后完成創(chuàng)建

pIYBAF9uJIqAPLSuAACHcwdr2xc592.png


pIYBAF9uJIyATDjWAAB0yQ8VkRU433.png

2.使能調試信息打印

o4YBAF9uJI2AUdlVAACCtvB3KyI720.png

添加#define FSBL_DEBUG_INFO后,保存文件,會生成FSBL.elf文件,文件待用

四、編譯u-boot
0.具體的相關環(huán)境(不裝會報錯)和SDK環(huán)境安裝(不裝沒法編譯,建議去官網(wǎng)下載)
參考ZYNQ跑系統(tǒng) 系列(一) 傳統(tǒng)方式移植linux,不再贅述;u-boot和kernel直接在https://github.com/Xilinx下載;還有注意以下路徑是我自己的,要根據(jù)實際修改相應路徑

1.linux超級用戶模式,定位settings64.sh文件(在SDK安裝文件夾里)
source /opt/Xilinx/SDK/2017.1/settings64.sh

2.進入u-boot目錄(自己解壓的路徑)
cd /home/hlf/mnt/u-boot-xlnx-master

3.打開GUI配置u-boot
make menuconfig,load預配置的文件,絕對路徑為/home/hlf/mnt/u-boot-xlnx-master/configs/zynq_ax7010_defconfig

pIYBAF9uJI-AV4E7AACJwy_ISGY398.png

,觀察了一下沒什么需要修改的,直接保存并退出
4.讀配置文件(zynq_ax7010_defconfig)
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_ax7010_defconfig
5.編譯
make CROSS_COMPILE=arm-xilinx-linux-gnueabi-
6.查看 u-boot 文件的不同段的內存分配情況 (可以不看)
arm-xilinx-linux-gnueabi-objdump -h u-boot
7.修改后綴為u-boot.elf,待用

o4YBAF9uJJCAWA5vAACa9KV2dG8679.png

五、編譯kernel
1.進入kernel目錄(自己解壓的路徑)并和之前一樣定位文件
cd /home/hlf/mnt/linux-xlnx-master
source /opt/Xilinx/SDK/2017.1/settings64.sh
2.打開GUI配置kernel
make ARCH=arm menuconfig,load預配置的文件,絕對路徑為/home/hlf/mnt/linux-xlnx-master/arch/arm/configs/xilinx_zynq_defconfig,這里不通過GUI方式更改配置,關閉
3.開啟DMA的相關功能
也可以不通過GUI的方式配置kernel,這里我們直接命令行(要在超級用戶模式下,不然沒有權限修改):
gedit /home/hlf/mnt/linux-xlnx-master/arch/arm/configs/xilinx_zynq_defconfig
打開文件,確保以下選項開啟(=y)

CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_XILINX_DMA_ENGINES=y
CONFIG_PL330_DMA=y
CONFIG_XILINX_DMA=y
CONFIG_XILINX_AXIDMA=y
CONFIG_XILINX_AXIVDMA=y
CONFIG_DMA_SHARED_BUFFER=y

4.讀配置
make ARCH=arm xilinx_zynq_defconfig
5.編譯內核
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000
6.編譯完成后,命令行會提示生成的uImage的位置
uImage拷貝出來待用
7.生成devicetree.dtb
將設備樹文件夾拷貝到虛擬機的相應路徑下

o4YBAF9uJJKADGNQAACrrB0rMKI819.png

在pl.dtsi中添加:
axidma_chrdev: axidma_chrdev@0 {
compatible = "xlnx,axidma-chrdev";
dmas = ;
dma-names = "tx_channel", "rx_channel";
};

o4YBAF9uJJSAcJpdAAEkCMbdlDk404.png

保存后,生成devicetree.dtb:
./scripts/dtc/dtc -I dts -O dtb -o /home/hlf/mnt/device_tree_bsp_0/devicetree.dtb /home/hlf/mnt/device_tree_bsp_0/system-top.dts

六、準備運行l(wèi)inux
1.生成BOOT.bin
之前產生了FSBL.elf、u-boot.elf和bit文件,直接通過SDK生成BOOT.bin
2.拷貝文件至SD卡
將之前產生的BOOT.bin、devicetree.dtb和uImage拷貝到SD卡
3.插上串口開機運行

o4YBAF9uJJaATzV2AACFlsHzJVM678.png

確保可以運行系統(tǒng)

七、編譯例程
0.下載例程
例程下載地址:https://github.com/bperez77/xilinx_axidma或者https://gitee.com/long_fly/AXIDMA_linux
1.拷貝例程文件夾到kernel文件夾里

pIYBAF9uJJeAKM4wAABjap-9Mu8872.png

我將文件夾命名為了extra,直接將例程文件夾的內容放到里面,如果沒有權限的話,直接命令行chmod 777 文件夾名獲取相應權限就可以了
2.cd到extra文件夾里
3.編譯
使用交叉編譯鏈,定位到kernel(已經編譯好的)的路徑,編譯driver:
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm KBUILD_DIR=/home/hlf/mnt/linux-xlnx-master/ driver
使用交叉編譯鏈,編譯examples:
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm examples
編譯完成后,生成文件將出現(xiàn)在outputs文件夾里

pIYBAF9uJJiAALJlAABCCSN5GY4347.png

4.將這些文件拷貝到SD卡中,開機
5.掛載SD卡
cd ..到達系統(tǒng)目錄
mount /dev/mmcblk0p1 /mnt掛載SD卡
cd /mnt進入SD目錄
insmod axidma.ko載入剛剛生成的模塊

o4YBAF9uJJqAAkI4AABLjWMxNxE427.png

打印信息提示通道的ID沖突
6.修改設備樹中通道的ID號

pIYBAF9uJJuAQHU4AAD8AjUdrH4385.png

然后按照之前的步驟重新生成devicetree.dtb,將新設備樹文件拷貝到SD卡中,然后開機,掛載SD卡,加載模塊
這次沒有打印信息提示ID沖突

7.查看是否成功
cd /dev到達dev目錄
ls查看內容

o4YBAF9uJJ2Ac92zAACVCVPnSKw610.png

會發(fā)現(xiàn)多了一個axidma,然后運行dmesg,可以看到如下信息:

pIYBAF9uJJ6ALFTHAAArEpSGWbM768.png

8.運行例程里的APP1

o4YBAF9uJJ-AW1FVAABQEwLKDJs247.png

發(fā)現(xiàn)CMA內存不夠,導致接收緩存空間申請不了這么大,在設備樹文件夾中修改.dts后綴的文件,添加cma空間的申請

o4YBAF9uJKGAeyyNAACkJ3heuTo366.png

然后重新生成devicetree.dtb文件,拷貝到SD卡中,開機,掛載SD卡,加載模塊,運行APP

o4YBAF9uJKOAPpoCAABmFUh0QTo817.png

可以測試收發(fā)通道的數(shù)據(jù)速率

9.運行例程里的APP2
在SD卡中新建兩個文本,在其中一個文本文件中寫入內容,另一個為空

pIYBAF9uJKSAfhdBAAAsgluNW3Q186.png

運行應用程序,將文件1的內容通過DMA環(huán)路寫入文件2,因為文件太小了,所以顯示的是0.00Mb

o4YBAF9uJKWAJ0PtAAAsSiw63Qc613.png

運行結束后打開文件2,會發(fā)現(xiàn)和文件1里的內容完全一致

編輯:hfy

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

    關注

    88

    文章

    11622

    瀏覽量

    217824
  • Zynq
    +關注

    關注

    10

    文章

    625

    瀏覽量

    49209
  • AXI
    AXI
    +關注

    關注

    1

    文章

    142

    瀏覽量

    17775
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于AXI DMA IP核的DDR數(shù)據(jù)存儲與PS端讀取

    添加Zynq Processing System IP核,配置DDR控制器和時鐘。7000系列Zynq可以參考正點原子DMA回環(huán)測試設置。
    的頭像 發(fā)表于 11-24 09:25 ?2600次閱讀
    基于<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b> IP核的DDR數(shù)據(jù)存儲與PS端讀取

    【免費送書】成為硬核Linux開發(fā)者:《Linux 設備驅動開發(fā)(第 2 版)》

    Linux系統(tǒng)的設備驅動開發(fā),一直給人門檻較高的印象,主要因內核機制抽象、需深度理解硬件原理、開發(fā)調試難度大所致。2021年,一本講解
    的頭像 發(fā)表于 11-18 08:06 ?388次閱讀
    【免費送書】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)</b>者:《<b class='flag-5'>Linux</b> 設備<b class='flag-5'>驅動</b><b class='flag-5'>開發(fā)</b>(第 2 版)》

    【書籍評測活動NO.67】成為硬核Linux開發(fā)者:《Linux 設備驅動開發(fā)(第 2 版)》

    Linux 設備驅動開發(fā)(第 2 版)》。第2版系統(tǒng)講解內存管理、IRO管理、加鎖機制等嵌入式系統(tǒng)關鍵內容,透徹分析時鐘源、
    發(fā)表于 11-17 17:52

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0軟核控制器IP,純邏輯實現(xiàn),AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    )讀寫、DMA讀寫和數(shù)據(jù)擦除功能,提供用戶一個簡單高效的接口實現(xiàn)高性能存儲解決方案。NVMe AXI4 Host Controller IP讀寫的順序傳輸長度是RTL運行時動態(tài)可配置的,最小
    發(fā)表于 11-14 22:40

    利用蜂鳥E203搭建SoC【5】——DMA使用

    前文介紹了DDR3擴展,然而,對于大塊數(shù)據(jù)而言,使用CPU進行搬運速度較慢,因此可以使用DMA進行數(shù)據(jù)搬運。這里會使用到前文提到的中斷與DDR3。 本例中使用了Vivado提供的AXI-DMA
    發(fā)表于 10-29 08:21

    開發(fā)板在Linux系統(tǒng)下進行E203內核指令集測試以及分程序的測試

    本文為描述在沒有開發(fā)板的前提下如何在Linux系統(tǒng)進行指令集測試。 在不同的開發(fā)板上移植蜂鳥E203軟核的過程請參考前文 1.將文件傳輸進入Linu
    發(fā)表于 10-24 11:43

    Zynq MPSoC PS側PCIe高速DMA互連解決方案

    在涉及Xilinx Zynq UltraScale+ MPSoC的項目中,實現(xiàn)設備間高速、低延遲的數(shù)據(jù)傳輸往往是核心需求之一。PCIe(尤其PS側)結合DMA(直接內存訪問)正是滿足這類需求的理想技術方案。
    的頭像 發(fā)表于 10-22 13:53 ?3037次閱讀
    雙<b class='flag-5'>Zynq</b> MPSoC PS側PCIe高速<b class='flag-5'>DMA</b>互連解決方案

    基于E203的DMA ip的使用

    1.BD設計 2.AXI DMA寄存器 編寫SDK代碼,需要根據(jù)xilinx的官方例程和dma ip使用手冊進行寄存器的配置。 重要寄存器: MM2S S2MM
    發(fā)表于 10-22 06:00

    一文詳解AXI DMA技術

    ,SG)功能還可以將數(shù)據(jù)移動任務從位于于處理器系統(tǒng)中的中央處理器(CPU)中卸載出來。可以通過一個AXI4-Lite從接口訪問初始化、狀態(tài)和管理寄存器。如圖4. 8展現(xiàn)了DMA IP的功能構成核心。
    的頭像 發(fā)表于 04-03 09:32 ?2042次閱讀
    一文詳解<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>技術

    從零開始馴服Linux(一):ZYNQ-Linux啟動文件構建全解析

    源碼需要在linux系統(tǒng)(虛擬機)中安裝相應的交叉編譯工具鏈。安裝ZYNQ-7000系列芯片的交叉編譯工具鏈需要sdk.sh文件。把開發(fā)板資
    發(fā)表于 03-20 16:48

    AXI接口FIFO簡介

    AXI接口FIFO是從Native接口FIFO派生而來的。AXI內存映射接口提供了三種樣式:AXI4、AXI3和AXI4-Lite。除了Na
    的頭像 發(fā)表于 03-17 10:31 ?1747次閱讀
    <b class='flag-5'>AXI</b>接口FIFO簡介

    Linux系統(tǒng)配置優(yōu)化技巧

    應用系統(tǒng)在操作系統(tǒng)上面,系統(tǒng)的性能也關系到應用程序的性能,這里講一些Linux性能關鍵的配置信息。
    的頭像 發(fā)表于 03-04 11:27 ?718次閱讀

    雙目視覺處理系統(tǒng)開發(fā)實例-基于米爾安路國產DR1M90開發(fā)

    下實現(xiàn)雙攝,為復雜系統(tǒng)調度應用鋪平道路。 內核加載5640驅動下通過dma搬運ddr數(shù)據(jù),在應用層中通過v4l2框架顯示到HDMI上,完整數(shù)據(jù)流如下: FPGA DDR → AXI-DMA
    發(fā)表于 02-21 14:20

    迅為RK3568開發(fā)驅動指南Linux中通用SPI設備驅動

    迅為RK3568開發(fā)驅動指南Linux中通用SPI設備驅動
    的頭像 發(fā)表于 01-23 11:02 ?3403次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用SPI設備<b class='flag-5'>驅動</b>

    ZYNQ基礎---AXI DMA使用

    前言 在ZYNQ中進行PL-PS數(shù)據(jù)交互的時候,經常會使用到DMA,其實在前面的ZYNQ學習當中,也有學習過DMA的使用,那就是通過使用自定義的IP,完成HP接口向內存寫入和讀取數(shù)據(jù)的
    的頭像 發(fā)表于 01-06 11:13 ?3536次閱讀
    <b class='flag-5'>ZYNQ</b>基礎---<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用