關于i.MX6/i.MX7 EIM總線驅動,我們前面已經用了兩個章節進行了介紹,第一節用來介紹時序(非常重要),第二節用來介紹通過非DMA的方式來進行DMA通信,
第二節,只是EIM總線通信的一個過渡章節,對于初學者或許有一點幫助,但是在實際的使用程序中,非DMA的方式基本都不會被應用到產品上,因為使用非DMA的方式,會導致CPU的占用率例外的高,同時在傳輸的穩定性上也不是很可靠,我們之前使用非DMA的方式進行傳輸,使用示波器去測驗DMA總線上面的波形,發現波形的讀寫時鐘波動很大,
那么,這一節,我們主要介紹一下EIM-DMA的傳輸方式,在熟悉了這一節后,EIM總線異步通信驅動基本就可以應用到產品上了,
先簡單介紹一下我們和FPGA通信的業務,不同的產品,對應的業務邏輯可能不一樣,具體的業務邏輯以實際產品為主,這里以我目前做過的一種來作為分析,
我們的產品使用EIM和FPGA通信,主要是通過EIM去獲取FPGA采集到的資料,因此我們的FPGA板通過中斷的方式來通知ARM板什么時候去讀取資料,
簡單點歸納:FPGA采集資料--->FPGA去觸發ARM的外部中斷--->ARM檢測到中斷后使用EIM去讀取資料--->最后進行資料校驗
簡單的介紹了上面的通信流程,那么接下來就需要我們去實作ARM對應的驅動代碼了,
驅動代碼主要實作2個功能:
1、中斷
2、DMA傳輸
因為設定了收費的關系,所以代碼還是一點一點的去貼,在最后的時候,再把整個代碼貼出來,
搭建驅動框架:
//頭檔案就先不貼了,一大推,貼出來占空間
#define D
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/239135.html
標籤:其他
上一篇:手機學習利器Qpython
