<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用WinDriver實(shí)現鏈式DMA

利用WinDriver實(shí)現鏈式DMA

作者: 時(shí)間:2013-07-13 來(lái)源:網(wǎng)絡(luò ) 收藏

按照上面的策略,一次DMA傳輸至少可以處理含有(2032-16)/16=126個(gè)描述符的描述符表,至少可以傳輸124*4 KB=496 KB大小的數據。如果DAM傳輸的數據很多時(shí),可以分成多次DMA傳輸,這樣仍可使每次DMA傳輸時(shí),描述表的數據占用一個(gè)物理頁(yè)。
上面的策略,也可應用于DMA數據存儲區的設置。例如在我們進(jìn)行的加密卡設計中,使用DMA寫(xiě)模塊完成加密結果的輸出。對于公鑰算法,其加密結果的長(cháng)度往往是固定的,比如,對2 048位的RSA簽名運算,其簽名結果長(cháng)度為256字節。此時(shí)采用上面的策略,我們就可以通過(guò)一次DMA傳輸讀到簽名結果,這樣就簡(jiǎn)化了底層設備對輸出接口的設計。
在設置完DMA控制寄存器后,設備開(kāi)始進(jìn)行MDA描述符檢索,然后開(kāi)始進(jìn)行數據傳輸,主機需要知道什么時(shí)候數據傳輸結束,以便進(jìn)行其他處理或讀取傳輸結果。有兩種處理方式:中斷方式和查詢(xún)方式。由于Windows XP操作系統不支持消息中斷請求(MSI),故采用查詢(xún)的方式處理。這就需要設置描述符的控制域和DMA控制寄存器的控制域部分,以使設備更新描述符表的EPLAST域。需要指出的是:在設備DMA處理模塊的實(shí)現中,描述表的描述符頭中,最后一個(gè)雙字的低16位是EPLAST域的實(shí)際值,即最后完成的描述符的索引號,而高16位是其他的信息。因此可以用下面的DMAWaitForCompletion函數進(jìn)行查詢(xún)處理。
b.JPG
c.JPG
在上面的函數中hDev為設備句柄;DT_HEAD_EPLAST為描述表的描述符頭中,最后一個(gè)雙字的地址指針;eplast_num為DMA傳輸的最后一個(gè)描述符的索引號,等于描述符表中描述符個(gè)數減1。函數的返回值為真,表示DMA傳輸正確完成。
為了使DMA緩沖區保持與CPU緩存、I/O緩存的同步,主機端應在設置DMA控制寄存器之前,對DMA傳輸的數據存儲區和描述符表存儲區調用WDC_DMASyncCpu函數,在完成DMA的傳輸查詢(xún)之后,調用WDC_DMASyncIo函數和WDC_DMABufUnlock函數。

4 結束語(yǔ)
對基于A(yíng)ltera公司硬核的應用,Altera公司雖然提供了上層Demo示例程序,但其只進(jìn)行了MDA傳輸的性能測試。文中給出了處理DMA數據傳輸時(shí),主機端需要面對和解決的幾個(gè)問(wèn)題。通過(guò)這些處理方法和策略,保證了主機和設備之間DMA數據傳輸的正確性,簡(jiǎn)化了底層FPGA應用的設計,為利用DMA模塊進(jìn)行用戶(hù)的應用邏輯設計提供了基礎。

本文引用地址:http://dyxdggzs.com/article/148004.htm

存儲器相關(guān)文章:存儲器原理



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>