色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

電子設(shè)計 ? 來源:CSDN博主 ? 作者:long_fly ? 2021-01-02 09:11 ? 次閱讀

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

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

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

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

o4YBAF9uJIOAE8PDAAB1-qbQiXc289.png

然后直接生成bit文件,然后記得要導(dǎo)出硬件(包含bit文件)進(jìn)SDK

二、生成設(shè)備樹

1.解壓設(shè)備樹工具文件夾到一個地方
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.設(shè)置環(huán)境變量

pIYBAF9uJIeAB4d2AACVvVQ4PwI263.png

內(nèi)容為:console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 earlyprintk rootwait

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

o4YBAF9uJImAY1BMAADBqPjxGaA048.png

待用

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

pIYBAF9uJIqAPLSuAACHcwdr2xc592.png


pIYBAF9uJIyATDjWAAB0yQ8VkRU433.png

2.使能調(diào)試信息打印

o4YBAF9uJI2AUdlVAACCtvB3KyI720.png

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

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

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

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

3.打開GUI配置u-boot
make menuconfig,load預(yù)配置的文件,絕對路徑為/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 文件的不同段的內(nèi)存分配情況 (可以不看)
arm-xilinx-linux-gnueabi-objdump -h u-boot
7.修改后綴為u-boot.elf,待用

o4YBAF9uJJCAWA5vAACa9KV2dG8679.png

五、編譯kernel
1.進(jìn)入kernel目錄(自己解壓的路徑)并和之前一樣定位文件
cd /home/hlf/mnt/linux-xlnx-master
source /opt/Xilinx/SDK/2017.1/settings64.sh
2.打開GUI配置kernel
make ARCH=arm menuconfig,load預(yù)配置的文件,絕對路徑為/home/hlf/mnt/linux-xlnx-master/arch/arm/configs/xilinx_zynq_defconfig,這里不通過GUI方式更改配置,關(guān)閉
3.開啟DMA的相關(guān)功能
也可以不通過GUI的方式配置kernel,這里我們直接命令行(要在超級用戶模式下,不然沒有權(quán)限修改):
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.編譯內(nèi)核
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000
6.編譯完成后,命令行會提示生成的uImage的位置
uImage拷貝出來待用
7.生成devicetree.dtb
將設(shè)備樹文件夾拷貝到虛擬機(jī)的相應(yīng)路徑下

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

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

o4YBAF9uJJaATzV2AACFlsHzJVM678.png

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

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

pIYBAF9uJJeAKM4wAABjap-9Mu8872.png

我將文件夾命名為了extra,直接將例程文件夾的內(nèi)容放到里面,如果沒有權(quán)限的話,直接命令行chmod 777 文件夾名獲取相應(yīng)權(quán)限就可以了
2.cd到extra文件夾里
3.編譯
使用交叉編譯鏈,定位到kernel(已經(jīng)編譯好的)的路徑,編譯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卡中,開機(jī)
5.掛載SD卡
cd ..到達(dá)系統(tǒng)目錄
mount /dev/mmcblk0p1 /mnt掛載SD卡
cd /mnt進(jìn)入SD目錄
insmod axidma.ko載入剛剛生成的模塊

o4YBAF9uJJqAAkI4AABLjWMxNxE427.png

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

pIYBAF9uJJuAQHU4AAD8AjUdrH4385.png

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

7.查看是否成功
cd /dev到達(dá)dev目錄
ls查看內(nèi)容

o4YBAF9uJJ2Ac92zAACVCVPnSKw610.png

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

pIYBAF9uJJ6ALFTHAAArEpSGWbM768.png

8.運(yùn)行例程里的APP1

o4YBAF9uJJ-AW1FVAABQEwLKDJs247.png

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

o4YBAF9uJKGAeyyNAACkJ3heuTo366.png

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

o4YBAF9uJKOAPpoCAABmFUh0QTo817.png

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

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

pIYBAF9uJKSAfhdBAAAsgluNW3Q186.png

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

o4YBAF9uJKWAJ0PtAAAsSiw63Qc613.png

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

