最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Linux平臺下XDMA驅(qū)動安裝和調(diào)試過程記錄

2022-11-17 21:31 作者:生醫(yī)小王子  | 我要投稿

最近由于項目需要,需要實現(xiàn)Xilinx-FPGA到主機的數(shù)據(jù)傳輸功能,傳輸機制為PCIE-DMA。具體實現(xiàn)方法就是下載安裝Xilinx提供的XDMA驅(qū)動,基于該驅(qū)動和硬件功能,實現(xiàn)用戶代碼(讀寫功能XDMA已經(jīng)實現(xiàn)好了,直接調(diào)用就好)。由于我之前沒有接觸過FPGA和驅(qū)動開發(fā),是一個完全的小白,在前期浪費了許多時間,故在此分享一下我的學(xué)習(xí)歷程,希望能對大家有用。

一、XDMA驅(qū)動安裝

1. 下載XDMA驅(qū)動(http://github.com/Xilinx/dma_ip_drivers)

2. 安裝XDMA驅(qū)動

  • 在命令行中輸入lspci,查看系統(tǒng)是否檢測到FPGA設(shè)備

  • 根據(jù)dma_ip_drivers-master/XDMA/linux-kernel/readme.txt文件中的流程完成安裝?;蛘吒鶕?jù)網(wǎng)上的安裝流程完成安裝。

    XDMA linux平臺調(diào)試過程記錄(http://blog.csdn.net/lum250/article/details/121318547)

    HiFive Unmatched開發(fā)板安裝XDMA(linux安裝)(http://zhuanlan.zhihu.com/p/483896215)

  • 當執(zhí)行‘sudo ./load_driver.sh’后,若顯示“Error: The Kernel module installed correctly, but no devices were recognized.”,請不要浪費時間,去找硬件工程師,十有八九是他們的問題。可以通過‘dmesg | grep xdma’和‘lspci -xxxvvv | grep xdma’查詢有關(guān)xdma的日志信息和設(shè)備詳細信息,以方便硬件工程師定位問題

  • 若load_drivers.sh和run_test.sh腳本都運行成功了,則驅(qū)動安裝完成

二、閱讀XDMA驅(qū)動源代碼

1. 閱讀示例應(yīng)用程序dma_utils.c,dma_from_devices.c,dma_to_devices.c

通過閱讀上述示例程序,我們可以知道對設(shè)備的操作可以簡化為文件操作,先用open函數(shù)打開字符設(shè)備(Character Device Driver,如/dev/xdma0_c2h_0,驅(qū)動安裝完成后在/dev目錄下可見),使用read和write函數(shù)進行設(shè)備讀寫

但是還有很多問題沒有解決,為什么安裝驅(qū)動后就可以轉(zhuǎn)化為文件操縱,open,read這些函數(shù)哪來的;讀寫操作是同步還是異步的;除讀寫外還能進行哪些操作;如何處理中斷(/dev/xdma0_events_0)等等。

2. 閱讀書籍《Linux設(shè)備驅(qū)動程序》

通過閱讀第三章《字符設(shè)備驅(qū)動程序》可以知道如何將設(shè)備抽象為多個字符設(shè)備,如何將自定義的驅(qū)動函數(shù)轉(zhuǎn)化為linux內(nèi)置的open、read、write函數(shù)。下面簡單介紹一下我閱讀驅(qū)動代碼的過程,具體原理還是需要大家看書。

linux為每一個字符設(shè)備都定義了一組函數(shù)操作,如open、read、write;驅(qū)動程序員也可以為設(shè)備定義一組專用的操作如xdma_open、xdma_read、xdma_write。linux通過一個定義在<linux/fs.h>中的file_operations結(jié)構(gòu)來將兩者連接起來,該結(jié)構(gòu)包含一組函數(shù)指針,驅(qū)動程序員定義好這個結(jié)構(gòu)后,再通過內(nèi)核函數(shù)cdev_init將該結(jié)構(gòu)傳入內(nèi)核,就可以建立起連接。

下面是xdma中斷字符設(shè)備file_operations的定義,我們可以確定該字符設(shè)備能進行open、close、read和poll操作,通過閱讀char_open等函數(shù)就可以確定這些操作是如何實現(xiàn)的。

我們知道了能對字符設(shè)備進行的操作以及這些操作是如何實現(xiàn)的,就可以放心編寫應(yīng)用程序了。如果要進一步了解PCIE和DMA的實現(xiàn),那就要進一步查看技術(shù)手冊和書籍了。


Linux平臺下XDMA驅(qū)動安裝和調(diào)試過程記錄的評論 (共 條)

分享到微博請遵守國家法律
曲水县| 容城县| 淮安市| 贵定县| 德化县| 盐边县| 五华县| 菏泽市| 孟州市| 扎鲁特旗| 都匀市| 延川县| 博兴县| 自贡市| 灯塔市| 阜宁县| 宝丰县| 白山市| 龙海市| 古蔺县| 乐都县| 河池市| 青阳县| 赤壁市| 化德县| 吉安市| 昭苏县| 镇雄县| 屯留县| 枝江市| 九江县| 隆尧县| 峨眉山市| 东兴市| 德清县| 射洪县| 民勤县| 鸡西市| 油尖旺区| 宝山区| 竹山县|