




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于8051嵌入式系統(tǒng)的GPRS終端實(shí)現(xiàn)
摘要:介紹了基于GPRS網(wǎng)的數(shù)據(jù)傳輸、嵌入式實(shí)時(shí)操作系統(tǒng)u/OS-II以及小型TCP/IP協(xié)議棧uIP;深入論述了基于8051嵌入式系統(tǒng)的GPRS終端的實(shí)現(xiàn)。提供了一種羅為簡(jiǎn)單、廉價(jià)和實(shí)用的GPRS終端的實(shí)現(xiàn)方案,說(shuō)明了在8051中如何進(jìn)行uC/OS-II和uIP的移植。
關(guān)鍵詞:GPRS終端嵌入式系統(tǒng)實(shí)時(shí)操作系統(tǒng)TCP/IP
隨著數(shù)據(jù)無(wú)線傳輸需求的驟增和中畫(huà)移動(dòng)GPRS業(yè)務(wù)全面投入運(yùn)營(yíng),無(wú)線數(shù)據(jù)通信的應(yīng)用越來(lái)越廣泛。GPRS網(wǎng)不但具有覆蓋范圍廣、數(shù)據(jù)傳輸速度快、通信質(zhì)量高、永遠(yuǎn)在線和按流量計(jì)費(fèi)等優(yōu)點(diǎn),且其本身就是一個(gè)分組型數(shù)據(jù)網(wǎng),支持TCP/IP協(xié)議,無(wú)需經(jīng)過(guò)PSTN等網(wǎng)絡(luò)的轉(zhuǎn)接,可直接與Internet網(wǎng)互通。因此GPRS業(yè)務(wù)在無(wú)線上網(wǎng)、環(huán)境監(jiān)測(cè)、交通監(jiān)控、移動(dòng)辦公等行業(yè)中具有無(wú)可比擬的性價(jià)比優(yōu)勢(shì)。
為了滿足GPRS終端的低成本、小型化和移動(dòng)靈活等要求,現(xiàn)在廣泛采用單片機(jī)對(duì)GPRS終端進(jìn)行控制,并且引入嵌入式系統(tǒng)實(shí)現(xiàn)TCP/IP協(xié)議棧。目前主要的困難在于:運(yùn)行TCP/IP協(xié)議對(duì)計(jì)算機(jī)存儲(chǔ)器、運(yùn)算速度等要求較高,會(huì)占用大量的系統(tǒng)資源;而嵌入式系統(tǒng)大多采用8位單片機(jī),硬件資源非常有限,支持TCP/IP協(xié)議非常困難。本文采用了在嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-II中移植一種小型TCP/IP協(xié)議棧uIP的方法,使基于8051嵌入式系統(tǒng)的GPRS終端能夠在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸;同時(shí)改善了系統(tǒng)的性能,提高了系統(tǒng)的可靠性,增強(qiáng)了系統(tǒng)的可擴(kuò)展性和產(chǎn)品開(kāi)發(fā)的可延續(xù)性。
1基于GPRS網(wǎng)的數(shù)據(jù)傳輸
GPRS是在GSM的基礎(chǔ)上引入了分組控制單元(PCU)、服務(wù)支持節(jié)點(diǎn)(SGSN)和網(wǎng)關(guān)支持節(jié)點(diǎn)(GGSN)等新部件而構(gòu)成的無(wú)線數(shù)據(jù)傳輸系統(tǒng),其用戶能夠在端到端分組方式下發(fā)送和接收數(shù)據(jù)?;贕PRS網(wǎng)的數(shù)據(jù)傳輸系統(tǒng)如圖1所示。具體的數(shù)據(jù)傳輸流程為
·GPRS終端通過(guò)接口從客戶系統(tǒng)中取出用戶數(shù)據(jù);
·處理后以GPRS分組數(shù)據(jù)的形式發(fā)送到GSM基站(BSS);
·分組數(shù)據(jù)經(jīng)SGSN封裝后,發(fā)送到GPRSIP骨干網(wǎng);
·若分組數(shù)據(jù)是發(fā)送到另一GPRS終端,則先發(fā)送到目的SGSN,再經(jīng)BSS發(fā)送到CPBS終端;若分組數(shù)據(jù)是發(fā)送到外部網(wǎng)絡(luò)(如Internet),則將分組數(shù)據(jù)包經(jīng)GGSN進(jìn)行協(xié)議轉(zhuǎn)換后,發(fā)送到外部網(wǎng)絡(luò)。
2嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-II
uC/OS-II是由JeanJ.Labrosse先生編寫(xiě)的、現(xiàn)在流行的一種免費(fèi)公開(kāi)源代碼的實(shí)時(shí)操作系統(tǒng)。它可廣泛應(yīng)用于從8位到64位單片機(jī)的各種不同類(lèi)型、不同規(guī)模的嵌入式系統(tǒng)。帶有詳細(xì)注解的uC/OS-II源代碼只有200頁(yè)左右;其中95%左右是用C語(yǔ)言編寫(xiě)的,與MCU類(lèi)型相關(guān)的代碼用8088匯編寫(xiě)成,不超過(guò)200行。uC/OS-II不僅具有結(jié)構(gòu)小巧、可固化、可裁剪、多任務(wù)和可剝奪型的實(shí)時(shí)內(nèi)核等特點(diǎn);而且其實(shí)時(shí)性、穩(wěn)定性裙可靠性也得到了廣泛認(rèn)可。uC/OS-II的最小內(nèi)核可編譯至2KB,一般情況占用內(nèi)存在10KB數(shù)量級(jí),適用基于8051的嵌入式系統(tǒng)的需要。在系統(tǒng)中嵌入uC/OS-II可以把整個(gè)程序分成許多任務(wù),每個(gè)任務(wù)相對(duì)獨(dú)立,然后在每個(gè)任務(wù)中設(shè)置超時(shí)函數(shù),時(shí)間用完后,必須交出MCU的使用權(quán)。即使一個(gè)任務(wù)發(fā)生問(wèn)題,也不會(huì)影響其他任務(wù)的運(yùn)行。在單片機(jī)系統(tǒng)中嵌入uC/OS-II提高了系統(tǒng)的可靠性,并使調(diào)試程序變得簡(jiǎn)單,同時(shí)也增強(qiáng)了系統(tǒng)的可擴(kuò)展性和產(chǎn)品開(kāi)發(fā)的可延續(xù)性。
不過(guò)uC/OS-II僅僅是一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核,與商業(yè)實(shí)時(shí)操作系統(tǒng)軟件包比較,它缺少Utilities部分,如文件系統(tǒng)、遠(yuǎn)程函數(shù)調(diào)用庫(kù)、通信軟件庫(kù)。通信軟件包括:TCP/IP軟件庫(kù)、藍(lán)牙通信軟件庫(kù)、IrDA紅外通信軟件庫(kù)等。這一類(lèi)軟件的解決有兩種途徑:一個(gè)是購(gòu)買(mǎi)第三方軟件;另一個(gè)是自己編寫(xiě)。如果只是用單片機(jī)實(shí)現(xiàn)TCP/IP協(xié)議中的某些功能,可以選用免費(fèi)公開(kāi)源代碼的小型TCP/IP協(xié)議棧,把它移植到uC/OS-II。目前uC/OS-II的最新版本為V2.70,但現(xiàn)在廣泛學(xué)習(xí)和應(yīng)用的是V2.52。
3小型TCP/IP協(xié)議棧uIP
uIP是由瑞士計(jì)算機(jī)科學(xué)院的AdamDunkels等開(kāi)發(fā)的一種免費(fèi)公開(kāi)源代碼的小型TCP/IP協(xié)議棧,它專門(mén)為8位和16位MCU編寫(xiě)。uIP完全是用C語(yǔ)言編寫(xiě),它在保證一個(gè)完整的TCP/IP棧的前提下,只保留了最必要的一系列特征,使其代碼最少、占用的RAM最小;它只能處理單一的網(wǎng)絡(luò)接口。通常的TCP/IP棧采用BSDsocketAPI,需要來(lái)自下層的多任務(wù)操作系統(tǒng)的支持,而且任務(wù)管理、語(yǔ)境切換以及堆棧空間的分配都要占用很大的開(kāi)銷(xiāo),超出了8位機(jī)系統(tǒng)的能力。uIP采用了一個(gè)事件驅(qū)動(dòng)接口,通過(guò)調(diào)用應(yīng)用程序響應(yīng)事件。而相應(yīng)的應(yīng)用程序作為C函數(shù)調(diào)用。通常情況下,uIP的源代碼雖然只有幾KB,RAM占用僅幾百字節(jié),但uIP提供了網(wǎng)絡(luò)通信所必須的協(xié)議,包括:ARP、SLIP、IP、UDP、ICMP(PINC)和TCP;能夠滿足8位MCU接入TCP/IP網(wǎng)絡(luò)(如Internet)的需要。目前uIP最新的版本為,符合Internet標(biāo)準(zhǔn)。
4GPRS終端的工作原理及硬件實(shí)現(xiàn)
GPRS終端由控制模塊控制TCP/IP模塊和無(wú)線發(fā)送模塊實(shí)現(xiàn)。其結(jié)構(gòu)框圖如圖2所示。
4.1控制模塊
控制模塊的作用主要有
·控制模塊通過(guò)AT指令初始化GPRS無(wú)線模塊,使之附著在GPRS網(wǎng)上,獲得網(wǎng)絡(luò)運(yùn)營(yíng)商動(dòng)態(tài)分配給GPRS終端的IP地址,并與目的終端或服務(wù)器之間建立連接;
·控制模塊通過(guò)RS232串口向客戶系統(tǒng)收發(fā)數(shù)據(jù)或指令;
·控制模塊通過(guò)RS232串口向TCP/IP模塊收發(fā)數(shù)據(jù);
·控制模塊自主或根據(jù)遠(yuǎn)程控制指令采取其他操作。
控制模塊的MCU選用華邦的八位機(jī)WINBOODW77E58。W77E58是臺(tái)灣華邦公司生產(chǎn)的、與MCS51系列單片機(jī)兼容的、可多次編程的快速微處理器,在其內(nèi)部集成有32KB的可重復(fù)編程的FlashROM、25
6字節(jié)的片內(nèi)存儲(chǔ)器、IKB用MOVX指令訪問(wèn)的SRAM、可編程看門(mén)狗定時(shí)器、三個(gè)16位定時(shí)器、二個(gè)增強(qiáng)型的全雙工串行口、片內(nèi)RC振蕩器、雙16位數(shù)據(jù)指針等諸多功能。在很多場(chǎng)合,幾乎不用擴(kuò)展外圍芯片就能夠滿足系統(tǒng)要求。由于其采用了全新設(shè)計(jì)的微處理器內(nèi)核,去除多余的時(shí)鐘和存儲(chǔ)周期,在相同的晶振頻率下,根據(jù)不同的指令類(lèi)型,其運(yùn)行速度一般比傳統(tǒng)8051系列快1.5~3倍。一般情況下,平均可達(dá)2.5倍以上。另外,由于W77E58采用全靜態(tài)CMOS設(shè)計(jì),能工作在低速晶振頻率下。與普通的8051相比,若W77E58采用低速工作頻率,在相同的指令吞吐量下,W77E58的節(jié)電性能也將大大提高。
4.2TCP/IP模塊
TCP/IP模塊通過(guò)RS232串口與GPRS無(wú)線模塊通信,提供非透明和透明兩路通道。相對(duì)應(yīng)地,該模塊有兩種傳輸模式:透明模式和非透明模式。通過(guò)軟件切換,模塊在處于不同的傳輸模式時(shí),數(shù)據(jù)流向也有所不同。當(dāng)傳送AT指令集時(shí),模塊進(jìn)入透明模式,可以直接訪問(wèn)GPRS無(wú)線模塊;當(dāng)模塊進(jìn)人非透明傳輸方式時(shí),用戶數(shù)據(jù)從串口進(jìn)入TCP/IP模塊后,先十丁成TCP/IP包,再經(jīng)串口發(fā)送給GPRS模塊;GPRS無(wú)線模塊把其封裝成GPRS分組數(shù)據(jù)包傳到GPRS網(wǎng)上。TCP/IP模塊由基于單片機(jī)8051的嵌入式系統(tǒng)實(shí)現(xiàn)。選用WINBOODW77E58作為嵌入式系統(tǒng)的微處理器,嵌入式實(shí)時(shí)操作系統(tǒng)選用uC/OS-II,然后在uC/OS-II中移植uIP實(shí)現(xiàn)TCP/IP協(xié)議棧。
4.3GPRS無(wú)線模塊
GPRS無(wú)線模塊作為GPRS終端的無(wú)線收發(fā)模塊,把從TCP/IP模塊接收的TCP/IP包和從基站接收的GPRS分組數(shù)據(jù)進(jìn)行相應(yīng)的協(xié)議處理后再轉(zhuǎn)發(fā)。GPRS無(wú)線模塊采用了SIEMENS公司的MC35GPRS模塊。MC35模塊主要由射頻天線、內(nèi)部Flash、SRAM、GSM基帶處理器、匹配電源和一個(gè)40腳的ZIF插座組成。GSM基帶處理器是核心部件,其作用相當(dāng)于一個(gè)協(xié)議處理器,用來(lái)處理外部系統(tǒng)通過(guò)串口發(fā)送過(guò)來(lái)的AT指令。射頻天線部分主要實(shí)現(xiàn)信號(hào)的調(diào)制與解調(diào),以及外部射頻信號(hào)與內(nèi)部基帶處理器之間的信號(hào)轉(zhuǎn)換。匹配電源為處理器及射頻部分提供所需的電源。MC35GPRS模塊支持GSM900和GSMl800雙頻網(wǎng)絡(luò),接收速率可達(dá)86.20kbps,發(fā)送速率可達(dá)21.5kbps,并且很容易集成。當(dāng)然最大的數(shù)據(jù)吞吐量還要依賴于GPRS網(wǎng)絡(luò)的支持。
5TCP/IP模塊的軟件實(shí)現(xiàn)
5.1uC/OS-II在8051上的移植
uC/OS-II是自由軟件,非商業(yè)的運(yùn)用如科研、教學(xué)都是免費(fèi)的。任何使用者都可以從互聯(lián)網(wǎng)上下載其源代碼,通過(guò)適當(dāng)?shù)男薷募右砸浦玻蛊錆M足自己硬件和系統(tǒng)的需要。為了移植,需要先了解uC/OS-II操作系統(tǒng)的總體結(jié)構(gòu),圖3所示是uC/OS-II的結(jié)構(gòu)及與硬件的關(guān)系。
與處理器無(wú)關(guān)的代碼中包含了uC/OS-II的系統(tǒng)函數(shù),在進(jìn)行系統(tǒng)移植時(shí)一般不需要對(duì)這部分進(jìn)行修改;只要將UCOS-II.C文件包含在自己的項(xiàng)目中,即可將uC/OS-II中所有與MCU無(wú)關(guān)的代碼包含到移植的代碼中。
與應(yīng)用相關(guān)的代碼是用戶根據(jù)自己的應(yīng)用系統(tǒng)定制合適的內(nèi)核服務(wù)功能,它包括兩個(gè)文件:OS_CFG.H、INCLUDES.H。其中OS_CFG.H用來(lái)配置內(nèi)核,用戶根據(jù)需要對(duì)內(nèi)核進(jìn)行定制,設(shè)置系統(tǒng)的基本情況,例如系統(tǒng)可提供的最大任務(wù)數(shù)量、是否定制郵箱服務(wù)、是否需要系統(tǒng)提供任務(wù)掛起功能、是否提供任務(wù)優(yōu)先級(jí)動(dòng)態(tài)改變功能等。而INCLUDES.H則是系統(tǒng)頭文件。
處理器相關(guān)的代碼中包含了對(duì)各種不同類(lèi)型MCU的支持,需要根據(jù)自己的MCU對(duì)這部分進(jìn)行修改。針對(duì)KeilC51編譯器和8051芯片的技術(shù)特點(diǎn),uC/OS-Ⅱ的移植與三個(gè)文件相關(guān):處理器相關(guān)C文件(OS_CPU.H、OS_CPU_C.C)和匯編文件(OS_CPU_A.ASM)。
(1)修改OS_CPU。H
文件OS_CPU.H中包括了用#define語(yǔ)句定義的與處理器相關(guān)的常數(shù)、宏以及類(lèi)型。移植時(shí)主要修改的內(nèi)容有
·與編譯器相關(guān)的數(shù)據(jù)類(lèi)型的設(shè)定。參考KeilC51編譯器中的幫助文件C51.PDF,具體路徑為\C51\HLP\C51.PDF。
·用#define語(yǔ)句定義了兩個(gè)宏開(kāi)關(guān)中斷,具體實(shí)現(xiàn)為
#defineOS_ENTER_CRITICAL()EA=0//關(guān)中斷
#defineOS_EXIT_CRITICAL()EA=1//開(kāi)中斷
·根據(jù)8051堆棧的方向定義OS_STK_GROWTH。
#defineOS_STK_GROWTH0//8051堆棧從下向上遞增
置OS_STK_GROWTH為0,表示堆棧從下(低地址)向上(高地址)遞增;置OS_STK_GROWTH為1,表示堆棧從上(高地址)向下(低地址)遞減。
·uC/OS-II從低優(yōu)先級(jí)任務(wù)切換到高優(yōu)先級(jí)任務(wù)時(shí)需要用到OS_STK_SW(),通過(guò)執(zhí)行OS_STK_SW()模仿中斷的產(chǎn)生。絕大多數(shù)CPU會(huì)提供軟中斷或指令陷阱(TRAP)完成這項(xiàng)功能。中斷服務(wù)子程序或指令陷阱處理函數(shù)(也叫異常處理函數(shù))的中斷向量地址必須指向匯編語(yǔ)言函數(shù)OSCtxSw()。因?yàn)?051沒(méi)有軟中斷指令,所以用程序調(diào)用代替。
#defineOS_TASK_SW()OSCtxSw()
(2)修改OS_CPU_C.C
uC/OS-II的移植范例要求用戶編寫(xiě)10個(gè)簡(jiǎn)單的C函數(shù),其中OSTaskStklnit()是必要的,其他9個(gè)函數(shù)必須聲明,但不一定包含任何代碼。因?yàn)镵eilC51在缺省情況下把函數(shù)編譯為不可重入的結(jié)構(gòu),而多任務(wù)系統(tǒng)要求并發(fā)操作導(dǎo)致重入,所以要在每個(gè)C函數(shù)及其聲明后標(biāo)注reentrant關(guān)鍵字,使編譯器生成的代碼在運(yùn)行中支持函數(shù)可重入。另外"pdata"、"data"在uC/OS-II中用做一些函數(shù)的形參,但它同時(shí)又是KeilC51的關(guān)鍵字,這樣會(huì)導(dǎo)致編譯錯(cuò)誤。通常可把"pdata‘‘改成"ppdala","data"改成"ddata"解決此問(wèn)題。具體修改的代碼
void*OSTaskStkInit(void(
*task)(void*pd),
void*ppdata,
void*ptos,
INT16Uopt)reentrant
在基于8051的uC/OS-II中,移植uIP不需要對(duì)現(xiàn)有的TCP/IP源代碼做任何修改,但是必須為網(wǎng)絡(luò)設(shè)備(如網(wǎng)卡芯片、串口等)寫(xiě)一個(gè)驅(qū)動(dòng)程序。同時(shí),現(xiàn)有系統(tǒng)的集成部分也要進(jìn)行相應(yīng)的處理,例如當(dāng)有數(shù)據(jù)到達(dá)或者周期性的定時(shí)器計(jì)數(shù)滿等情況下,主控制系統(tǒng)應(yīng)該調(diào)用uIP函數(shù)[劉。移植的具體步驟
·在目錄uip-0.9/下創(chuàng)建一個(gè)自己的目錄,例如uip-0.9/8051/;
·把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/8051中;它包含了用C語(yǔ)言實(shí)現(xiàn)的32位加法、校驗(yàn)和算法;
·把uipopt.h文件從目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/8051中,并對(duì)其進(jìn)行修改,以滿足系統(tǒng)的需要。uipopt.h是ulP的配置文件,其中不僅包含了諸如uIP網(wǎng)點(diǎn)的IP地址和同時(shí)可連接的最大值等設(shè)置選項(xiàng),而且還有系統(tǒng)結(jié)構(gòu)和C編譯器的特殊選項(xiàng);
·參考例子unix/tapd
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流項(xiàng)目報(bào)告
- 交通卡口監(jiān)控系統(tǒng)維護(hù)方案
- 旅游酒店行業(yè)的智能化客房服務(wù)系統(tǒng)開(kāi)發(fā)方案
- 三農(nóng)特色種植技術(shù)手冊(cè)
- 建筑結(jié)構(gòu)設(shè)計(jì)與分析試題集
- 土庫(kù)曼語(yǔ)學(xué)習(xí)與交流作業(yè)指導(dǎo)書(shū)
- 安全培訓(xùn)計(jì)劃表格-安全培訓(xùn)項(xiàng)目安排
- 智能財(cái)稅綜合實(shí)訓(xùn) 下篇 第四章工作領(lǐng)域四-任務(wù)一
- 股份制企業(yè)運(yùn)營(yíng)優(yōu)化指南
- 分析電泳涂裝中電極作用原理
- GB/T 16422.2-2022塑料實(shí)驗(yàn)室光源暴露試驗(yàn)方法第2部分:氙弧燈
- 大客戶銷(xiāo)售培訓(xùn)
- 生物化學(xué)與分子生物學(xué)實(shí)驗(yàn)(終版)
- 細(xì)胞內(nèi)蛋白質(zhì)的分選和運(yùn)輸細(xì)胞生物學(xué)-1
- 高血壓健康宣教-飲食課件
- 八年級(jí)-現(xiàn)在完成時(shí)復(fù)習(xí)(共26張)課件
- 電氣基礎(chǔ)知識(shí)培訓(xùn)要點(diǎn)課件
- 基坑工程施工驗(yàn)收記錄表
- GB∕T 37045-2018 信息技術(shù) 生物特征識(shí)別 指紋處理芯片技術(shù)要求
- 瀝青項(xiàng)目運(yùn)營(yíng)方案參考范文
- 商品混凝土項(xiàng)目園區(qū)審批申請(qǐng)報(bào)告(范文參考)
評(píng)論
0/150
提交評(píng)論