在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

            本文引用地址:http://www.biyoush.com/article/257606.htm


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


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


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


            上一頁 1 2 下一頁

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