μClinux嵌入系統(tǒng)中外部硬件設(shè)備的快速調(diào)試方法
用GPRS modem實現(xiàn)嵌入式Internet接入系統(tǒng) 簡述: 運用ARM單片機LPC2104及西門子公司的GPRSmodem設(shè)計一種嵌入式Internet接入系統(tǒng),,并提供相應(yīng)的硬件原理圖和嵌入式操作系統(tǒng)移植方案,。 首 頁 > 嵌入式開發(fā) > 電路與通信系統(tǒng) 作者:高 巍 殷小貢 更新日期:2005-03-08 來源:武漢大學(xué) 瀏覽次數(shù): 629 引言 隨 著GPRS技術(shù)在無線通信領(lǐng)域的發(fā)展,GPRSmodem作為GPRS在Internet的PC機終端已得到了廣泛應(yīng)用,。相應(yīng)的,,在單片機系統(tǒng)中運用 GPRSmodem實現(xiàn)Internet接入也已開始為人們所重視。GPRS可以發(fā)揮永遠在線,、快速登錄,、按流量計費等優(yōu)勢。如果無線傳輸?shù)膬H僅只是低速 數(shù)據(jù),,用成本較高的PC機來控制則成本過高,。本文采用在嵌入式實時操作系統(tǒng)uC/OS-II中移植一種小型TCP/IP協(xié)議棧uIP的方法,,提供了一套運 用ARM CPU及西門子公司的GPRSmodem(MC35)來實現(xiàn)Internet接入的系統(tǒng)設(shè)計方案。 1 GPRS接入Internet模型設(shè)計 如 圖1所示,,GPRS網(wǎng)絡(luò)主要由在GSM基站中新增加的GPRS業(yè)務(wù)節(jié)點組成,,并通過GPRS網(wǎng)關(guān)節(jié)點實現(xiàn)與Internet的互聯(lián)。在本系統(tǒng)設(shè)計中,,要與 Internet交互信息的數(shù)據(jù)先通過GPRSmodem與當(dāng)?shù)谿SM基站中的GPRS業(yè)務(wù)節(jié)點進行無線通信,,并進入GPRS網(wǎng)絡(luò),然后通過GPRS網(wǎng)關(guān) 與Internet進行數(shù)據(jù)交互,。在本系統(tǒng)中,,設(shè)計的關(guān)鍵有二:一是ARM CPU與GPRSmodem的連接,即數(shù)據(jù)端的串行數(shù)據(jù)經(jīng)ARM CPU的串 口發(fā)送到GPRSmodem上,;二是在ARM CPU中嵌入實時操作系統(tǒng)uC/OS-II,,然后在uC/OS-II中移植uIP,實現(xiàn)TCP/IP協(xié)議 棧。 2 系統(tǒng)的分層考慮與協(xié)議轉(zhuǎn)換 圖2簡單示意了本系統(tǒng)的分層結(jié)構(gòu),,把GPRS服務(wù)節(jié)點和網(wǎng)關(guān)節(jié)點等GPRS內(nèi)部節(jié)點簡化抽象為GPRS網(wǎng)絡(luò),,把GPRS內(nèi)部協(xié)議及Internet網(wǎng)關(guān)協(xié)議等簡化抽象為GPRS網(wǎng)關(guān)協(xié)議。 物理層:ARM CPU利用AT指令對GPRSmodem進行撥號,。反饋應(yīng)答后,,一條物理通道即GPRS信道就在本系統(tǒng)中的GPRSmodem和Internet之間建立起來。 數(shù)據(jù)鏈路層:PPP協(xié)議將原始的GPRS物理層連接改造成無差錯的數(shù)據(jù)鏈路,,系統(tǒng)將成本遠程登錄Internet,并得到GPRS網(wǎng)關(guān)分配的A類IP地址,。 網(wǎng)絡(luò)層:采用IP協(xié)議作為網(wǎng)絡(luò)層協(xié)議,。IP協(xié)議將接入Internet的具有不同IP地址的終端都聯(lián)系起來。經(jīng)過IP路由選擇,,可以實現(xiàn)本系統(tǒng)與連在Internet上的任一IP終端進行數(shù)據(jù)交互,。 傳輸層:選擇TCP作為傳輸層協(xié)議,為數(shù)據(jù)傳輸提供面向連接,、可靠服務(wù),。 3 uC/OS-II與小型TCP/IP協(xié)議棧uIP uC/OS -II是由Jean J.Labrosse編寫的一種免費公開源代碼的實時操作系統(tǒng)。作為一個操作系統(tǒng)內(nèi)核,,它沒有提供通信軟件庫,。UIP是由瑞士計算機 科學(xué)院的Adam Dunkels等開發(fā)的一種免費公開源代碼的小型TCP/IP協(xié)議棧,全C編寫,,提供了網(wǎng)絡(luò)通信所必須的協(xié)議,,包括:ARP、 SLIP,、IP,、UDP,、ICMP(PINC)和TCP。本系統(tǒng)在ARM CPU中嵌入實時操作系統(tǒng)uC/OS-II,,再移植uIP實現(xiàn)TCP/IP協(xié)議 棧,,從而獲得一個功能完善的嵌入式IP終端。 4 硬件設(shè)計 整個系統(tǒng)的硬件框架如圖3所示,。 ARM CPU采用飛 利浦公司的LPC2104,,內(nèi)核為基于ARM7TDMI-S的精簡指令集的通用32位高速微處理器。工作電壓為3.3V,,內(nèi)核工作電壓僅為1.8V,;內(nèi)置 PLL鎖相環(huán)可以設(shè)置CPU工作頻率達60MHz;雙UART口,,提供數(shù)據(jù)的異步串行發(fā)送和接收,;片內(nèi)16KB RAM和128KB Flash程序存儲 器,為嵌入式uC/OS-II操作系統(tǒng)和移植uIP協(xié)議棧提供了必要的空間,。 GPRSmodem選用Siemens公司的MC35,。該模塊提 供了9針的標準RS232接口,通過MAX3232電平轉(zhuǎn)換芯片和LPC2104的UART0口相連,,進行全雙工通信,。MC35工作電壓為12V,上電后 由DTR上升沿跳變觸發(fā)啟動,。本系統(tǒng)指定LPC2104的P0.13信號線經(jīng)MAX3232電平轉(zhuǎn)換后作為MC35的DTR,。GSM基帶處理器是MC35 的核心部件,用來處理串口發(fā)送的AT指令,。 本系統(tǒng)中,,上電復(fù)位后,首先進行工作頻率等參數(shù)設(shè)置,,然后進行撥號和PPP協(xié)商,,得到系統(tǒng)本地IP,完成GPRS的Internet接入,。ARM CPU將用戶數(shù)據(jù)先打成IP包,,再經(jīng)串口發(fā)送給MC35,MC35把其封裝成GPRS分組數(shù)據(jù)包傳到GPRS網(wǎng),。 5 軟件設(shè)計 圖4所示是uC/OS-II的結(jié)構(gòu)及與硬件的關(guān)系,。 與處理器無關(guān)的代碼包含了uC/OS-II的系統(tǒng)函數(shù),移植時只要將uC/OS-II,,C文件包含在自己的項目中,,即可將uC/OS-II中所有與MCU無關(guān)的代碼包含到移植的代碼中。 與 處理器相關(guān)的代碼包含了對各種不同類型MCU的支持,,需要根據(jù)自己的MCU對這部分進行修改,。筆者使用的是的ADS2.0編譯器,,uC/OS-II的移植 與三個文件相關(guān):處理器相關(guān)C文件(OS_CPU.H、OS_CPU_C.C)和匯編文件(OS_CPU_A.ASM),。 (1)修改OS_CPU.H ①編譯器相關(guān)數(shù)據(jù)類型的設(shè)定,。 用#define語句定義兩個宏開關(guān)中斷,具體實現(xiàn)為: #define OS_ENTER_CRITICAL()EA=0 /關(guān)中斷 #define OS_EXIT_CRITCAL() EA=1 /開中斷 ②根據(jù)堆棧的方向宏方OS_STK_GROWT,。 #define OS_STK_GROWTH 1/GROWTH,。 雖然ARM處理器核對于兩種方式均支持,但ADS2.0的C語言編譯器僅支持一種方式,,即從上往下生長,,并且必須是滿遞減堆棧,所以O(shè)S_STK_GROWTH的值為1,。 ③OS_STK_SW(),、OSCtxSw()的移植 #define OS_TASK_SW() OSCtxSw() uC/OS-II從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)時,通過執(zhí)行OS_STK_SW()模仿中斷的產(chǎn)生,。中斷服務(wù)子程序的中斷向量地址指向匯編語言函數(shù)OSCtxSw(),。 (2)修改OS_CPU_C.C和OS_CPU_A.ASM uC/OS -II的移植還要編寫10個簡單的C函數(shù),包括6個和操作系統(tǒng)相關(guān)的函數(shù)和4個與處理器相關(guān)的函數(shù)其中OSTaskStklit()是必要的,,其它9個函 數(shù)必須聲明,,可以不加代碼。在每個C函數(shù)及其聲明后標注reentrant關(guān)鍵字,,使生成的代碼支持函數(shù)可重入,。 ①在目錄uip-0.9/下創(chuàng)建一個自己的目錄,例如uip0.9/2104/,。 ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,并對其修改,,以滿足系統(tǒng)需要。 ④編寫串口驅(qū)動程序和主控函數(shù),。 ⑤編譯源代碼,。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),,體積小功耗低,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,,可應(yīng)用于移動終端、交通管理,、信息家電,、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,,并對其修改,以滿足系統(tǒng)需要,。 ④編寫串口驅(qū)動程序和主控函數(shù),。 ⑤編譯源代碼。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),體積小功耗低,,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,可應(yīng)用于移動終端,、交通管理,、信息家電、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所,。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ①編譯器相關(guān)數(shù)據(jù)類型的設(shè)定。 用#define語句定義兩個宏開關(guān)中斷,,具體實現(xiàn)為: #define OS_ENTER_CRITICAL()EA=0 /關(guān)中斷 #define OS_EXIT_CRITCAL() EA=1 /開中斷 ②根據(jù)堆棧的方向宏方OS_STK_GROWT,。 #define OS_STK_GROWTH 1/GROWTH。 雖然ARM處理器核對于兩種方式均支持,,但ADS2.0的C語言編譯器僅支持一種方式,,即從上往下生長,并且必須是滿遞減堆棧,,所以O(shè)S_STK_GROWTH的值為1,。 ③OS_STK_SW()、OSCtxSw()的移植 #define OS_TASK_SW() OSCtxSw() uC/OS-II從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)時,,通過執(zhí)行OS_STK_SW()模仿中斷的產(chǎn)生,。中斷服務(wù)子程序的中斷向量地址指向匯編語言函數(shù)OSCtxSw()。 (2)修改OS_CPU_C.C和OS_CPU_A.ASM uC/OS -II的移植還要編寫10個簡單的C函數(shù),,包括6個和操作系統(tǒng)相關(guān)的函數(shù)和4個與處理器相關(guān)的函數(shù)其中OSTaskStklit()是必要的,,其它9個函 數(shù)必須聲明,可以不加代碼,。在每個C函數(shù)及其聲明后標注reentrant關(guān)鍵字,,使生成的代碼支持函數(shù)可重入。 ①在目錄uip-0.9/下創(chuàng)建一個自己的目錄,,例如uip0.9/2104/,。 ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,并對其修改,,以滿足系統(tǒng)需要,。 ④編寫串口驅(qū)動程序和主控函數(shù)。 ⑤編譯源代碼,。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),,體積小功耗低,,可靠性高,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,,可應(yīng)用于移動終端,、交通管理、信息家電,、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,,并對其修改,以滿足系統(tǒng)需要,。 ④編寫串口驅(qū)動程序和主控函數(shù),。 ⑤編譯源代碼。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),體積小功耗低,,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,可應(yīng)用于移動終端,、交通管理,、信息家電、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ①編譯器相關(guān)數(shù)據(jù)類型的設(shè)定,。 用#define語句定義兩個宏開關(guān)中斷,,具體實現(xiàn)為: #define OS_ENTER_CRITICAL()EA=0 /關(guān)中斷 #define OS_EXIT_CRITCAL() EA=1 /開中斷 ②根據(jù)堆棧的方向宏方OS_STK_GROWT。 #define OS_STK_GROWTH 1/GROWTH,。 雖然ARM處理器核對于兩種方式均支持,,但ADS2.0的C語言編譯器僅支持一種方式,,即從上往下生長,并且必須是滿遞減堆棧,,所以O(shè)S_STK_GROWTH的值為1,。 ③OS_STK_SW()、OSCtxSw()的移植 #define OS_TASK_SW() OSCtxSw() uC/OS-II從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)時,,通過執(zhí)行OS_STK_SW()模仿中斷的產(chǎn)生,。中斷服務(wù)子程序的中斷向量地址指向匯編語言函數(shù)OSCtxSw()。 (2)修改OS_CPU_C.C和OS_CPU_A.ASM uC/OS -II的移植還要編寫10個簡單的C函數(shù),,包括6個和操作系統(tǒng)相關(guān)的函數(shù)和4個與處理器相關(guān)的函數(shù)其中OSTaskStklit()是必要的,,其它9個函 數(shù)必須聲明,可以不加代碼,。在每個C函數(shù)及其聲明后標注reentrant關(guān)鍵字,,使生成的代碼支持函數(shù)可重入。 ①在目錄uip-0.9/下創(chuàng)建一個自己的目錄,,例如uip0.9/2104/,。 ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,,并對其修改,,以滿足系統(tǒng)需要。 ④編寫串口驅(qū)動程序和主控函數(shù),。 ⑤編譯源代碼,。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),,體積小功耗低,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,,可應(yīng)用于移動終端、交通管理,、信息家電,、工業(yè)控制、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所,。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,并對其修改,,以滿足系統(tǒng)需要,。 ④編寫串口驅(qū)動程序和主控函數(shù)。 ⑤編譯源代碼。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),體積小功耗低,,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,可應(yīng)用于移動終端,、交通管理,、信息家電、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所。 單片機及嵌入式系統(tǒng)應(yīng)用 21IC中國電子網(wǎng) ②把uip_arch.c文件從目錄uip-0.9/unix/中復(fù)制到目錄uip-0.9/2104中,。 ③把uipopt.h文件目錄uip-0.9/unix中復(fù)制到目錄uip-0.9/2104中,,并對其修改,以滿足系統(tǒng)需要,。 ④編寫串口驅(qū)動程序和主控函數(shù),。 ⑤編譯源代碼。 結(jié)語 本 設(shè)計方案采用1片ARM CPU來控制GPRSmodem,,實現(xiàn)了嵌入式實時操作系統(tǒng)uC/OS-II的移植以及小型TCP/IP協(xié)議棧uIP的移植,。該 GPRS終端利用GPRS網(wǎng)和Internet實現(xiàn)了基于GPRS的無線Internet互聯(lián),體積小功耗低,,可靠性高,,并且具有可擴展性和產(chǎn)品開發(fā)的延 續(xù)性,可應(yīng)用于移動終端,、交通管理,、信息家電、工業(yè)控制,、環(huán)境監(jiān)測以及POS網(wǎng)絡(luò)和電子商務(wù)等多種應(yīng)用場所,。 |
|