<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于DSP的HPI接口的視頻數(shù)據(jù)傳輸系統(tǒng)設計

          基于DSP的HPI接口的視頻數(shù)據(jù)傳輸系統(tǒng)設計

          作者: 時間:2012-03-30 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/257606.htm


            
          2.2 存儲器映射I/O
            
          一般情況下,當應用程序用read/write讀寫設備數(shù)據(jù)時,該設備的驅動先將設備數(shù)據(jù)從設備上采樣到內核緩沖區(qū),再從內核緩沖區(qū)拷貝到應用程序緩沖區(qū),數(shù)據(jù)經(jīng)過了兩次拷貝。當數(shù)據(jù)量比較小時,如一些控制命令或狀態(tài)信息,對系統(tǒng)性能幾乎沒有影響。但是,如果一次傳輸?shù)臄?shù)據(jù)量比較大,比如視頻顯卡上的實時視頻圖像,兩次拷貝將大大影響系統(tǒng)的數(shù)據(jù)處理效率。這時,可采用存儲器映射I/O技術,在內核層存儲器映射I/O由函數(shù) remap_page_range完成。
            
          由remap_page_range函數(shù)的原型可以知道,該函數(shù)的意義在于通過將特定物理地址映射到進程虛擬地址,進程可以訪問特定的物理地址,而這在普通情況下是不可能的。在本例中,當進程調用mmap函數(shù)進行存儲映射時,內核會調用驅動注冊的hpi_mmap函數(shù),傳入的參數(shù)之一包括進程虛擬地址。在 hpi_mmap函數(shù)里,調用remap_page_range完成從緩沖區(qū)物理地址到進程虛擬地址的映射。hpi_mmap函數(shù)實現(xiàn)如下:


            
          其中vm_flags字段設置了VM_RESERVED,表示該數(shù)據(jù)緩沖區(qū)一直常駐內存,在內存不足時,不會被交換出去。內核和進程同時對數(shù)據(jù)緩沖區(qū)讀寫,為了保證數(shù)據(jù)的一致性,對該區(qū)域的訪問不應該經(jīng)過CPU內部的緩沖區(qū),所以用pgprot_noncached設置非緩沖標志。
            
          mmap系統(tǒng)調用返回一個進程虛擬地址,該地址就是vma->vm_start字段,進程對該虛擬地址的訪問,最終變?yōu)閷ξ锢淼刂稢ACHE_PHY的訪問。
            
          2.3 數(shù)據(jù)緩沖管理
            
          緩沖管理的主要任務是,當ARM接收到新的一幀時,為其分配相應的緩存,并將在物理地址重映射到進程虛擬地址。當應用程序處理該幀時,緩沖管理負責內存區(qū)域的回收。
            
          當Linux內核啟動時,可以傳人參數(shù)mem=PHY_LEN,指定存儲空間的大小。在本例中,內核啟動時為HPI驅動預留8 MB的高端物理內存。在本例中,借助Linux中對普通外設I/O內存(PCI卡內存等)管理的思想,用高度為2的樹表示一塊連續(xù)的區(qū)域。該數(shù)據(jù)結構的優(yōu)點在于,資源分配簡單,把離散的小內存合并為一塊連續(xù)的大緩沖區(qū)的算法復雜度為O(1)。具體實現(xiàn)請參閱內核源碼中resource結構相關部分。
            
          重映射新一幀到進程虛擬地址是緩沖管理的另一任務。因為前一幀數(shù)據(jù)物理地址已經(jīng)映射到進程虛擬地址,需要先將前幀物理地址與進程虛擬地址的映射關系去掉,然后重映射當前幀數(shù)據(jù)到進程虛擬地址。去掉物理地址與進程虛擬地址的映射關系由內核函數(shù)zap_page_range完成,調用該函數(shù)后,如果進程再訪問該虛擬地址,內核會產生缺頁中斷。這時再用remap_page_range建立當前幀數(shù)據(jù)物理地址與進程虛擬地址間的映射關系,進程就可以通過同一虛擬地址訪問當前幀的數(shù)據(jù)了。該方法的意義在于,進程不用頻繁調用mmap建立物理地址與虛擬地址的映射,只用調用一次,當有新數(shù)據(jù)到達時,驅動自動將新幀數(shù)據(jù)映射到先前的進程虛擬地址,提高了進程處理的效率。實現(xiàn)代碼如下:


            
          結 語
            
          在當前視頻處理平臺上,視頻處理、視頻傳輸、復雜任務管理等工作一般都是由一塊處理器單獨完成,結合其他嵌入式微處理器協(xié)同工作的技術方案剛剛起步。經(jīng)測試,在基于本文提出的高速通信方法設計的視頻處理平臺上,TMS320DM642與AT9lRM9200間的通信速率可以達到50 Mbps,帶寬足夠用來傳輸MPEG等壓縮。如果用HPl32模式,速度還會大幅度提高。同時,因為Linux系統(tǒng)的實時性不是很強,如果采用其他實時性強的操作系統(tǒng),如Vxworks等,系統(tǒng)性能還會有大的提高。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();