《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于8051嵌入式系統的GPRS終端實現

基于8051嵌入式系統的GPRS終端實現

2008-08-29
作者:萬海鵬 侯春萍

??? 摘 要: 介紹了基于GPRS網的數據傳輸、嵌入式實時操作系統μC/OS-II" title="C/OS-II">C/OS-II以及小型TCP/IP" title="TCP/IP">TCP/IP協議棧μIP;深入論述了基于8051嵌入式系統" title="嵌入式系統">嵌入式系統的GPRS終端的實現。提供了一種較為簡單、廉價和實用的GPRS終端的實現方案,說明了在8051中如何進行μC/OS-II和μIP的移植。
??? 關鍵詞: GPRS終端? 嵌入式系統? 實時操作系統? TCP/IP

?

??? 隨著數據無線傳輸需求的驟增和中國移動GPRS業務全面投入運營,無線數據通信的應用越來越廣泛。GPRS網不但具有覆蓋范圍廣、數據傳輸速度快、通信質量高、永遠在線和按流量計費等優點,且其本身就是一個分組型數據網,支持TCP/IP協議,無需經過PSTN等網絡的轉接,可直接與Internet網互通。因此GPRS業務在無線上網、環境監測、交通監控、移動辦公等行業中具有無可比擬的性價比優勢。
??? 為了滿足GPRS終端的低成本、小型化和移動靈活等要求,現在廣泛采用單片機對GPRS終端進行控制,并且引入嵌入式系統實現TCP/IP協議棧。目前主要的困難在于:運行TCP/IP協議對計算機存儲器、運算速度等要求較高,會占用大量的系統資源;而嵌入式系統大多采用8位單片機,硬件資源非常有限,支持TCP/IP協議非常困難。本文采用了在嵌入式實時操作系統μC/OS-II中移植一種小型TCP/IP協議棧μIP的方法,使基于8051嵌入式系統的GPRS終端能夠在網絡中進行數據傳輸;同時改善了系統的性能,提高了系統的可靠性,增強了系統的可擴展性和產品開發的可延續性。
1 基于GPRS網的數據傳輸
??? GPRS是在GSM的基礎上引入了分組控制單元(PCU)、服務支持節點(SGSN)和網關支持節點(GGSN)等新部件而構成的無線數據傳輸系統,其用戶能夠在端到端分組方式下發送和接收數據?眼1?演。基于GPRS網的數據傳輸系統如圖1所示。具體的數據傳輸流程為:

?


