基于AT91R40008的嵌入式GPRS傳輸終端的設(shè)計(jì)
摘 要:本文給出了一種針對(duì)工業(yè)總線的嵌入式系統(tǒng)連接Internet的無線上網(wǎng)方案,探討了實(shí)現(xiàn)該方案中要解決的主要問題。設(shè)計(jì)并實(shí)現(xiàn)了基于AT91R40008微處理器和G18 GSM模塊的嵌入式GPRS傳輸終端,采用層次結(jié)構(gòu)和標(biāo)準(zhǔn)接口,實(shí)現(xiàn)了基于實(shí)時(shí)操作系統(tǒng)µC/OS-Ⅱ的嵌入式TCP/IP協(xié)議棧,對(duì)軟件系統(tǒng)中的主要模塊進(jìn)行了分析。
關(guān)鍵詞:嵌入式系統(tǒng);AT91R40008;GPRS;µC/OS-Ⅱ;嵌入式TCP/IP協(xié)議棧
1 引言
隨著Internet的快速發(fā)展,Internet已成為信息流通的重要渠道,Internet接入終端在各種遠(yuǎn)程監(jiān)控系統(tǒng)中得到廣泛應(yīng)用。采用GPRS無線移動(dòng)互聯(lián)網(wǎng)接入技術(shù)的終端,使得現(xiàn)有工業(yè)總線的監(jiān)控系統(tǒng)直接通過Internet進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸,解決了采用以太網(wǎng)或電話線接入Internet的有線通訊布線困難、覆蓋范圍小、無法移動(dòng)通信等問題。Internet接入終端已經(jīng)成為工業(yè)控制、遠(yuǎn)程測(cè)量、交通管理等應(yīng)用熱點(diǎn)。本文給出了基于ARM處理器和GPRS Modem嵌入式數(shù)據(jù)傳輸終端的設(shè)計(jì)與實(shí)現(xiàn)。
2設(shè)計(jì)原理
將嵌入式系統(tǒng)接入Internet涉及兩個(gè)關(guān)鍵問題,即傳送信息的媒質(zhì)和采用的協(xié)議,傳輸媒質(zhì)可以是以太網(wǎng)或者電話線等媒介,在本設(shè)計(jì)中采用GPRS Modem作為無線接入Internet的媒質(zhì);協(xié)議采用嵌入式TCP/IP協(xié)議棧。通過GPRS Modem與當(dāng)?shù)谿SM基站中的GPRS業(yè)務(wù)節(jié)點(diǎn)進(jìn)行無線通信,進(jìn)入GPRS網(wǎng)絡(luò),然后通過GPRS網(wǎng)關(guān)與Internet進(jìn)行數(shù)據(jù)傳輸。
系統(tǒng)硬件劃分為控制模塊和GPRS modem模塊,GPRS modem模塊提供接入Internet 的TCP/IP物理連接;控制模塊是主控軟件的載體,負(fù)責(zé)控制將處理好的數(shù)據(jù)通過GPRS modem發(fā)送出去或者傳向工業(yè)總線。在控制模塊中,微控制器的一個(gè)串行接口連接GPRS modem,通過對(duì)GPRS modem的控制和通信,實(shí)現(xiàn)Internet網(wǎng)絡(luò)數(shù)據(jù)的收發(fā);另一個(gè)串行接口通過工業(yè)總線與其他嵌入式設(shè)備進(jìn)行數(shù)據(jù)通信。該實(shí)現(xiàn)方法采用數(shù)據(jù)透明傳輸,對(duì)原有的嵌入式系統(tǒng)不附加限制條件,較好地實(shí)現(xiàn)了網(wǎng)絡(luò)功能,而且系統(tǒng)的實(shí)時(shí)性較高。
3基于AT91R40008的硬件設(shè)計(jì)
為了解決網(wǎng)絡(luò)協(xié)議軟件和實(shí)時(shí)操作系統(tǒng)處理的硬件瓶頸,設(shè)計(jì)中選擇了Atmel公司的AT91R40008微控制器,一款基于ARM7TDMI核的32位微控制器,工作頻率為66M,其片內(nèi)集成了256KB RAM,可以直接將代碼運(yùn)行在片上RAM中,使得本次應(yīng)用程序可以采用任務(wù)查詢方式,增強(qiáng)系統(tǒng)的穩(wěn)定性,并且兩個(gè)全雙工通用同步/異步收發(fā)器(USART)與外圍控制器PDC連接,使用PDC方式,整段數(shù)據(jù)交給硬件自動(dòng)收發(fā)處理比單字節(jié)處理要大大減輕系統(tǒng)處理壓力,提高了系統(tǒng)的實(shí)時(shí)性。
圖1所示為控制模塊的硬件連接圖。圖中MAX232負(fù)責(zé)實(shí)現(xiàn)系統(tǒng)的另一個(gè)用戶接口與標(biāo)準(zhǔn)232總線之間的電平轉(zhuǎn)換;24CL04負(fù)責(zé)存儲(chǔ)系統(tǒng)運(yùn)行時(shí)需要的重要參數(shù),如遠(yuǎn)程連接的IP地址、端口等。如果為了緊縮設(shè)備體積可以采用將AT91R40008和AT49BV1614A集成在一起的AT91FR40162處理器。GPRS Modem模塊采用的是Motorola g18 DIN,該模塊為用戶的無線上網(wǎng)提供了物理鏈路。
圖1 控制模塊硬件結(jié)構(gòu)圖
4 軟件設(shè)計(jì)
軟件部分的主要功能包括系統(tǒng)及設(shè)備的初始化,創(chuàng)建接收發(fā)送任務(wù),建立連接的通信鏈路,保證網(wǎng)絡(luò)連接實(shí)時(shí)有效等。采用的實(shí)時(shí)操作系統(tǒng)是源碼開放的嵌入式操作系統(tǒng)µC/OS-Ⅱ,為了嵌入式系統(tǒng)能接入Internet,成功移植實(shí)時(shí)操作系統(tǒng)后還要實(shí)現(xiàn)一個(gè)嵌入式TCP/IP協(xié)議棧。軟件設(shè)計(jì)采用層次結(jié)構(gòu),從下到上依次是:硬件驅(qū)動(dòng)程序、操作系統(tǒng)內(nèi)核軟件、網(wǎng)絡(luò)接口軟件、協(xié)議軟件和應(yīng)用程序。
4.1實(shí)時(shí)操作系統(tǒng)µC/OS-Ⅱ的移植
移植µC/OS-Ⅱ的工作主要包括以下幾個(gè)部分:修改OS_CPU.H文件,該文件主要包含與編譯器相關(guān)的數(shù)據(jù)類型的定義、處理器實(shí)現(xiàn)開關(guān)中斷的方法、堆棧類型的定義和幾個(gè)宏定義及函數(shù)說明;修改OS_CPU_C.C文件,用C語言實(shí)現(xiàn)堆棧初始化和幾個(gè)提供給用戶用于擴(kuò)展操作系統(tǒng)功能的hook(又稱為鉤子函數(shù))函數(shù);修改OS_CPU_A.S文件,用與CPU相關(guān)的匯編語言實(shí)現(xiàn)CPU開/關(guān)中斷、任務(wù)級(jí)的任務(wù)切換、中斷級(jí)的任務(wù)切換以及時(shí)鐘中斷程序。
采用GCC編譯器編譯時(shí),除了對(duì)上述文件做相應(yīng)移植修改外,對(duì)實(shí)時(shí)系統(tǒng)的源碼不做改動(dòng),但要編寫能在操作系統(tǒng)內(nèi)直接調(diào)用的微控制器外圍設(shè)備驅(qū)動(dòng)函數(shù),這些驅(qū)動(dòng)函數(shù)構(gòu)成微控制器的控制驅(qū)動(dòng)函數(shù)庫,使得在操作系統(tǒng)內(nèi)可以完成UART控制、I2C總線訪問、PIO控制等硬件操作,對(duì)移植后的實(shí)時(shí)系統(tǒng)能夠使用各個(gè)外圍器件以及協(xié)議的實(shí)現(xiàn)都很重要。
4.2 嵌入式TCP/IP協(xié)議棧
在實(shí)時(shí)操作系統(tǒng)上需要一個(gè)TCP/IP協(xié)議棧來實(shí)現(xiàn)在Internet接入并收發(fā)數(shù)據(jù),為了提高效率節(jié)省資源,采用簡(jiǎn)化的TCP/IP協(xié)議棧,本次應(yīng)用只保留了TCP、UDP、IP和PPP協(xié)議,如圖2所示,網(wǎng)絡(luò)協(xié)議棧和構(gòu)件為網(wǎng)絡(luò)環(huán)境的嵌入式應(yīng)用提供有效的系統(tǒng)服務(wù)。
圖2 網(wǎng)絡(luò)協(xié)議棧和部件
傳輸層采用TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。TCP是一種面向連接的協(xié)議,它提供可靠的字節(jié)流傳輸;UDP協(xié)議沒有保證可靠性的機(jī)制,但可以實(shí)現(xiàn)高速高效的發(fā)送數(shù)據(jù)報(bào)。網(wǎng)絡(luò)層協(xié)議實(shí)現(xiàn)的主要是IP,在實(shí)現(xiàn)中IP協(xié)議不支持IP包的分片和重裝以及路由選擇。物理層的GPRS Modem實(shí)現(xiàn)了連接網(wǎng)絡(luò)的物理設(shè)備,要通過Modem撥號(hào)上網(wǎng),必須在數(shù)據(jù)鏈路層上實(shí)現(xiàn)PPP撥號(hào)協(xié)議,按照PPP協(xié)議的要求與移動(dòng)GPRS網(wǎng)關(guān)建立通信鏈路。為了方便協(xié)議軟件的使用還要實(shí)現(xiàn)各個(gè)層面的接口,網(wǎng)絡(luò)接口層在網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)設(shè)備、不同的協(xié)議層之間提供了一個(gè)相互內(nèi)部隔離的編程接口。BSD Socket接口為應(yīng)用提供了訪問網(wǎng)絡(luò)的統(tǒng)一接口。
4.3 緩沖區(qū)和驅(qū)動(dòng)軟件
本次應(yīng)用中緩沖區(qū)和驅(qū)動(dòng)軟件是提高系統(tǒng)性能的關(guān)鍵,通過多種緩沖區(qū)設(shè)計(jì)將多層次結(jié)構(gòu)的軟件緊密的整合在一起,可以緩和各層軟件之間處理瓶頸,提高連續(xù)數(shù)據(jù)并行處理能力;高效驅(qū)動(dòng)軟件的設(shè)計(jì)降低了硬件處理對(duì)CPU的占有率。
數(shù)據(jù)經(jīng)過串口硬件設(shè)備進(jìn)入軟件系統(tǒng)后就開始在一系列緩沖區(qū)中傳遞,圖3所示為所采用的緩沖結(jié)構(gòu)。從左到右依次是串口的收發(fā)緩沖區(qū)、串口收發(fā)工作緩沖區(qū)、網(wǎng)絡(luò)接口讀寫緩沖區(qū),最后是協(xié)議棧緩沖區(qū)。這樣整個(gè)數(shù)據(jù)交流過程就變成對(duì)本層緩沖區(qū)的讀寫,接口程序的編寫相對(duì)簡(jiǎn)單明了。
圖3 緩沖區(qū)設(shè)計(jì)示意圖
每個(gè)串口的收發(fā)緩沖區(qū)是6組長(zhǎng)度為512字節(jié)的char類型數(shù)組,工作緩沖區(qū)是長(zhǎng)度為1KB的char類型環(huán)行隊(duì)列;網(wǎng)絡(luò)接口讀寫緩沖區(qū)采用和工作緩沖區(qū)相同的結(jié)構(gòu);協(xié)議棧緩沖區(qū)是協(xié)議軟件處理過程中數(shù)據(jù)的唯一載體,協(xié)議棧緩沖區(qū)采用結(jié)構(gòu)體的靜態(tài)鏈表結(jié)構(gòu)。
上述緩沖區(qū)設(shè)計(jì)不僅保證了連續(xù)數(shù)據(jù)到來時(shí)CPU有足夠的處理時(shí)間和空間,而且將硬件和網(wǎng)絡(luò)協(xié)議軟件隔離便于軟件的設(shè)計(jì)開發(fā)。這種設(shè)計(jì)模式會(huì)占用大量RAM空間,但是所采用的ARM處理器片內(nèi)集成了256KB RAM,所以有足夠的RAM作緩沖區(qū)以提高系統(tǒng)性能。軟件的RAM使用情況如表1所示。其中還可以有100KB左右的內(nèi)存空間可以提供給軟件升級(jí),而且用戶可以選擇程序的FLASH運(yùn)行方式,節(jié)省更多RAM為軟件升級(jí)使用。
表1 整個(gè)系統(tǒng)的RAM占用表
驅(qū)動(dòng)程序包括三部分:初始化部分,函數(shù)功能部分和中斷服務(wù)程序ISR。初始化部分初始化硬件設(shè)備,分配設(shè)備所需的資源,完成系統(tǒng)相關(guān)的設(shè)置;函數(shù)功能部分完成系統(tǒng)指定的功能,中斷服務(wù)程序的主要功能是發(fā)起一個(gè)任務(wù)來完成必要的處理。為串口硬件編寫驅(qū)動(dòng)函數(shù)的工作主要是串口的啟動(dòng)、停止、波特率設(shè)置、控制PDC以及對(duì)緩沖區(qū)的讀寫。
4.4系統(tǒng)啟動(dòng)工作流程
處理器上電后首先進(jìn)行CPU硬件、操作系統(tǒng)、協(xié)議棧軟件參數(shù)的初始化工作;測(cè)試外設(shè)GSM模塊,由于GSM模塊作為一個(gè)相對(duì)重要而且較為獨(dú)立的設(shè)備,它的啟動(dòng)過程相對(duì)MCU要慢很多,所以在系統(tǒng)進(jìn)入正常運(yùn)行階段之前必須等待GSM模塊正常工作以后,才能進(jìn)行網(wǎng)絡(luò)服務(wù)器的連接。用戶任務(wù)除了負(fù)責(zé)網(wǎng)絡(luò)和工業(yè)總線數(shù)據(jù)交換以外,由于在GSM信號(hào)、模塊電源受到干擾或SIM卡震動(dòng)使都會(huì)引起GSM模塊死機(jī),所以還要建立GSM模塊檢測(cè)任務(wù),負(fù)責(zé)網(wǎng)絡(luò)連接的檢測(cè)以及判斷網(wǎng)絡(luò)中斷連接是否由GSM模塊故障引起,從而決定是否對(duì)GSM模塊重啟,以保證整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行。
5 結(jié)束語
本文給出了一種基于32位ARM微處理器和GPRS的嵌入式無線數(shù)據(jù)傳輸終端的實(shí)現(xiàn)方案。該方案硬件成本不高于采用中高檔單片機(jī)的實(shí)現(xiàn)方案,同時(shí)具有數(shù)據(jù)吞吐量大、可靠性高、處理能力強(qiáng)等優(yōu)點(diǎn)。嵌入式TCP/IP協(xié)議和實(shí)時(shí)系統(tǒng)相結(jié)合的軟件平臺(tái),增強(qiáng)了系統(tǒng)的功能性和實(shí)時(shí)性,這種平臺(tái)不僅可以作為測(cè)控網(wǎng)絡(luò)與Internet數(shù)據(jù)接入終端,還可以實(shí)現(xiàn)FTP、WEB、GUI、FS等多種嵌入式應(yīng)用,用于遠(yuǎn)程監(jiān)控網(wǎng)站、監(jiān)控圖片傳輸、網(wǎng)絡(luò)硬盤、現(xiàn)場(chǎng)界面機(jī)等應(yīng)用場(chǎng)合,替換PC機(jī)降低系統(tǒng)成本。
參 考 文 獻(xiàn):
[1] 馬忠梅, 徐英慧等. AT91系列ARM核微控制器結(jié)構(gòu)與開發(fā)[M]. 北京: 北京航空航天大學(xué)出版社,2003.
[2] Jean J.Labrosse. 嵌入式實(shí)時(shí)操作系統(tǒng)µC/OS-Ⅱ(第二版)[M].邵貝貝譯.北京:北京航空航天大學(xué)出版社,2003。
[3] Gary R.Wright, W.Richard Stevens. TCP/IP詳解 卷2:實(shí)現(xiàn)[M]. 北京:機(jī)械工業(yè)出版社,2002.