為了滿足GPRS數據終端的低成本、小型化和移動靈活等要求,采用ARM9芯片S3c2410a對GPRS數據終端進行控制。本文在S3C2410a中移植的是Linux操作系統(tǒng),通過Linux操作系統(tǒng)可方便快捷地進行數據的傳輸和網絡終端的控制;同時改善了系統(tǒng)性能,提高了系統(tǒng)可靠性,并使系統(tǒng)的擴展和開發(fā)性能進一步得到提高。
1 GPRS技術
1.1 GPRS工作原理
GPRS的英文全稱是General Packet Radio Service,譯作“通用分組無線服務”,它是利用“包交換”(Packet-Switched)的概念發(fā)展起來的一套無線傳輸方式。所謂“包交換”就是將Data封裝成許多獨立的封包,再將這些封包一一傳送出去,形式上有點類似郵局中的寄包裹。其作用在于只有當有資料需要傳送時才會占用頻寬,而且可以以傳輸的資料量計價,這對廣大用戶來說是較合理的計費方式,因為像Interact這類的數據傳輸大多數的時間頻寬是閑置的。
GPRS網絡是基于現(xiàn)有的GSM網絡來實現(xiàn)的,在現(xiàn)有的GSM網絡中需增加一些節(jié)點,如GGSN(Gateway GPRS Supporting Node,GPBS網關支持節(jié)點)和SGS(Serving GSN,GPRS服務支持節(jié)點),GSN是GPRS網絡中最重要的網絡節(jié)點。GSN具有移動路由管理功能,它可以連接各種類型的數據網絡,并可以連到GPRS寄存器。GSN可以完成移動終端和各種數據網絡之間的數據傳送和格式轉換。GSN可以是一種類似于路由器的獨立設備,也可以與GSM中的MSC集成在一起。
GSN有兩種類型:一種為SGSN(Serving GSN,服務GSN),另一種為GGSN(Gateway GSN,網關GSN)。SGSN的主要作用是記錄移動終端的當前位置信息,并且在移動終端和GGSN之間完成移動分組數據的發(fā)送和接收。GGSN主要是起網關作用,它可以和多種不同的數據網絡連接。如ISDN。PSPDN和LAN等。GGSN可以把GSM網中的GPRS分組數據包進行協(xié)議轉換,從而可以把這些分組數據包傳送到遠端的TCP/IP或X.25網絡。GPRS工作時,通過路由管理來進行尋址和建立數據連接,而GPRS的路由管理表現(xiàn)在以下3個方面:一是移動終端發(fā)送數據的路由建立;二是移動終端接收數據的路由建立;三是移動終端處于漫游時數據路由的建立。對于第一種情況,當移動終端產生了一個PDU分組數據單元,這個PDU經過SNDC層處理,稱為SNDC數據單元,然后經過LLC層處理為LLC幀,并通過空中接口送到GSM網絡中移動終端所處的SGSN,SGSN把數據送到GGSN,GGSN把收到的消息進行解裝處理,轉換為可在公用數據網中傳送的格式(如PSPDN的PDU),最終送給公用數據網的用戶。為了提高傳輸效率,并保證數據傳輸的安全,可以對空中接口上的數據做壓縮和加密處理。在第二種情況中,一個公用數據網用戶傳送數據到移動終端時,首先通過數據網的標準協(xié)議建立數據網和GGSN之間的路由。數據網用戶發(fā)出的數據單元(如PSPDN中的PDU),通過建立好的路由把數據單元PDU送給GGSN。而GGSN再把PDU送給移動終端所在的SGSN上,GSN把PDU封裝成SNDC數據單元,再經過LLC層處理為LLC幀單元,最終通過空中接口送給移動終端。第三種情況是一個數據網用戶傳送數據給一個正在漫游的移動用戶。這種情況下的數據傳送必須要經過歸屬地的GGSN,然后送到用戶A端。
1.2 GPRS的協(xié)議模型
Um接口是GSM的空中接口。Um接口上的通信協(xié)議有5層,自下而上依次為物理層、MAC (Media Access Control)層、LLG(Logical LinkControl)層、SNDC層和網絡層。Um接口的物理層為射頻接口部分,而物理鏈路層則負責提供空中接口的各種邏輯信道。GSM空中接口的載頻帶寬為200 kHz,一個載頻分為8個物理信道。如果8個物理信道都分配為傳送GPRS數據,則原始數據速率可達200 kb/s。考慮前向糾錯碼的開銷,則最終的數據速率可達164 kb/s左右。MAC為媒質訪問控制層。MAC的主要作用是定義和分配空中接口的GPRS邏輯信道,使得這些信道能被不同的移動終端共享。LLG層為邏輯鏈路控制層。它是一種基于高速數據鏈路規(guī)程HDLG的無線鏈路協(xié)議。SNDC被稱為子網依賴結合層。它的主要作用是完成傳送數據的分組、打包,確定TCP/IP地址和加密方式。網絡層的協(xié)議目前主要是Phasel階段提供的TCP/IP和L25協(xié)議。TCP/IP和X.25協(xié)議對于傳統(tǒng)的GSM網絡設備(如:BSS,NSS等設備)是透明的。[!--empirenews.page--]
2 嵌入式系統(tǒng)設計
2.1 系統(tǒng)硬件結構
2.1.1 ARM9系統(tǒng)硬件結構
ARM9系統(tǒng)硬件結構見圖1。
2.1.2 GPRS傳輸設備
本文使用的GPRS傳輸設備是北京華榮匯通信設備有限公司開發(fā)的GR100型GPRS MODEM,采用了高性能內嵌TCP/IP協(xié)議棧GPRS模塊。
2.2 系統(tǒng)運作過程
(1)物理過程。ARM利用AT指令通過GPRSModem撥號,正確反饋及應答后,一條物理通道即GPRS信道就在系統(tǒng)中的GPRS Modem和GPRS網絡之間建立起來。
(2)數據過程。PPP協(xié)議將原始的GPRS物理層連接改造成無差錯的數據鏈路,系統(tǒng)將遠程登錄Internet,并得到GPRS網關分配的IP地址。
(3)網絡過程。采用IP協(xié)議作為網絡層協(xié)議。IP協(xié)議將接人Internet的具有不同IP地址的終端都聯(lián)系起來。經過IP路由選擇,可以實現(xiàn)系統(tǒng)與連在Internet上的任一IP終端進行數據交互。
(4)傳輸過程。選擇TCP作為傳輸層協(xié)議,為數據傳輸提供面向連接,可靠服務。
3 軟件設計
3.1 嵌入式系統(tǒng)的引導代碼Bootloader
Bootloader(引導加載程序)是嵌入式系統(tǒng)加電后運行的第一段代碼,在PC中,引導加載程序由BIOS和位于硬盤MBR中的操作系統(tǒng)引導加載程序一起組成的。
Bootloader啟動大多數分為2個階段。第一階段主要包含依賴于CPU的體系結構硬件初始化的代碼,通常都用匯編語言來實現(xiàn)。這個階段任務有:基本的硬件設備初始化(屏蔽所有的中斷、關閉處理器內部指令,數據Cache等);為第二階段準備RAM空間;如果是從某個固態(tài)存儲媒質中,則復制Bootloader的第二階段代碼到RAM中;設置堆棧;跳轉到第二階段的C程序入口點。
第二階段通常用c語言完成,以便實現(xiàn)更復雜的功能。這個階段任務有:初始化本階段要使用到的硬件設備;檢測系統(tǒng)內存映射;將內核映像和根文件系統(tǒng)映像從Flash讀到RAM 為內核設置啟動參數;調用內核。
在U-BOOT(在PPC-BOOT的基礎上進化而來的一個開放源碼的嵌入式BOOTROM程序)中通過下面兩行代碼進行兩個階段的工作交換:
Ldr pc,_start_armboot
_start_armboot:.word staxt_armboot
Bootloader調用Linux內核的方法是直接跳轉到內核的第一指令處,在跳轉時必須滿足下列條件:CPU寄存器設置。R0為O;R1為機器類型ID;R2為啟動參數,標記列表在RAM中的起始基地址,CPU模式。必須禁止中斷(IRQs和VlQs);CPU必須設置為SVC模式。Cache和MMU的設置。MMU必須關閉;指令Cache可以打開也可以關閉;數據Cache必須關閉。在編寫完Bootloader后,利用JTAG下載電纜.燒寫到Nor Flash中即可。
3.2 配置和編譯Linux內核
Linux內核主要由5個子系統(tǒng)組成:進程調度、內存管理、虛擬文件系統(tǒng)、網絡接口、進程間通信。
3.2.1 配置內核
配置內核的命令有make config;make oldcoafig;make menucoafig;make xconfig。無論哪個命令都將產生config文件,并在每一個c源文件中加上<Linux/config.h>,使define的宏起全局性的作用。
3.2.2 編譯內核
編譯內核需要3個步驟,分別是創(chuàng)建內核依賴關系、創(chuàng)建內核鏡像文件和創(chuàng)建內核模塊。執(zhí)行make up命令進行編譯。
生成內核以后,接下來要做的是安裝它。對每一個內核配置來說。要復制4個丈件:沒有壓縮的內核鏡像(zlmage和bzlmage)、壓縮的內核鏡像(vmlinux)、內核符號映射文件(System.map)以及配置文件(config)。
最后用loader.exe燒寫zlmage 或bzImage 到Nor Flash 的0x00010000地址。
4 GPRS數據終端實現(xiàn)
GR100通過RS232接口與ARM9系統(tǒng)連接,最終實現(xiàn)了基于ARM9芯片S3c2410a的GPRS數據終端。該終端內部已移植了Linux操作系統(tǒng),可在該系統(tǒng)下自主開發(fā)軟件,使其功能更加強大,例如連接LCD,實現(xiàn)可視化操作等。