??? ·GPRS終端通過接口從客戶系統中取出用戶數據;
??? ·處理后以GPRS分組數據的形式發送到GSM基站(BSS);
??? ·分組數據經SGSN封裝后,發送到GPRS IP骨干網;
??? ·若分組數據是發送到另一GPRS終端,則先發送到目的SGSN,再經BSS發送到GPRS終端;若分組數據是發送到外部網絡(如Internet),則將分組數據包經GGSN進行協議轉換后,發送到外部網絡。
2 嵌入式實時操作系統μC/OS-II
??? μC/OS-II是由Jean J. Labrosse先生編寫的、現在流行的一種免費公開源代碼的實時操作系統。它可廣泛應用于從8位到64位單片機的各種不同類型、不同規模的嵌入式系統。帶有詳細注解的μC/OS-II源代碼只有200頁左右;其中95%左右是用C語言編寫的,與MCU類型相關的代碼用8088匯編寫成,不超過200行。μC/OS-II不僅具有結構小巧、可固化、可裁剪、多任務和可剝奪型的實時內核等特點;而且其實時性、穩定性和可靠性也得到了廣泛認可。μC/OS-II的最小內核可編譯至2KB,一般情況占用內存在10KB數量級,適用基于8051的嵌入式系統的需要。在系統中嵌入μC/OS-II可以把整個程序分成許多任務,每個任務相對獨立,然后在每個任務中設置超時函數,時間用完后,必須交出MCU的使用權。即使一個任務發生問題,也不會影響其他任務的運行。在單片機系統中嵌入μC/OS-II提高了系統的可靠性,并使調試程序變得簡單,同時也增強了系統的可擴展性和產品開發的可延續性。
??? 不過μC/OS-II僅僅是一個實時操作系統內核,與商業實時操作系統軟件包比較,它缺少Utilities部分,如文件系統、遠程函數調用庫、通信軟件庫。通信軟件包括:TCP/IP軟件庫、藍牙通信軟件庫、IrDA紅外通信軟件庫等。這一類軟件的解決有兩種途徑:一個是購買第三方軟件;另一個是自己編寫。如果只是用單片機實現TCP/IP協議中的某些功能,可以選用免費公開源代碼的小型TCP/IP協議棧,把它移植到μC/OS-II。目前μC/OS-II的最新版本為V2.70,但現在廣泛學習和應用的是V2.52。
3 小型TCP/IP協議棧μIP
??? μIP是由瑞士計算機科學院的Adam Dunkels等開發的一種免費公開源代碼的小型TCP/IP協議棧,它專門為8位和16位MCU編寫。μIP完全是用C語言編寫,它在保證一個完整的TCP/IP棧的前提下,只保留了最必要的一系列特征,使其代碼最少、占用的RAM最小;它只能處理單一的網絡接口。通常的TCP/IP棧采用BSD socket API,需要來自下層的多任務操作系統的支持,而且任務管理、語境切換以及堆棧空間的分配都要占用很大的開銷,超出了8位機系統的能力。μIP采用了一個事件驅動接口,通過調用應用程序響應事件。而相應的應用程序作為C函數調用。通常情況下,μIP的源代碼雖然只有幾KB,RAM占用僅幾百字節,但μIP提供了網絡通信所必須的協議,包括:ARP、SLIP、IP、UDP、ICMP(PING)和TCP;能夠滿足8位MCU接入TCP/IP網絡(如Internet)的需要。目前μIP最新的版本為V0.9,符合Internet標準。
4 GPRS終端的工作原理及硬件實現
??? GPRS終端由控制模塊" title="控制模塊">控制模塊控制TCP/IP模塊和無線發送模塊實現。其結構框圖如圖2所示。

?


