基于uC/OS-II的視頻監(jiān)控終端無線網(wǎng)絡接口設計
引言
本文研究的森林火災視頻監(jiān)控終端采用mC/OS-II作為嵌入式操作系統(tǒng),為了支持 GPRS網(wǎng)絡通信,系統(tǒng)需要PPP或SLIP協(xié)議的支持。由于mC/OS-II不包括TCP/IP協(xié)議棧,所以要編寫設備的網(wǎng)絡接口。本文選用免費的 TCP/IP協(xié)議棧LwIP v0.6.4作為設計核心,在mC/OS-II上移植了LwIP以實現(xiàn)TCP/IP協(xié)議棧,從而獲得了一個功能完善的嵌入式IP終端。
視頻監(jiān)測終端網(wǎng)絡接口原理
圖像監(jiān)控系統(tǒng)工作流程
工作時,圖像監(jiān)控系統(tǒng)首先將接收服務器連入Internet,取得服務器的公網(wǎng)IP地址,確定服務的端口號,并將IP地址及端口信息以短消息方式發(fā)送給遠程站點的視頻監(jiān)控儀模塊。視頻監(jiān)控儀模塊通過GPRS-Modem模塊連入Internet后即可與接收服務器連線。視頻監(jiān)控儀在正常工作時(無火警)僅定時上傳含有本地特征編碼的短消息,接收服務器軟件會根據(jù)收到的短消息來分析各監(jiān)控儀的狀態(tài)并進行顯示。當視頻監(jiān)控儀檢測到火警時,它會將火災信息編碼,以短消息形式傳遞到服務器,同時啟動視頻圖像壓縮及上傳服務,供接收服務器分析判斷。
圖1 GPRS傳輸模塊工作原理
GPRS傳輸模塊工作原理
視頻監(jiān)控終端的GPRS傳輸模塊原理如圖1所示,西門子公司的 MC35 GPRS模塊把從TCP/IP模塊接收的TCP/IP包和從基站接收的GPRS分組數(shù)據(jù)進行相應的協(xié)議處理后再轉(zhuǎn)發(fā)。MC35模塊主要由射頻天線、內(nèi)部 Flash、SRAM、GSM基帶處理器、匹配電源和一個40腳的ZIF插座組成。GSM基帶處理器是核心部件,其作用相當于一個協(xié)議處理器,用來處理外部系統(tǒng)通過串口發(fā)送過來的AT指令。射頻天線部分主要實現(xiàn)信號的調(diào)制與解調(diào),以及外部射頻信號與內(nèi)部基帶處理器之間的信號轉(zhuǎn)換。匹配電源為處理器及射頻部分提供所需的電源。MC35 GPRS模塊支持GSM900和GSMl800雙頻網(wǎng)絡,接收速率可達86.20kbps,發(fā)送速率可達21.5kbps。MC35模塊提供了9針的標準 RS232接口,通過MAX3232電平轉(zhuǎn)換芯片和LPC2104的UART0口相連,進行全雙工通信。MC35工作電壓為12V,上電后由DTR上升沿跳變觸發(fā)啟動。本系統(tǒng)指定LPC2104的P0.13信號線經(jīng)MAX3232電平轉(zhuǎn)換后作為MC35的DTR。系統(tǒng)上電復位后,首先進行工作頻率等參數(shù)設置,然后進行撥號和PPP協(xié)商,得到系統(tǒng)本地IP,完成GPRS的Internet接入。ARM CPU將用戶數(shù)據(jù)先打成IP包,再經(jīng)串口發(fā)送給MC35,MC35把其封裝成GPRS分組數(shù)據(jù)包傳到GPRS網(wǎng)絡?!?/p>
網(wǎng)絡接口協(xié)議
本系統(tǒng)的視頻監(jiān)控儀網(wǎng)絡通信分層結構如圖2所示,GPRS服務節(jié)點和網(wǎng)關節(jié)點等GPRS內(nèi)部節(jié)點都簡化抽象為GPRS網(wǎng)絡,GPRS內(nèi)部協(xié)議及Internet網(wǎng)關協(xié)議等都簡化抽象為GPRS網(wǎng)關協(xié)議。
視頻監(jiān)控終端網(wǎng)絡通信各層的作用如下。
物理層:ARM CPU利用AT指令對GPRS Modem進行撥號。反饋應答后,一條物理通道即GPRS信道就在本系統(tǒng)中的GPRS Modem和Internet之間建立起來。
數(shù)據(jù)鏈路層:PPP協(xié)議將原始的GPRS物理層連接改造成無差錯的數(shù)據(jù)鏈路,系統(tǒng)遠程登錄Internet,并得到GPRS網(wǎng)關分配的A類IP地址。
網(wǎng)絡層:采用IP協(xié)議作為網(wǎng)絡層協(xié)議。IP協(xié)議將接入Internet、具有不同IP地址的終端都聯(lián)系起來。經(jīng)過IP路由選擇,可以令本系統(tǒng)與連在Internet上的任一IP終端進行數(shù)據(jù)交互。
傳輸層:選擇TCP作為傳輸層協(xié)議,為數(shù)據(jù)傳輸提供面向連接的可靠服務。
圖2 視頻監(jiān)控儀網(wǎng)絡通信分層結構
視頻監(jiān)測終端網(wǎng)絡接口軟件設計
LwIP在mC/OS-II上的實現(xiàn)
LwIP協(xié)議棧在設計時就考慮到了將來的移植問題,因此把所有與硬件、操作系統(tǒng)、編譯器相關的部份都獨立出來,放在/src/arch目錄下。 LwIP在mC/OS-II上的實現(xiàn)就是要修改該目錄下的文件,其它的文件一般不應該修改,主要的工作包括以下幾部分。
與CPU或編譯器
相關的include文件
在/src/arch/include/arch 目錄下的cc.h、cpu.h、perf.h中有一些與CPU或編譯器相關的定義,如數(shù)據(jù)長度、字的高低位順序等,這應該與用戶實現(xiàn)mC/OS-II時定義的數(shù)據(jù)長度等參數(shù)一致。一般情況下C語言的結構體struct是4字節(jié)對齊的,但是在處理數(shù)據(jù)包的時候,LwIP是通過結構體中不同數(shù)據(jù)的長度來讀取相應數(shù)據(jù)的,所以,一定要在定義struct的時候使用_packed關鍵字,讓編譯器放棄struct的字節(jié)對齊。
sys_arch操作系統(tǒng)相關部份
sys_arch. [ch]中的內(nèi)容是與操作系統(tǒng)相關的一些結構和函數(shù)。mC/OS-II實現(xiàn)了消息隊列結構OSQ及其操作,但沒有對消息隊列中的消息進行管理,因此不能直接使用,必須重新實現(xiàn)。對隊列本身的管理可利用mC/OS-II自己的OSQ操作完成,然后使用mC/OS-II中的內(nèi)存管理模塊實現(xiàn)對消息的創(chuàng)建、使用、刪除回收,兩部分綜合起來即可形成LwIP的消息隊列功能。
sys_thread_new 創(chuàng)建新線程
在mC/OS-II 中,沒有線程(thread)的概念,只有任務(Task)。它已經(jīng)提供了創(chuàng)建新任務的系統(tǒng)API調(diào)用OSTaskCreate,因此只要把 OSTaskCreate封裝一下,就可以實現(xiàn)sys_thread_new。需要注意的是LwIP中的thread并沒有mC/OS-II中優(yōu)先級的概念,實現(xiàn)時要由用戶事先為LwIP中創(chuàng)建的線程分配好優(yōu)先級。
lib_arch中庫函數(shù)的實現(xiàn)
LwIP協(xié)議棧中用到了8個外部函數(shù),這些函數(shù)通常與用戶使用的系統(tǒng)或編譯器有關,因此應由用戶自己實現(xiàn)。
LwIP的設備驅(qū)動程序接口
LwIP與PPP的程序結構簡要描述如下:
#define NTHREADS 3
#define STACKSIZE( CYG NUM_HAL_STACK_SIZE_TYPICAL + 4096 )
#define NTHREADS 3
#define STACKSIZE ( CYG NUM_HAL_STACK_SIZE_TYPICAL + 4096 )
err = cyg_io_lookup( /dev/ser1, handle1 );
if (ENOERR == err) {
middleblink();
} else {
leftblink();
};
pppInit();
pppSetAuth(PPPAUTHTYPE_ PAP, pppuser,pppassword);
pd=pppOpen(handle1,ppp LinkStatus Callback,NULL);
void pppLinkStatusCallback (void * ctx, int errCode, void * arg) {
skipblink();
}
結語
本設計有機地結合了嵌入式終端設備和無線傳輸,符合嵌入式和無線網(wǎng)絡結合的發(fā)展趨勢。同時,這一接口設計也對其它視頻監(jiān)控系統(tǒng)的發(fā)展起到一定的借鑒意義。
tcp/ip相關文章:tcp/ip是什么
評論