



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、HPI接口的視頻數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)引言在視頻監(jiān)控、遠(yuǎn)程視頻播放等系統(tǒng)中,通常需要將視頻圖形數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)程處理機(jī)上。作為數(shù)字信號處理專用處理器,DSP雖然在視頻壓縮等方面有很大的優(yōu)勢,但對諸如任務(wù)管理,網(wǎng)絡(luò)通信等功能的實(shí)現(xiàn)較困難。運(yùn)行于通用嵌入式處理器的Linux操作系統(tǒng),開源,可以根據(jù)需要修改內(nèi)核,支持各種網(wǎng)絡(luò)協(xié)議,并且其任務(wù)調(diào)度機(jī)制性能卓越。綜合二者的優(yōu)點(diǎn),嵌入式視頻平臺可以由DSP完成圖形處理功能,并通過高速接口把視頻數(shù)據(jù)傳輸給引 言在視頻監(jiān)控、遠(yuǎn)程視頻播放等系統(tǒng)中,通常需要將視頻圖形數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)程處理機(jī)上。作為數(shù)字信號處理專用處理器,DSP雖然在視頻壓縮等方面有很大的優(yōu)勢,
2、但對諸如任務(wù)管理,網(wǎng)絡(luò)通信等功能的實(shí)現(xiàn)較困難。運(yùn)行于通用嵌入式處理器的Linux操作系統(tǒng),開源,可以根據(jù)需要修改內(nèi)核,支持各種網(wǎng)絡(luò)協(xié)議,并且其任務(wù)調(diào)度機(jī)制性能卓越。綜合二者的優(yōu)點(diǎn),嵌入式視頻平臺可以由DSP完成圖形處理功能,并通過高速接口把視頻數(shù)據(jù)傳輸給嵌入式微處理器,然后由嵌入式Linux系統(tǒng)完成網(wǎng)絡(luò)傳輸功能。目前DSP與微處理器之間的高速通信方式有以下幾種:共享內(nèi)存,此種技術(shù)對軟硬件的設(shè)計(jì)要求都非常高,同樣效率也最高;通用高速總線接口,如PCI、 USB等,這種類型的通信方式采用復(fù)雜的鏈路協(xié)議,軟件設(shè)計(jì)困難;專用接口,如TI公司DSP提供的HPI(Host Port Inter-face)
3、。本文研究了TMS320E)M642的HPI接口,并提出一種在TMS320DM642和AT91RM9200間高速通信的軟硬件實(shí)現(xiàn)方案。通過HPI接口,TMS320DM642可以高速地將實(shí)時(shí)視頻數(shù)據(jù)傳輸給AT91RM9200;在AT91RM9200上,Lnux驅(qū)動(dòng)實(shí)現(xiàn)存儲器映射IO和物理內(nèi)存重映射,避免了視頻數(shù)據(jù)在應(yīng)用程序與內(nèi)核之間的二次拷貝,提高了應(yīng)用程序的網(wǎng)絡(luò)發(fā)包效率。1 HPI接口硬件設(shè)計(jì)HPI是一種并行接口,支持32位(HPl32)和16位(HPll6)數(shù)據(jù)總線,通過HPI的數(shù)據(jù)寄存器(HPIDA、HlPIDF),ARM可以間接存取DSP的存儲空間。在DSP內(nèi)部,數(shù)據(jù)從存儲單元到HPI數(shù)
4、據(jù)寄存器的傳輸,是由EDMA(增強(qiáng)DMA)控制器完成的。HPI控制器的外圍引腳包括HD0-31、數(shù)據(jù)總線。HCNTLO-1是寄存器訪問控制線,HPI控制器有4個(gè)寄存器,通過這兩根控制線,DSP 可以確定ARM要訪問的寄存器。其中,HPIA地址寄存器,存放當(dāng)前訪問單元的地址;HPIC為控制寄存器,實(shí)現(xiàn)各種控制命令;HPIDA自增長數(shù)據(jù)寄存器,每訪問一次該寄存器HPIA的內(nèi)容加4;HPIDF固定地址數(shù)據(jù)寄存器,與HPIDA不同之處在于,訪問該寄存器后HPIA的內(nèi)容不變。HHWIL,高低位訪問控制線,它只用于HPll6模式中,該控制引腳決定寄存器的高或低16位被主機(jī)訪問。HRnW,HPI控制器4個(gè)寄
5、存器的讀寫控制線。 HDSl、HDS2和HCS,其中HDSl、HDS2可連接ARM的讀、寫控制線,HCS連接ARM的nCS7片選線,三者在DSP內(nèi)部組合形成一個(gè) HSTROBE信號,當(dāng)HCS低有效并且HDSl或HDS2的讀或?qū)懙陀行?,決定數(shù)據(jù)寄存器(HPIDA、HPIDF)的讀或?qū)懖僮?。HAS,地址鎖存線,當(dāng)主機(jī)的地址線與數(shù)據(jù)線復(fù)用時(shí),主機(jī)可用該控制線通知。DSP鎖存地址;其他不用該控制線情況時(shí),應(yīng)接高電平。nHRDY,DSP輸出線,表示HPI 總線是否可訪問。nHINT,中斷輸出線,用于中斷ARM。DSP與ARM接口電路如圖1所示。采用HPI16模式,16根數(shù)據(jù)線通過16245數(shù)據(jù)隔離器接到
6、ARM數(shù)據(jù)總線的低16位,將HPI的片選空間置于 ARM的nCS7片選線上,HRnW讀寫信號經(jīng)反向器接到ARM的AB4地址線,HCNTLO-1與ARM的地址線AB2-3相連,則HPI的 4個(gè)寄存器的讀基地址為0x80000000,寫基地址為0x80000010。在ARM端從這兩個(gè)地址開始訪問,相應(yīng)地對HPI 4個(gè)寄存器訪問。ARM通過HPI讀寫DSP數(shù)據(jù)空間,須按以下三步順序執(zhí)行:首先,對HPIC寄存器初始化,主要針對HPI16模式最低位HWOB位設(shè)置,決定數(shù)據(jù)傳輸格式是按高半字在前(設(shè)置為0),還是低半字在前(設(shè)置為1),該位對于HPI32模式無效,可不設(shè)置;然后,對HPIA寄存器初始化,設(shè)
7、置訪問單元的地址;最后通過讀寫數(shù)據(jù)寄存器(HPIDA、HPIDF)實(shí)現(xiàn)數(shù)據(jù)讀寫操作,其中讀寫HPIDA寄存器是完成連續(xù)地址單元讀寫操作,讀寫HPIDF寄存器是完成固定地址單元讀寫操作。注意,在ARM讀寫的過程中,如果DSP的nHRDY控制線一直為高,表示HPI數(shù)據(jù)總線未準(zhǔn)備好,ARM的讀寫操作必須等待;當(dāng)nHRDY為低后,ARM才繼續(xù)向下執(zhí)行指令。2 Linux驅(qū)動(dòng)設(shè)計(jì)Linux雖然是一種整體式操作系統(tǒng),但允許在運(yùn)行時(shí)動(dòng)態(tài)加載或刪除功能模塊。這個(gè)特點(diǎn)方便了驅(qū)動(dòng)功能模塊的開發(fā)。Linux系統(tǒng)支持兩種模塊調(diào)用方式:一種是靜態(tài)編譯,直接編譯進(jìn)內(nèi)核,在系統(tǒng)啟動(dòng)時(shí)就運(yùn)行;另外一種是動(dòng)態(tài)加載,在內(nèi)核運(yùn)行時(shí)
8、,用insmodrmmod實(shí)現(xiàn)模塊的加載和刪除功能。在嵌入式系統(tǒng)開發(fā)中,一般采用動(dòng)態(tài)加載方式,避免了系統(tǒng)頻繁重啟。當(dāng)最終發(fā)布產(chǎn)品時(shí),可以把模塊直接編譯進(jìn)內(nèi)核。這種處理方式比較簡單,且效率高。Linux系統(tǒng)中,內(nèi)存地址主要涉及以下幾個(gè)概念:物理地址、內(nèi)核虛擬地址(包括內(nèi)核邏輯地址)和進(jìn)程虛擬地址。在內(nèi)核層,當(dāng)內(nèi)核要訪問某內(nèi)存空間時(shí),用的是內(nèi)核虛擬地址,再由MMU(存儲器管理單元)將內(nèi)核虛擬地址轉(zhuǎn)換為物理地址。采用虛擬內(nèi)存技術(shù),每個(gè)進(jìn)程都有互不干涉的虛擬空間。三者直接映射的關(guān)系如圖2所示,其中內(nèi)核函數(shù)zap_page_range完成去掉物理地址與進(jìn)程虛擬地址映射關(guān)系的功能。.21 驅(qū)動(dòng)結(jié)構(gòu)在Lin
9、ux中,設(shè)備也是作為文件來訪問的。VFS(虛擬文件系統(tǒng))為各種不同的文件系統(tǒng)提供了統(tǒng)一的訪問接口,通過這些接口,應(yīng)用程序可以直接使用open、read和IOctl等系統(tǒng)調(diào)用對設(shè)備進(jìn)行訪問和控制。本例中,把HPI作為一個(gè)外圍設(shè)備,其驅(qū)動(dòng)主要實(shí)現(xiàn)對設(shè)備的打開、關(guān)閉、內(nèi)存映射、視頻數(shù)據(jù)緩沖區(qū)管理和物理內(nèi)存切換等功能。根據(jù)原理圖,可以確定HPI 四個(gè)寄存器對應(yīng)的物理地址,在驅(qū)動(dòng)初始化過程中,調(diào)用ioremap_uncache函數(shù)把物理地址映射為內(nèi)核虛擬地址,在驅(qū)動(dòng)層通過內(nèi)核虛擬地址訪問 HPI的4個(gè)寄存器。存儲器映射IO把HPI驅(qū)動(dòng)分配的數(shù)據(jù)空間直接映射到應(yīng)用程序的虛擬地址空間,應(yīng)用程序直接訪問該空間
10、,避免了用readwrite系統(tǒng)調(diào)用導(dǎo)致的視頻數(shù)據(jù)二次拷貝。在內(nèi)核里,由驅(qū)動(dòng)分配一定的緩存,當(dāng)應(yīng)用程序不能及時(shí)處理DSP發(fā)送過來的視頻數(shù)據(jù),可以緩存這些數(shù)據(jù);當(dāng)應(yīng)用程序處理完一幀圖像時(shí),采用Linux的物理內(nèi)存切換技術(shù),把下一幀數(shù)據(jù)所在的物理地址重映射到應(yīng)用程序的同一虛擬地址,這樣,應(yīng)用程序不用頻繁調(diào)用mmap函數(shù)映射內(nèi)存。22 存儲器映射IO一般情況下,當(dāng)應(yīng)用程序用readwrite讀寫設(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)信息,對系統(tǒng)性能幾乎沒有影響。但是,如果一次傳輸?shù)臄?shù)
11、據(jù)量比較大,比如視頻顯卡上的實(shí)時(shí)視頻圖像,兩次拷貝將大大影響系統(tǒng)的數(shù)據(jù)處理效率。這時(shí),可采用存儲器映射IO技術(shù),在內(nèi)核層存儲器映射IO由函數(shù) remap_page_range完成。由remap_page_range函數(shù)的原型可以知道,該函數(shù)的意義在于通過將特定物理地址映射到進(jìn)程虛擬地址,進(jìn)程可以訪問特定的物理地址,而這在普通情況下是不可能的。在本例中,當(dāng)進(jìn)程調(diào)用mmap函數(shù)進(jìn)行存儲映射時(shí),內(nèi)核會(huì)調(diào)用驅(qū)動(dòng)注冊的hpi_mmap函數(shù),傳入的參數(shù)之一包括進(jìn)程虛擬地址。在 hpi_mmap函數(shù)里,調(diào)用remap_page_range完成從緩沖區(qū)物理地址到進(jìn)程虛擬地址的映射。hpi_mmap函數(shù)實(shí)現(xiàn)如下
12、:其中vm_flags字段設(shè)置了VM_RESERVED,表示該數(shù)據(jù)緩沖區(qū)一直常駐內(nèi)存,在內(nèi)存不足時(shí),不會(huì)被交換出去。內(nèi)核和進(jìn)程同時(shí)對數(shù)據(jù)緩沖區(qū)讀寫,為了保證數(shù)據(jù)的一致性,對該區(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)程對該虛擬地址的訪問,最終變?yōu)閷ξ锢淼刂稢ACHE_PHY的訪問。23 數(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)
13、核啟動(dòng)時(shí),可以傳人參數(shù)mem=PHY_LEN,指定存儲空間的大小。在本例中,內(nèi)核啟動(dòng)時(shí)為HPI驅(qū)動(dòng)預(yù)留8 MB的高端物理內(nèi)存。在本例中,借助Linux中對普通外設(shè)IO內(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)請參閱內(nèi)核源碼中resource結(jié)構(gòu)相關(guān)部分。.重映射新一幀視頻數(shù)據(jù)到進(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ù)據(jù)的效率。實(shí)現(xiàn)代碼如下:結(jié) 語在當(dāng)前視頻處理平臺上,視頻處理、視頻傳輸、復(fù)雜任
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 舊貨零售與城市懷舊情感考核試卷
- 毛皮制品加工行業(yè)質(zhì)量管理工具與方法考核試卷
- 智能穿戴設(shè)備在圖書館管理與閱讀體驗(yàn)優(yōu)化中的應(yīng)用考核試卷
- 森林公園生態(tài)旅游產(chǎn)品開發(fā)與推廣考核試卷
- 器件在電力系統(tǒng)黑啟動(dòng)解決方案中的作用考核試卷
- 放射性金屬礦的氣體排放與減排技術(shù)考核試卷
- 水產(chǎn)罐頭原料品質(zhì)鑒定與篩選技巧考核試卷
- 植物油精煉工藝與技術(shù)考核試卷
- 基于客戶反饋的產(chǎn)品改進(jìn)計(jì)劃
- 前沿技術(shù)在課堂教學(xué)中的應(yīng)用計(jì)劃
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫參考答案
- (部編版2025新教材)道德與法治一年級下冊-第1課《有個(gè)新目標(biāo)》課件
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 中國對蝦養(yǎng)殖技術(shù)操作規(guī)范.docx
- 巡檢記錄表模板
- comsol學(xué)生操作手冊4函數(shù)定義用戶指南
- 出口退稅手冊核銷操作步驟
- 潘通色卡TCX棉布色彩電子版查詢部分
- 第三章社科信息檢索原理與技術(shù)PPT課件
- 《當(dāng)代廣播電視概論》試題A卷及答案
- DELL-PS系列存儲安裝手冊
評論
0/150
提交評論