4.1 控制模塊
??? 控制模塊的作用主要有:
??? ·控制模塊通過AT指令初始化GPRS無線模塊,使之附著在GPRS網上,獲得網絡運營商動態分配給GPRS終端的IP地址,并與目的終端或服務器之間建立連接;
??? ·控制模塊通過RS232串口" title="串口">串口向客戶系統收發數據或指令;
??? ·控制模塊通過RS232串口向TCP/IP模塊收發數據;
??? ·控制模塊自主或根據遠程控制指令采取其他操作。
??? 控制模塊的MCU選用華邦的八位機WINBOOD W77E58。W77E58是臺灣華邦公司生產的、與MCS51系列單片機兼容的、可多次編程的快速微處理器,在其內部集成有32KB的可重復編程的Flash ROM、256字節的片內存儲器、1KB用MOVX指令訪問的SRAM、可編程看門狗定時器、三個16位定時器、二個增強型的全雙工串行口、片內RC振蕩器、雙16位數據指針等諸多功能。在很多場合,幾乎不用擴展外圍芯片就能夠滿足系統要求。由于其采用了全新設計的微處理器內核,去除多余的時鐘和存儲周期,在相同的晶振頻率下,根據不同的指令類型,其運行速度一般比傳統8051系列快1.5~3倍。一般情況下,平均可達2.5倍以上。另外,由于W77E58采用全靜態CMOS設計,能工作在低速晶振頻率下。與普通的8051相比,若W77E58采用低速工作頻率,在相同的指令吞吐量下,W77E58的節電性能也將大大提高。
4.2 TCP/IP模塊
??? TCP/IP模塊通過RS232串口與GPRS無線模塊通信,提供非透明和透明兩路通道。相對應地,該模塊有兩種傳輸模式:透明模式和非透明模式。通過軟件切換,模塊在處于不同的傳輸模式時,數據流向也有所不同。當傳送AT指令集時,模塊進入透明模式,可以直接訪問GPRS無線模塊;當模塊進入非透明傳輸方式時,用戶數據從串口進入TCP/IP模塊后,先打成TCP/IP包,再經串口發送給GPRS模塊;GPRS無線模塊把其封裝成GPRS分組數據包傳到GPRS網上。TCP/IP模塊由基于單片機8051的嵌入式系統實現。選用WINBOOD W77E58作為嵌入式系統的微處理器,嵌入式實時操作系統選用μC/OS-II,然后在μC/OS-II中移植μIP實現TCP/IP協議棧。
4.3 GPRS無線模塊
??? GPRS無線模塊作為GPRS終端的無線收發模塊,把從TCP/IP模塊接收的TCP/IP包和從基站接收的GPRS分組數據進行相應的協議處理后再轉發。GPRS無線模塊采用了SIEMENS公司的MC35 GPRS 模塊。MC35模塊主要由射頻天線、內部Flash、SRAM、GSM基帶處理器、匹配電源和一個40腳的ZIF插座組成。GSM基帶處理器是核心部件,其作用相當于一個協議處理器,用來處理外部系統通過串口發送過來的AT指令。射頻天線部分主要實現信號的調制與解調?熏以及外部射頻信號與內部基帶處理器之間的信號轉換。匹配電源為處理器及射頻部分提供所需的電源。MC35 GPRS模塊支持GSM900和GSM1800雙頻網絡,接收速率可達86.20kbps?熏發送速率可達21.5kbps,并且很容易集成。當然最大的數據吞吐量還要依賴于GPRS網絡的支持。
5 TCP/IP模塊的軟件實現
5.1 μC/OS-II在8051上的移植

??? μC/OS-II是自由軟件,非商業的運用如科研、教學都是免費的。任何使用者都可以從互聯網上下載其源代碼,通過適當的修改加以移植,使其滿足自己硬件和系統的需要。為了移植,需要先了解μC/OS-II操作系統的總體結構,圖3所示是μC/OS-II的結構及與硬件的關系[2]

?


