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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式系統(tǒng)的實時數(shù)據(jù)接口擴展

          嵌入式系統(tǒng)的實時數(shù)據(jù)接口擴展

          作者: 時間:2011-08-01 來源:網(wǎng)絡(luò) 收藏

          針對所采用的 CPU 沒有 MMU,選用了目前在中被廣泛使用的μClinux。μClinux 是從標(biāo)準(zhǔn)的Linux 2.0 內(nèi)核發(fā)展而來的,但其源代碼針對典型的應(yīng)用已經(jīng)作了許多精簡和修改,使得其內(nèi)核比標(biāo)準(zhǔn)的 Linux 內(nèi)核要小很多,不過它仍然保留了標(biāo)準(zhǔn) Linux的主要特色。

          目前最新的μClinux 版本已經(jīng)支持 S3C4510B 及典型開發(fā)板,如果所采用的 CPU 及開發(fā)板沒有被支持,應(yīng)根據(jù)實際情況移植。此外,由于在外部總線接了 CPLD和 FIFO,為了使應(yīng)用程序能訪問它,需要在μClinux 下開發(fā)相應(yīng)的驅(qū)動程序。

          2

          2.1 應(yīng)用要求

          將上述應(yīng)用于多媒體的網(wǎng)絡(luò)傳輸,如圖2所示。這里的多媒體可以是 MPEG-4或 MPEG-2 等,其流一般是連續(xù)、恒定碼率的。

          2.2 硬件

          根據(jù)上述數(shù)據(jù)流的特點,需在嵌入式與外設(shè)(編、解碼器)之間加入數(shù)據(jù)緩沖控制單元。對于發(fā)送端和接收端,數(shù)據(jù)緩沖控制單元的設(shè)計有所不同,下面以MPEG-2 為例說明。這里考慮系統(tǒng)的處理能力、網(wǎng)絡(luò)的承受能力以及圖像質(zhì)量,MPEG-2 的輸出為 4Mbps 的CBR(固定比特率)TS流。

          2.2.1 發(fā)送端

          編碼器送出連續(xù)、恒定速率的碼流。如果將此碼流直接送到 CPU 外部總線,將會導(dǎo)致操作系統(tǒng)頻繁地處理中斷,甚至?xí)a(chǎn)生中斷不能及時處理從而導(dǎo)致數(shù)據(jù)丟失。因此,有必要在編碼器與外部總線之間加上 FIFO,同時用 CPLD 實現(xiàn) FIFO 的讀寫控制邏輯。編碼器送出的數(shù)據(jù)流連續(xù)不斷地以恒定速率寫入FIFO;當(dāng)FIFO中的數(shù)據(jù)積聚到一定值后,每寫入若干個數(shù)據(jù)就向CPU發(fā)一個中斷;CPU在收到中斷后通過外部總線讀入相當(dāng)量的數(shù)據(jù),并將其打包送入網(wǎng)絡(luò)。正常情況下,每個中斷讀數(shù)據(jù)個數(shù)是一定的,在一段時間內(nèi)FIFO寫入和讀出將維持平衡,且不會產(chǎn)生“饑餓”狀態(tài);當(dāng)操作系統(tǒng)因處理別的任務(wù)而沒有及時響應(yīng)中斷時,F(xiàn)IFO將暫時進入“飽和”狀態(tài),但只要FIFO容量足夠大就不會產(chǎn)生數(shù)據(jù)溢出現(xiàn)象。由于CPU從FIFO讀取單位數(shù)據(jù)的速度大大高于外設(shè)向FIFO寫單位數(shù)據(jù)的速度,“飽和”狀態(tài)一般能消除。由此,可以解決前述問題。

          2.2.2 接收端

          在接收端,由于解碼器的輸入要求是一個連續(xù)、恒定速率的碼流,同樣要求在CPU外部總線與編碼器之間加上FIFO和CPLD。同時,接收端的數(shù)據(jù)包由于經(jīng)過了網(wǎng)絡(luò),不可避免地會引入延時,且數(shù)據(jù)包之間的延時是不確定的,甚至?xí)a(chǎn)生數(shù)據(jù)包的丟失。這些都需要在接收端予以考慮,增加了接收端數(shù)據(jù)緩沖控制單元的復(fù)雜度。

          為了解決數(shù)據(jù)包到達(dá)延時及抖動問題(數(shù)據(jù)包的丟失將間接導(dǎo)致延時的增加),可以簡單地靠增大FIFO容量解決。但增大FIFO將意味著從編碼器到解碼器之間延時的增加,影響了實時性。因此,為了保證一定的實時性,同時考慮成本因素,不能單純靠增大FIFO解決。

          由于FIFO容量的限制,在出現(xiàn)大延時的情況下,F(xiàn)IFO將可能出現(xiàn)“空”狀態(tài)。這意味著送給解碼器的數(shù)據(jù)流會有中斷,從而可能導(dǎo)致解碼器的不正常工作并可能不能恢復(fù)(在數(shù)據(jù)流恢復(fù)正常后)。為此,需要在FIFO出現(xiàn)“空”狀態(tài)之前,即處于“饑餓”狀態(tài)時(可以設(shè)置一個閾值),由CPLD停止向FIFO讀數(shù)據(jù)而向解碼器發(fā)填充包。填充包中含有同步頭,可以維持解碼器的同步。短時間的插空包會使視頻圖像出現(xiàn)馬賽克,如果時間過長,可能會出現(xiàn)黑屏。在實際試驗中,接收端視頻的質(zhì)量與網(wǎng)絡(luò)的負(fù)載情況有關(guān)。當(dāng)網(wǎng)絡(luò)負(fù)載較重時,圖像會出現(xiàn)馬賽克,黑屏現(xiàn)象一般極少發(fā)生。

          2.3 驅(qū)動程序

          為了使μClinux下的應(yīng)用程序能通過外部總線訪問FIFO,需要編寫相應(yīng)的驅(qū)動程序。驅(qū)動程序主要包括三個基本部分,即CPU相關(guān)寄存器的初始化設(shè)置以及CPU對外部I/O口的讀操作和寫操作。其中,初始化設(shè)置主要包括中斷號及其類型設(shè)置、外部I/O口數(shù)據(jù)位寬度和讀寫時序設(shè)置等。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();