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

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于DSP/BIOS的數(shù)字電視傳輸流網(wǎng)絡(luò)采集系統(tǒng)設(shè)計(jì)

          基于DSP/BIOS的數(shù)字電視傳輸流網(wǎng)絡(luò)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2010-05-12 來(lái)源:網(wǎng)絡(luò) 收藏


          軟件

          的軟件主要是通過(guò)TCP/IP開(kāi)發(fā)包NDK來(lái)實(shí)現(xiàn)的。該開(kāi)發(fā)包支持TCP/IP協(xié)議,并占用較少的資源。NDK僅用200kB~250kB的程序空間和95kB的數(shù)據(jù)空間即可支持常規(guī)的TCP/IP服務(wù)。所以,NDK很適合目前嵌入式系統(tǒng)的硬件環(huán)境,是實(shí)現(xiàn)開(kāi)發(fā)的重要工具。

          系統(tǒng)軟件的框圖如圖4所示。



          圖4 軟件系統(tǒng)圖

          具體流程:系統(tǒng)配置主要在初始化函數(shù)中完成,此初始化函數(shù)將在.cinit初始化后,并在/初始化和main函數(shù)之前調(diào)用。系統(tǒng)配置需要開(kāi)啟INT8中斷,也就是EDMA中斷,并設(shè)置GPIO7引腳為高電平,從而使PLD模塊始終處于初始狀態(tài)。TCP/IP協(xié)議配置在任務(wù)線程中完成,主要實(shí)現(xiàn)服務(wù)器IP地址和網(wǎng)關(guān)的配置。當(dāng)其完成后,系統(tǒng)就會(huì)觸發(fā)一個(gè)軟件中斷,在軟件中斷程序中,服務(wù)器會(huì)產(chǎn)生一個(gè)用于偵聽(tīng)的端口,并開(kāi)始偵聽(tīng)上的請(qǐng)求。此時(shí),服務(wù)器已經(jīng)處于待命狀態(tài),等待客戶機(jī)的請(qǐng)求。

          當(dāng)客戶機(jī)的請(qǐng)求到來(lái)時(shí),系統(tǒng)首先會(huì)使GPIO7引腳變?yōu)榈碗娖?,PLD模塊開(kāi)始發(fā)送數(shù)據(jù)。當(dāng)其接收到一個(gè)完整的傳輸流數(shù)據(jù)包后,就會(huì)發(fā)一個(gè)中斷給,DSP啟動(dòng)EDMA,用ping-pong的方式接收數(shù)據(jù)進(jìn)入特定的存儲(chǔ)器,當(dāng)接收完一個(gè)完整的傳輸流數(shù)據(jù)包后,會(huì)產(chǎn)生硬件EDMA中斷,中斷程序主要是設(shè)置特定的標(biāo)志位為1,然后退出硬件中斷,重新回到軟件中斷程序。當(dāng)軟件中斷程序檢測(cè)到特定的標(biāo)志位為1時(shí),就會(huì)開(kāi)始傳輸在存儲(chǔ)器中的傳輸流數(shù)據(jù)包給客戶機(jī)。當(dāng)一個(gè)數(shù)據(jù)包傳輸完畢后,特定的標(biāo)志會(huì)被置0,系統(tǒng)等待下一個(gè)數(shù)據(jù)包的到來(lái)。

          當(dāng)客戶機(jī)要求停止傳輸?shù)恼?qǐng)求到來(lái)時(shí),系統(tǒng)會(huì)重新使GPIO引腳變?yōu)楦唠娖?,PLD模塊回到初試狀態(tài)。此時(shí),系統(tǒng)也會(huì)處于待命狀態(tài),繼續(xù)偵聽(tīng)網(wǎng)絡(luò)。

          系統(tǒng)初始化

          初始化配置主要包括EMIF總線配置、中斷配置和底層網(wǎng)絡(luò)配置3個(gè)部分。初始化工作首先在DSP/的全局參數(shù)配置窗口進(jìn)行設(shè)置,然后調(diào)用初始化函數(shù)進(jìn)行配置。

          在DSP/的全局配置窗口主要設(shè)置了DSP的工作時(shí)鐘頻率為600MHz,選擇使用的片級(jí)支持庫(kù)CSL為DM643的庫(kù),選用小端訪問(wèn)模式,片內(nèi)256kB的SRAM全部用于Cache,并調(diào)用初始化函數(shù)dm643_init()。

          TCP/IP協(xié)議配置

          初始化程序dm643_init()完成后,系統(tǒng)將進(jìn)入各個(gè)線程。首先,系統(tǒng)會(huì)觸發(fā)任務(wù)線程TSK0,在TSK0任務(wù)線程中執(zhí)行函數(shù)StackTest(),其首先調(diào)用NC-SystemOpen()函數(shù),完成協(xié)議棧及其所需內(nèi)存的初始化,然后新建一個(gè)系統(tǒng)配置句柄hCfg = CfgNew();,并實(shí)現(xiàn)服務(wù)器IP地址和網(wǎng)關(guān)的配置。在本系統(tǒng)中,IP地址配置為192.168.0.2;子網(wǎng)掩碼為255.255.255.0;網(wǎng)關(guān)地址為192.168.0.1。配置好之后,系統(tǒng)會(huì)觸發(fā)一個(gè)軟件中斷,并做好偵聽(tīng)網(wǎng)絡(luò)的準(zhǔn)備。

          網(wǎng)絡(luò)偵聽(tīng)

          前面在任務(wù)線程中已經(jīng)配置了IP地址和網(wǎng)關(guān),下面就要在軟件中斷中設(shè)置端口并進(jìn)行偵聽(tīng)。首先,在開(kāi)始使用報(bào)路之前,必須分配一個(gè)文件環(huán)境fdOpenSession( TaskSelf() )給這個(gè)報(bào)路。接著就可以創(chuàng)建一個(gè)報(bào)路對(duì)象stcp = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP),并設(shè)置端口sin1.sin_port = htons(1000),在這里設(shè)置端口號(hào)為1000,當(dāng)然也可以設(shè)置其他的端口號(hào)。然后把端口號(hào)與報(bào)路對(duì)象綁定bind( stcp, (PSA) sin1, sizeof(sin1)。最后進(jìn)入偵聽(tīng)狀態(tài)listen( stcp, 1)。

          數(shù)據(jù)的接收

          當(dāng)客戶端要求傳輸數(shù)據(jù)的信號(hào)到來(lái)后,系統(tǒng)會(huì)使GPIO7引腳變?yōu)榈碗娖?,PLD模塊開(kāi)始發(fā)送數(shù)據(jù)。DSP通過(guò)EDMA方式來(lái)接收數(shù)據(jù)。EDMA可以在沒(méi)有CPU參與的情況下,由EDMA控制器完成DSP存儲(chǔ)空間內(nèi)的數(shù)據(jù)搬移。系統(tǒng)主要采用EDMA的ping-pong方式來(lái)連續(xù)接收數(shù)據(jù)。用ping-pong方式的目的是為了使接收操作和發(fā)送操作分開(kāi)進(jìn)行,增強(qiáng)程序的操作性和可讀性。

          限于篇幅,網(wǎng)絡(luò)發(fā)送部分不再贅述。

          結(jié)語(yǔ)

          本系統(tǒng)的硬件和軟件功能已經(jīng)實(shí)現(xiàn),網(wǎng)絡(luò)傳輸?shù)乃俣葹?MBps。按照此速度,假設(shè)傳輸流中的空包百分比為40%,可以傳輸5MBps的傳輸流數(shù)據(jù),至少可以傳輸2~3路的TS流節(jié)目。因此,可以證明本系統(tǒng)的方法合理、有效。

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

          tcp/ip相關(guān)文章:tcp/ip是什么



          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(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); })();