??? 與處理器無關的代碼中包含了μC/OS-II的系統函數,在進行系統移植時一般不需要對這部分進行修改;只要將UCOS-II.C文件包含在自己的項目中,即可將μC/OS-II中所有與MCU無關的代碼包含到移植的代碼中。
??? 與應用相關的代碼是用戶根據自己的應用系統定制合適的內核服務功能,它包括兩個文件:OS_CFG.H、INCLUDES.H。其中OS_CFG.H用來配置內核,用戶根據需要對內核進行定制,設置系統的基本情況,例如系統可提供的最大任務數量、是否定制郵箱服務、是否需要系統提供任務掛起功能、是否提供任務優先級動態改變功能等。而INCLUDES.H則是系統頭文件。
??? 處理器相關的代碼中包含了對各種不同類型MCU的支持,需要根據自己的MCU對這部分進行修改。針對Keil C51編譯器和8051芯片的技術特點,μC/OS-II的移植與三個文件相關:處理器相關C文件(OS_CPU.H、OS_CPU_C.C)和匯編文件(OS_CPU_A.ASM)。
??? (1)修改OS_CPU.H?
??? 文件OS_CPU.H中包括了用#define語句定義的與處理器相關的常數、宏以及類型。移植時主要修改的內容有:
??? ·與編譯器相關的數據類型的設定。參考Keil C51編譯器中的幫助文件C51.PDF,具體路徑為KeilC51HLPC51.PDF。
??? ·用#define語句定義了兩個宏開關中斷,具體實現為:
??? #define OS_ENTER_CRITICAL() EA=0? //關中斷
??? #define OS_EXIT_CRITICAL()?? EA=1? //開中斷
??? ·根據8051堆棧的方向定義OS_STK_GROWTH。
??? #define OS_STK_GROWTH 0?? //8051堆棧從下向上遞增
??? 置OS_STK_GROWTH為0,表示堆棧從下(低地址)向上(高地址)遞增;置OS_STK_GROWTH為1,表示堆棧從上(高地址)向下(低地址)遞減。
??? ·μC/OS-II從低優先級任務切換到高優先級任務時需要用到OS_STK_SW(),通過執行OS_STK_SW()模仿中斷的產生。絕大多數CPU會提供軟中斷或指令陷阱(TRAP)完成這項功能。中斷服務子程序或指令陷阱處理函數(也叫異常處理函數)的中斷向量地址必須指向匯編語言函數OSCtxSw()。因為8051沒有軟中斷指令,所以用程序調用代替。
??? #define OS_TASK_SW()?? OSCtxSw()
??? (2)修改OS_CPU_C.C
??? μC/OS-II的移植范例要求用戶編寫10個簡單的C函數,其中OSTaskStkInit()是必要的,其他9個函數必須聲明,但不一定包含任何代碼。因為Keil C51在缺省情況下把函數編譯為不可重入的結構,而多任務系統要求并發操作導致重入,所以要在每個C函數及其聲明后標注reentrant關鍵字,使編譯器生成的代碼在運行中支持函數可重入。另外,“pdata”、“data”在μC/OS-II中用做一些函數的形參,但它同時又是Keil C51的關鍵字,這樣會導致編譯錯誤。通常可把“pdata”改成“ppdata”,“data”改成“ddata”解決此問題。具體修改的代碼如下:
??? void?* OSTaskStkInit?( void????(*task) (void *pd),?
?????????????????????????? void? *ppdata,
????????????????? ???????? void? *ptos,
????????????????? ???????? INT16U opt) reentrant
????/*μC/OS-II通過調用OSTaskStkInt?穴?雪初始化任務的堆棧結構,使堆棧看起來就像剛發生過中斷,所有的寄存器保存到堆棧中,并返回棧頂指針給調用該函數的函數*/
??? void OSTaskCreateHook*OS_TCB *ptcb) reentrant
??? void OSTaskDelHook(OS_TCB *ptcb) reentrant
??? void OSTaskSwHook(void) reentrant
??? void OSTaskIdleHook(void) reentrant
??? void OSTaskStatHook(void) reentrant
?? ?void OSTimeTickHook(void) reentrant
??? void OSInitHookBegin(void) reentrant
??? void OSInitHookEnd(void) reentrant
??? void OSTCBInitHook(void) reentrant
??? (3)編寫OS_CPU_A.ASM
??? μC/OS-Ⅱ的移植范例要求用戶編寫四個簡單的匯編語言函數:
?? ?OSStartHighRdy()
?? ?OSCtxSw()
?? ?OSIntCtxSw()
?? ?OSTickISR()
5.2 μC/OS-II下μIP的實現
??? 在基于8051的μC/OS-II中,移植μIP不需要對現有的TCP/IP源代碼做任何修改,但是必須為網絡設備(如網卡芯片、串口等)寫一個驅動程序。同時,現有系統的集成部分也要進行相應的處理,例如當有數據到達或者周期性的定時器計數滿等情況下,主控制系統應該調用μIP函數[3]。移植的具體步驟如下[4]:
??? ·在目錄uip-0.9/下創建一個自己的目錄,例如uip-0.9/8051/;
?? ?·把uip_arch.c文件從目錄uip-0.9/unix/中復制到目錄uip-0.9/8051中;它包含了用C語言實現的32位加法、校驗和算法;
??? ·把uipopt.h文件從目錄uip-0.9/unix中復制到目錄uip-0.9/8051中,并對其進行修改,以滿足系統的需要。uipopt.h是μIP的配置文件,其中不僅包含了諸如μIP網點的IP地址和同時可連接的最大值等設置選項,而且還有系統結構和C編譯器的特殊選項;
??? ·參考例子unix/tapdev.c和uip/slipdev.c,為串口編寫驅動程序;
??? ·參考例子unix/main.c,寫自己的主控制系統,以便在適當的時候可以調用μIP函數;
??? ·編譯源代碼。
??? 本文闡述了基于8051嵌入式系統的GPRS終端的實現,并詳細介紹了嵌入式實時操作系統μC/OS-II基于8051的移植以及小型TCP/IP協議棧 uIP的移植。該GPRS終端利用GPRS網和Internet能夠與相應的GPRS終端以及相應的Internet終端進行數據傳輸。在GPRS終端的TCP/IP模塊中引入時實操作系統不但改善了系統的性能,提高了系統的可靠性,而且增強了系統的可擴展性和產品開發的可延續性。
參考文獻
1 李 華. 現代移動通信新技術.GPRS系統. 廣州:華南理工大學出版社,2001
2 Labrosse Jean J著?熏邵貝貝譯.嵌入式實時操作系統μC/OS-Ⅱ(第2版). 北京:北京航天航空大學出版社,2003
3 Adam Dunkels. μIP documentation
4 Adam Dunkels. μIP source code

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩午夜激情| 亚洲综合社区| 在线亚洲免费| 亚洲福利视频二区| 精品动漫3d一区二区三区| 国产精品影片在线观看| 国产精品日韩一区| 国产精品久久久久久久久免费桃花| 欧美经典一区二区| 欧美精品1区2区| 欧美精品v日韩精品v国产精品| 免费成人你懂的| 久久综合久久久久88| 久久漫画官网| 麻豆乱码国产一区二区三区| 麻豆国产va免费精品高清在线| 久久综合久久综合这里只有精品| 久久伊伊香蕉| 欧美不卡在线视频| 欧美精品www在线观看| 欧美啪啪成人vr| 欧美色中文字幕| 国产精品户外野外| 国产日韩欧美在线观看| 国内精品视频久久| 亚洲第一二三四五区| 亚洲精品社区| 国产精品99久久久久久久久 | 一本久道久久综合婷婷鲸鱼| 一本综合久久| 亚洲欧美日韩国产中文| 久久精品成人| 日韩一区二区免费高清| 亚洲一区久久| 久久久久久久网| 欧美国产日韩一区二区| 欧美视频在线观看免费| 国产精品自在欧美一区| 精品99视频| 亚洲日韩视频| 午夜久久tv| 亚洲日产国产精品| 亚洲一区二区三区中文字幕| 久久精品国产综合精品| 欧美大学生性色视频| 欧美三级网址| 国产欧美在线看| 亚洲国产视频直播| 在线亚洲激情| 亚洲高清在线视频| 亚洲午夜视频在线观看| 久久高清国产| 欧美日本中文| 国产色综合天天综合网| 亚洲电影欧美电影有声小说| 一二美女精品欧洲| 亚洲电影激情视频网站| 亚洲天堂第二页| 欧美在线观看视频在线| 欧美成人午夜剧场免费观看| 国产精品久久久久久久午夜| 在线观看国产欧美| 亚洲一区黄色| 亚洲精品久久7777| 欧美一区二区免费观在线| 欧美成人精品h版在线观看| 欧美午夜影院| 一区二区视频在线观看| 亚洲一区二区三区色| 91久久线看在观草草青青| 性欧美xxxx大乳国产app| 欧美电影免费观看大全| 国产视频一区在线观看一区免费| 亚洲精品欧洲精品| 亚洲电影免费观看高清| 亚洲在线中文字幕| 欧美激情成人在线视频| 国产一区二区三区无遮挡| 一区二区三区四区在线| 亚洲欧洲美洲综合色网| 久久国产精品久久精品国产| 欧美日韩一本到| 尤物yw午夜国产精品视频明星| 亚洲在线观看视频| 在线视频亚洲| 欧美岛国在线观看| 黄色精品在线看| 亚洲欧美在线磁力| 亚洲一区二区三区涩| 欧美激情亚洲一区| 国内精品久久久久影院色| 亚洲一区二区三区影院| 亚洲精品视频免费| 麻豆成人精品| 国内精品国语自产拍在线观看| 亚洲一区二区欧美| 中文亚洲视频在线| 欧美日本免费| 亚洲国产精品视频一区| 欧美在线免费播放| 欧美在线一级视频| 国产精品久久久久999| 99精品欧美一区二区蜜桃免费| 亚洲精品一二三| 免费国产自线拍一欧美视频| 韩国精品一区二区三区| 小辣椒精品导航| 久久精品一区| 国产婷婷色一区二区三区四区| 亚洲一品av免费观看| 亚洲一区视频在线观看视频| 欧美日产在线观看| 亚洲人成网站在线观看播放| 亚洲伦理久久| 欧美精品大片| 亚洲精品国产无天堂网2021| 日韩亚洲国产精品| 欧美日韩 国产精品| 夜夜嗨av色一区二区不卡| 一区二区欧美在线观看| 欧美日韩日韩| 一区二区电影免费在线观看| 亚洲永久字幕| 国产精品入口| 午夜精品一区二区三区在线| 久久国产精品久久久| 狠狠色丁香婷婷综合| 亚洲国产精彩中文乱码av在线播放| 老牛国产精品一区的观看方式| 在线欧美电影| 日韩一级在线| 国产精品成人国产乱一区| 亚洲一区免费| 久久免费国产精品| 尤物精品国产第一福利三区| 亚洲三级色网| 欧美日韩在线一区二区三区| 在线亚洲成人| 久久精品三级| 亚洲国产99| 亚洲天堂黄色| 国产伦精品一区二区| 亚洲成色精品| 欧美黄色影院| 亚洲视频一二| 久久精品视频一| 亚洲国产综合在线看不卡| 中日韩在线视频| 国产精品婷婷午夜在线观看| 欧美在线一级va免费观看| 欧美福利小视频| 中日韩视频在线观看| 久久久精彩视频| 亚洲人成在线观看网站高清| 亚洲欧美日韩成人| 国产一区二区成人久久免费影院| 亚洲日本欧美| 国产精品久久久久久影院8一贰佰| 午夜精品久久久久久久久| 免费成人黄色| 亚洲天堂成人在线视频| 久久人91精品久久久久久不卡 | 亚洲精品专区| 午夜影院日韩| 在线观看日韩av先锋影音电影院| 一区二区高清| 国产一区二区三区四区老人| 9l视频自拍蝌蚪9l视频成人| 国产欧美成人| 一区电影在线观看| 国产一二精品视频| 中文久久精品| 在线成人av网站| 午夜精品视频| 亚洲人www| 久久精品国产第一区二区三区| 亚洲福利专区| 欧美在线观看你懂的| 亚洲乱码国产乱码精品精可以看| 久久国产毛片| 一本久久综合亚洲鲁鲁| 蜜桃av噜噜一区| 午夜精品久久久久久久99水蜜桃| 欧美精品久久一区二区| 久久本道综合色狠狠五月| 欧美视频一区| 亚洲国内高清视频| 国产精品主播| 亚洲视频在线观看免费| 1024国产精品| 久久精品视频网| 亚洲天堂黄色| 欧美日韩精品一区二区三区四区| 久久精品国产99精品国产亚洲性色 | 一区二区三区四区国产| 欧美国产亚洲精品久久久8v| 欧美一级黄色网| 国产精品国色综合久久| 99精品久久久| 在线观看日韩专区|