編輯:hfy

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

    關(guān)注

    87

    文章

    11373

    瀏覽量

    211293
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    611

    瀏覽量

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

    關(guān)注

    1

    文章

    130

    瀏覽量

    16831
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    ZYNQ基礎(chǔ)---AXI DMA使用

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

    正點原子ZYNQ7015開發(fā)板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強(qiáng)悍,資料豐富!

    板提供了豐富的開發(fā)文檔和軟件資源,涉及FPGA開發(fā)、Vitis裸機(jī)開發(fā)Linux系統(tǒng)開發(fā)和PCle開發(fā)
    發(fā)表于 09-14 10:12

    [XILINX] 正點原子ZYNQ7035/7045/7100開發(fā)板發(fā)布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    豐富的開發(fā)文檔和軟件資源,涉及FPGA開發(fā)、Vitis裸機(jī)開發(fā)Linux系統(tǒng)開發(fā)和PCIe開發(fā)
    發(fā)表于 09-02 17:18

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動開發(fā)、應(yīng)用程序開發(fā)等多個
    的頭像 發(fā)表于 09-02 09:11 ?756次閱讀

    linux系統(tǒng)的設(shè)備驅(qū)動一般分幾類

    Linux系統(tǒng)的設(shè)備驅(qū)動是操作系統(tǒng)與硬件設(shè)備之間的橋梁,負(fù)責(zé)實現(xiàn)操作系統(tǒng)與硬件設(shè)備之間的通信和控制。Li
    的頭像 發(fā)表于 08-30 15:13 ?648次閱讀

    linux驅(qū)動程序如何加載進(jìn)內(nèi)核

    Linux系統(tǒng)中,驅(qū)動程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們允許內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實現(xiàn)對硬件設(shè)備的控制和管理。 驅(qū)動程序的編寫 驅(qū)動
    的頭像 發(fā)表于 08-30 15:02 ?698次閱讀

    Linux 驅(qū)動開發(fā)與應(yīng)用開發(fā),你知道多少?

    一、Linux驅(qū)動開發(fā)與應(yīng)用開發(fā)的區(qū)別開發(fā)層次不同:Linux
    的頭像 發(fā)表于 08-30 12:16 ?1070次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>與應(yīng)用<b class='flag-5'>開發(fā)</b>,你知道多少?

    小白也會的,在linuxandroid應(yīng)用的方案

    介紹一個可以在linux安卓應(yīng)用的linux桌面——OpenFDE
    的頭像 發(fā)表于 08-23 11:14 ?886次閱讀
    小白也會的,在<b class='flag-5'>linux</b>上<b class='flag-5'>跑</b>android應(yīng)用的方案

    請問stm32h7系列怎么linux呢?

    stm32h7系列怎么linux
    發(fā)表于 07-03 08:04

    Xilinx ZYNQ 動手實操演練

    。可編程邏輯可由用戶配置,并通過“互連”模塊連接在一起,這樣可以提供用戶自定義的任意邏輯功能,從而擴(kuò)展處理系統(tǒng)的性能及功能。不過,與采用嵌入式處理器的FPGA不同,Zynq-7000產(chǎn)品系列
    發(fā)表于 05-03 19:28

    STM32H7使用DMA方式讀取SD卡,DMA緩沖是否只能處于AXI SRAM?

    除了512K的 AXI SRAM,還有沒有其他的SRAM 區(qū)域能訪問到? 因為我想這整個512K 的AXI SRAM 做其他用途,變量都定義到其它的SRAM 區(qū)域。但這樣SD卡 DMA 就不能用了。
    發(fā)表于 04-18 06:00

    Linux DMA系統(tǒng)驅(qū)動開發(fā)

    Streaming DMA在訪問內(nèi)存地址時經(jīng)過cache,是non-coherence設(shè)備,通常采用streaming mapping的API進(jìn)行內(nèi)存申請,在單次DMA傳輸時進(jìn)行map,在傳輸完成后進(jìn)行unmap;
    發(fā)表于 04-07 14:38 ?1022次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>DMA</b>子<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>

    8路SDI/HDMI/MIPI/PCIe-DMA音視頻采集,V4L2驅(qū)動應(yīng)用介紹

    ,在上位機(jī)可以使用標(biāo)準(zhǔn)的Linux V4L2視頻驅(qū)動,實現(xiàn)多路視頻信號的采集和顯示工作。2 子系統(tǒng)結(jié)構(gòu) 3功能特性1.支持多種視頻接口:SDI、Display Port(DP)、HDMI、DVI、VGA
    發(fā)表于 03-13 13:59
    主站蜘蛛池模板: 中文无码乱人伦中文视频播放 | 精品国产乱码久久久久久夜深人妻 | 甜性涩爱下载 | 日韩视频中文字幕精品偷拍 | a三级黄色片 | 高h乱一受多攻男男 | 99影视久久电影网久久看影院 | 久草在线精彩免费视频 | bl(高h)文| 狼群影院视频在线观看WWW | 国产成人综合在线视频 | 男同志video最新猛男 | 国产三级在线观看视频 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | www.青青草原| 久久re视频这里精品09免费 | 精品日产1区2卡三卡麻豆 | 精品一区二区三区AV天堂 | 撅高 自己扒开 调教 | 99er热精品视频国产免费 | 久草免费视频在线观看 | 国产学生在线播放精品视频 | 丰满五十老女人性视频 | 精品国产乱码久久久久久夜深人妻 | 夜色88V精品国产亚洲AV | 久久久擼擼擼麻豆 | 国产亚洲精品久久久久久久 | 乱亲女H秽乱长久久久 | 综合人妻久久一区二区精品 | 青青草在线视频 | 人妻洗澡被强公日日澡 | 91久久偷偷做嫩草影院免 | av老司机色爱区综合 | 亚洲国产剧情中文视频在线 | 中文字幕一区二区视频 | 国产亚洲欧洲日韩在线三区 | 亚洲国产成人精品不卡青青草原 | 国产精品亚洲二线在线播放 | 免费观看成人毛片 | 亚洲人成无码久久久AAA片 | 人人草影院 |