摘要:介紹了一種以Samsung公司的ARM7TDMI CPU S3C4510B為核心、μCUnux 為操作系統(tǒng)的嵌入式系統(tǒng)應(yīng)用于MPEC-2或MPEG-4等實時多媒體數(shù)據(jù)的網(wǎng)絡(luò)傳輸所面臨的問題,并提出了相應(yīng)的解決方案。
嵌入式系統(tǒng)目前已廣泛應(yīng)用于信息家電、網(wǎng)絡(luò)通信和工業(yè)控制等各個領(lǐng)域。典型的嵌入式系統(tǒng)主要由嵌入式硬件和軟件構(gòu)成,其中硬件部分的核心為嵌入式處理器。與通用處理器相比,其在功耗、體積、成本等方面都受到應(yīng)用要求的制約。嵌入式系統(tǒng)的軟件部分可以像計算機一樣使用操作系統(tǒng),目前已有許多成熟嵌入式操作系統(tǒng),如VxWorks、pSOS、Nucleus、Windows CE 以及嵌入式Linux 等。當(dāng)然,在一些簡單應(yīng)用中許多嵌入式系統(tǒng)的軟件并沒有使用操作系統(tǒng),只有一些循環(huán)控制。這樣,軟件復(fù)雜度大大降低,從而減少存儲器的容量要求,但是這樣的軟件在重復(fù)使用、網(wǎng)絡(luò)支持等方面的能力相對較弱。
ARM系列內(nèi)核是目前嵌入式處理器中廣泛使用的內(nèi)核。采用ARM內(nèi)核的處理器具有體積小、功耗低、成本低和性能高的特點。在全球有眾多生產(chǎn)ARM內(nèi)核處理器的廠商。
Linux是一種很受歡迎的開放源碼操作系統(tǒng),原先被設(shè)計應(yīng)用于桌面系統(tǒng),后被廣泛應(yīng)用于服務(wù)器。由于其開放源碼和內(nèi)核可裁減等特性,Linux逐漸被修改用于嵌入式領(lǐng)域。目前已有多個嵌入式應(yīng)用的版本,μClinux 是其中的一個分支,最早被設(shè)計應(yīng)用于微控制領(lǐng)域。其最大特征就是沒有MMU(內(nèi)存管理單元),很適合于許多低端的、沒有MMU的嵌入式處理器。
本文設(shè)計了一種嵌入式系統(tǒng)用于多媒體實時數(shù)據(jù)的網(wǎng)絡(luò)傳輸。ARM內(nèi)核處理器與嵌入式 Linux 是目前嵌入式應(yīng)用中的一種典型組合,選用了 Samsung 公司的16/32位ARM7TDMI 內(nèi)核的網(wǎng)絡(luò)處理器 S3C4510B 為嵌入式硬件核心,μClinux 為操作系統(tǒng)。該系統(tǒng)支持完整的TCP/IP協(xié)議以及許多其它的網(wǎng)絡(luò)協(xié)議,同時它具有很低的成本。
1 嵌入式系統(tǒng)的構(gòu)成
1.1 硬件系統(tǒng)
嵌入式硬件系統(tǒng)主要由 CPU、Flash ROM、SDRAM、以太網(wǎng)物理層、FIFO以及CPLD等芯片構(gòu)成,如圖1所示。
(1) CPU
本系統(tǒng)采用了 ARM7TDMI 內(nèi)核的 RISC 處理器S3C4510B。該芯片具有如下一些主要特點:
8/16/32位的外部總線支持 ROM、RAM、Flash 存儲器、DRAM 和外部I/O;
·8K 字節(jié)的 Cache;
·一個帶 MII 接口的100Mbps/10Mbps 以太網(wǎng)控制器;
·兩個 UART 通道;
·兩個通用 DMA 通道;
·兩個 HDLC 通道;
·18個通用I/0通道;
·兩個32位定時器;
·共有21個中斷源,其中4個用于外部中斷;
·一個內(nèi)部 PLL 用于提供高頻率的系統(tǒng)時鐘,最高系統(tǒng)時鐘可達(dá)50MHz。
由此可見,S3C4510B 很適用于低端的網(wǎng)絡(luò)設(shè)備,如集線器、交換機、家庭網(wǎng)關(guān)等。
(2)Flash ROM 和 SDRAM
Flash ROM 和 SDRAM 構(gòu)成了系統(tǒng)的存儲空間。其中Flash ROM 作為程序存儲器,用于存放操作系統(tǒng)、應(yīng)用程序等;SDRAM為系統(tǒng)內(nèi)存。
(3)以太網(wǎng)物理層和串行接口芯片
CPU 內(nèi)部的以太網(wǎng)控制器只提供了MAC(媒體接入控制器),需在外部接一個物理層芯片完成編解碼和時鐘恢復(fù)等功能。串行接口芯片主要完成串行線路接口的電平轉(zhuǎn)換。
(4)CPLD 和 FIFO
為了能使系統(tǒng)支持實時數(shù)據(jù)通信,需要在外設(shè)和嵌入式系統(tǒng)的外部總線之間加上 FIFO 和CPLD。FIFO 用于數(shù)據(jù)緩沖,CPLD 用于產(chǎn)生 FIFO控制邏輯和外部總線控制邏輯。
1.2 操作系統(tǒng)
ARM7TDMI 內(nèi)核已被眾多的嵌入式操作系統(tǒng)所支持,如 VxWorks、pSOS 及 Nucleus 等。這些商業(yè)化操作系統(tǒng)在網(wǎng)絡(luò)和用戶圖形界面等方面都有很好的支持,并且在穩(wěn)定性和實時性方面都有相應(yīng)的保證,但其價格也相當(dāng)高。這里選用了開放源碼的嵌入式 Linux,它一般免費或花較少的費用就可得到,同時它在網(wǎng)絡(luò)和圖形界面方面也有很好的支持。另外,嵌入式 Linux 的高度模塊化使它可以根據(jù)實際應(yīng)用需要靈活配置,能有效精簡內(nèi)核代碼。嵌入式 Linux 具有很高的穩(wěn)定性。在實時性方面,盡管 Linux 本身未作過多關(guān)注,但可通過打?qū)崟r Linux(RTLinux)補丁解決。
針對所采用的 CPU 沒有 MMU,選用了目前在嵌入式系統(tǒng)中被廣泛使用的μ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 實時數(shù)據(jù)接口的擴展
2.1 應(yīng)用要求
將上述嵌入式系統(tǒng)應(yīng)用于實時多媒體數(shù)據(jù)的網(wǎng)絡(luò)傳輸,如圖2所示。這里的實時多媒體可以是 MPEG-4或 MPEG-2 等,其數(shù)據(jù)流一般是連續(xù)、恒定碼率的。
2.2 硬件擴展
根據(jù)上述數(shù)據(jù)流的特點,需在嵌入式系統(tǒng)與外設(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將暫時進(jìn)入“飽和”狀態(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è)置等。
- 嵌入式系(13886)
- 接口擴展(8295)
相關(guān)推薦
嵌入式實時數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)
0嵌入式系統(tǒng)知識和接口技術(shù)總結(jié)
455
嵌入式系統(tǒng)U盤實時啟動技術(shù)
嵌入式系統(tǒng)設(shè)計(一)
33嵌入式系統(tǒng)
11嵌入式系統(tǒng)學(xué)習(xí)筆記之QNX
10嵌入式軟件接口怎么測試,嵌入式系統(tǒng)接口測試策略.doc
13嵌入式實時操作系統(tǒng)的應(yīng)用詳細(xì)教程說明
2嵌入式系統(tǒng)教程之嵌入式系統(tǒng)設(shè)計與實例開發(fā)電子教材免費下載
28必讀:嵌入式系統(tǒng)基礎(chǔ)及知識及接口技術(shù)總結(jié)
1793嵌入式高速實時數(shù)據(jù)采集系統(tǒng)設(shè)備驅(qū)動程序的研究
1嵌入式實時系統(tǒng)及其在通信系統(tǒng)中的應(yīng)用
2430
基于DSP的嵌入式系統(tǒng)人機接口設(shè)計
1099
基于嵌入式實時系統(tǒng)設(shè)計模式的設(shè)計
2228
實時操作系統(tǒng)用于嵌入式應(yīng)用系統(tǒng)的設(shè)計
42嵌入式系統(tǒng)的實時數(shù)據(jù)接口擴展研究
900
嵌入式系統(tǒng)U盤實時啟動技術(shù)
1500嵌入式系統(tǒng)及其實時軟件的開發(fā)
55基于ARM的藍(lán)牙實時數(shù)據(jù)采集系統(tǒng)的設(shè)計
1078
嵌入式實時數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)
29嵌入式Linux組態(tài)軟件實時數(shù)據(jù)庫的設(shè)計
17DSP嵌入式系統(tǒng)人機接口設(shè)計
749
基于嵌入式TCP IP的實時數(shù)據(jù)傳輸
38Java在基于WEB的嵌入式系統(tǒng)中的應(yīng)用
31實時仿真與嵌入式系統(tǒng)
21基于Linux的嵌入式實時數(shù)據(jù)庫的設(shè)計
10基于RTAI實時數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計
12基于嵌入式Web實時監(jiān)控系統(tǒng)的設(shè)計
3132位ARM嵌入式系統(tǒng)擴展USB接口設(shè)計
10基于GPRS網(wǎng)絡(luò)的嵌入式系統(tǒng)的研究
17工控應(yīng)用系統(tǒng)中嵌入式數(shù)據(jù)庫實時性研究
16嵌入式實時數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)研究
20嵌入式實時數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)研究
8USB- HOST 實時數(shù)據(jù)采集嵌入式模塊的實現(xiàn)
13嵌入式實時操作系統(tǒng)教程
43USB- HOST實時數(shù)據(jù)采集嵌入式模塊的實現(xiàn)
13嵌入式實時系統(tǒng)及其在煙機中的應(yīng)用
9
電子發(fā)燒友App


評論