基于AT91M40800的無線數據終端
摘 要 隨著中國移動GPRS和中國聯通CDMA1X網絡的建成商用,GPRS/CDMA無線數據終端的應用范圍越來越廣。本文介紹了ATMEL公司基于ARM7TDMI核的微控制器AT91M40800的內部結構和擴展外圍,并在此硬件平臺上移植了μC/OSII嵌入式操作系統、Interniche網絡協議棧和μC/FS文件系統,從而給出了一個完整的GPRS/CDMA無線數據終端的實現方案。
關鍵詞 ARM處理器,μC/OSII嵌入式操作系統,μC/FS文件系統,Interniche網絡協議棧
1 引 言
GPRS/CDMA無線數據網絡系統由于其覆蓋范圍廣,通信質量高,永遠在線和按流量計費等優(yōu)點,在無線上網、環(huán)境監(jiān)控和數據采集等許多行業(yè)得到了廣泛應用。作為系統重要組成部分的GPRS/CDMA無線數據終端,為了滿足其成本低,體積小和移動靈活的要求,目前普遍使用的方案是在單片機系統上加載一些操作系統和網絡協議棧來控制無線模塊登錄GPRS/CDMA網絡,從而實現數據的傳輸。但由于目前的單片機大多仍是8位系統,處理速度較慢,且硬件資源有限,對操作系統和協議棧的支持能力不夠強,因此實際運行起來效果并不理想。ARM處理器憑借其功能強,功耗低,性能高的優(yōu)勢迅速成為了各種控制應用領域的首選。本文通過采用ATMEL公司的AT91M40800處理器并外擴大容量存儲器的方法來構建功能強大的硬件平臺,并在此硬件平臺上移植了μC/OSII嵌入式操作系統、網絡協議棧和文件系統,從而大大提高了終端的可靠性,增強了系統的可擴展性和產品開發(fā)的可延續(xù)性。
2 硬件平臺
GPRS/CDMA無線數據終端采用ATMEL公司的一款ARM7微控制器AT91M40800,其特點如下:
- 集成了ARM7TDMI處理器內核,高性能的32位RISC體系結構,具有高密度的16位指令集和嵌入式ICE(In?Circuit Emulation);
- 8 KB片內SRAM;
- 完全可編程的外部總線接口(EBI),片選線多達8個,最大可尋址空間為64 MB,具有軟件可編程的8位或16位外部數據總線;
- 8優(yōu)先級、可單獨屏蔽的向量中斷控制器,具有4個外部中斷,包括一個高優(yōu)先級、低延遲的中斷請求;
- 32個可編程I/O口;
- 3通道16位定時器/計數器;
- 2個UART;
- 可編程的看門狗定時器。
圖1為GPRS/CDMA無線數據終端的結構框圖。AT91M40800內部只集成了8 KB的SRAM,為了使μC/OSII操作系統、網絡協議棧和文件系統能夠正常移植運行,系統外擴了1 MB的FLASH和SRAM。使用的片選信號分別是NCS0和NCS1,處理器上電REMAP后分別映射到0x01000000和0x02000000的地址空間。為了滿足系統存儲數據和一些須修改的配置信息的需要,終端在外擴的FLASH里創(chuàng)建了μC/FS文件系統,文件系統和用戶程序共用一片FLASH。用戶程序固化在0x01000000~0x0107FFFF前512 KB的地址空間內;文件系統創(chuàng)建在0x01080000~0x010FFFFF后512 KB的地址空間內。
圖1 GPRS/CDMA無線數據終端結構框圖
終端提供了RS232、RS485和RJ45 3種用戶接口。由于AT91M40800內部集成了2個UART,因此只須外加一片RS232電平轉換芯片和一片RS485收/發(fā)驅動芯片就能很容易地擴展出RS232和RS485用戶接口。擴展RJ45以太網口時,系統使用了RTL8019AS以太網接口芯片。RTL8019AS是Realtek公司高集成度的專用以太網接口芯片,支持EthernetII、IEEE802.3、10Base5、10Base2和10BaseT,支持UTP、AUIBNC和PnP自動探測模式,并且內嵌16 KB SRAM用于收/發(fā)緩沖,降低了對主處理器的速度要求。它還支持8位、16位數據總線模式,有全雙工的通信接口,是進行以太網通信的理想芯片。要實現這些功能,需要依據RTL8019用戶手冊的描述,對其進行正確的配置,編寫出發(fā)送包、接收包函數以及外部中斷處理程序;系統加載TCP/IP網絡協議棧后通過調用這些函數即可實現網絡數據的傳送。
系統還通過TL16C550擴展了一個標準的9線串口以連接GPRS/CDMA無線貓。TLl6C550的主要功能是在接收外部器件或MODEM的數據時完成數據串行到并行的轉換;在接收CPU的數據時,完成數據并行到串行的變換并進行串行發(fā)送。在任何工作狀態(tài)下,CPU均可讀取和通報器件的狀態(tài)。TLl6C550的內部包含一個可編程的波特率發(fā)生器,波特率為16x內部輸入時鐘頻率,此內部輸入時鐘頻率由輸入的參考基準振蕩器分頻(由波特率分頻寄存器的值決定)得到。TLl6C550具有完全的MODEM控制能力,根據用戶的需要可以設置成中斷或查詢方式。對TL16C550的操作比RTL8019更為簡單,只需對其為數不多的寄存器操作,便可實現對器件的模式設置、收發(fā)處理和狀態(tài)控制等。在此基礎上通過封裝一些收/發(fā)的函數即可完全實現和GPRS/CDMA無線貓的全雙工通信。
終端上電初始化后,從文件系統中讀出相應的配置信息,接著通過TL16C550向無線貓發(fā)送相應的AT指令;無線貓登陸網絡成功后,系統通過加載PPP/TCP/UDP/IP等協議,同中心建立起SOCKET連接;然后在μC/OS-II實時操作系統下通過多個任務的調度,即可實現RS232/RS485/RJ45數據和中心站的相互通信。
3 μC/OSII嵌入式操作系統
μC/OSII是一種免費公開源代碼,結構小巧,具有可剝奪實時內核的實時操作系統,其內核提供任務調度與管理、時間管理、任務間同步與通信,以及內存管理和中斷服務等功能。μC/OSII是面向中小型嵌入式系統的,如果包含全部功能(信號量、消息郵箱、消息隊列及相關函數),則編譯后的內核僅有6~10 KB,可以廣泛應用于從8位到64位單片機各種不同類型、不同規(guī)模的嵌入式系統。要使μC/OSII正常運行,處理器必須滿足以下要求:
- 處理器的C編譯器能產生可重入代碼;
- 用C語言即可打開和關閉中斷;
- 處理器支持中斷,并且能產生定時中斷(通常為10~100 Hz);
- 處理器支持能夠容納一定量數據(可能是幾千字節(jié))的硬件堆棧;
- 處理器有將堆棧指針和其他CPU寄存器讀出或存儲到堆?;騼却嬷械闹噶?。
AT91M40800完全可以滿足這些要求,因此可將μC/OSII移植到上面運行。μC/OSII的移植比較簡單,在完成對CPU的初始化以后,首先對時鐘節(jié)拍進行設置(10~100 Hz)。只須對AT91M40800編寫相應的定時器中斷處理程序,在程序中調用操作系統的函數OSTimeTick(),并在其AIC(Advanced Interrupt Controller )中設置定時器的優(yōu)先級別,將定時器中斷處理程序的地址放到相應的中斷向量表中。使定時器產生中斷,必須在開始多任務調度后,即在第一個任務中使能定時器。其次,對μC/OS-II移植主要集中在includes.h、OS_CPU_A.S和OS_CPU_C.C等CPU相關文件的改動,上層任務調度部分無需任何修改。對于多任務操作系統,只需將復雜的應用分成簡單的、相互聯系的任務,再把各個不同優(yōu)先級的任務交給操作系統去管理。
4 Interniche網絡協議棧
為了使GPRS/CDMA模塊能登錄無線網絡并與中心建立SOCKET連接,系統移植了Interniche公司源碼開放的嵌入式TCP/IP/PPP協議棧。Interniche能使系統很容易在μC/OS-II操作系統的調度下為開發(fā)平臺增加網絡通信和網絡管理等功能。由于它是專門為嵌入式系統而設計的,所以占用的系統資源很少。Interniche協議全部用標準C語言,除了可以運行在如μC/OSII、VRTX、CMX和Threadx等多種RTOS下,還可在無RTOS的環(huán)境下獨立運行。常用的Interniche包括:
(1) 核心協議
NicheStackTM: InternicheTCP協議包含TCP、UDP、IP、TFTP、DHCP Client、ICMP、ARP、SLIP、BootTP以及DNS Client。
Niche ToolTM: 菜單驅動的協議調試和測試工具(包含在NicheStack和Nichelite中)。
NicheLiteTM: Interniche微型化的TCP/IP協議,全部代碼在12 KB以內;它包含全部NichestackTM的所有協議和1個最小化的Socket API,易于移植到從8位到32位的CPU上。
可選擇應用模塊:PPP、PPPoE、Telnet(ServerClient)、FTP(ServerClient)、IP Multicast和NichePOP3等。它為TCP/IP上的附加模塊增加了POP3 Email服務器收郵件功能。
(2) 管理和配置協議
WebportTM: 嵌入式Web服務器,讓最終用戶通過WWW瀏覽器配置和監(jiān)控嵌入式設備,而避免編寫專用的GUI界面。這些界面多數是與主機OS(如Win98)相關的,而且需要目標環(huán)境大量的資源,如文件系統。
Email Alerte: 為嵌入式系統增加預告和報警功能。它允許用戶向本地或遠程的Email地址發(fā)出預先設置好的信息(比如某個條件下的報警信息)。
Interniche協議棧同樣具有良好可移植特性,它對系統的要求只有:
- 時鐘,至少1 s“滴答”;
- 內存和操作系統;
- 至少具有一個網絡接口設備(查詢或中斷驅動);
- 相配的編譯器和調試器。
只須根據以太網控制器手冊的描述,編寫出發(fā)送包、接收包的函數,以及用于以太網控制器的外部中斷處理程序即可完成對Interniche網絡部分的移植。由于Interniche協議棧也是可以獲得源碼的,所以對于任何網絡控制器都可通過不斷的調試最終完成自己的驅動程序。此外,為了方便調試,使Niche ToolTM工作,還應完成對Interniche中向串口收/發(fā)字符putchar()和getch()的移植,這樣就可以在PC端使用超級終端經過串口與終端設備上的Interniche基于命令行進行交互了。Interniche的各種協議簇可以根據需要由μC/OS-II調度的狀態(tài)查詢任務。
5 μC/FS文件系統
μC/FS是FAT型文件系統,它適用于所有存儲介質,需要用戶為這些儲存介質提供基本的硬件訪問函數。μC/FS在速度、多功能性和內存封裝上都做了優(yōu)化,支持FAT12、FAT16和FAT32文件系統,支持各種不同的設備驅動,從而允許用戶在同一時間通過文件系統訪問不同類型的硬件,通過設備驅動在同一時間訪問不同的介質。μC/FS還支持操作系統,包括μC/OSII在內的多種操作系統都可以很方便地與μC/FS結合,這樣用戶即可在多線程環(huán)境下進行文件操作。
μC/FS根據其組織邏輯機構,可以分為4層,如圖2所示。
① API層: μC/FS與用戶應用程序之間的接口。它包含了一個與文件函數相關的ANSI C庫,如FS_FOpen和FS_FWrite等。API層把這些調用傳遞給文件系統層。目前在μC/FS下只有FAT型文件系統可以獲取, 但API層可以同時處理不同類型的文件系統層,所以在μC/FS下可以同時使用FAT和其他文件系統。
圖2 μC/FS 的層次體系
② 文件系統層: 把文件操作請求傳遞給邏輯塊操作。通過這種傳遞,文件系統調用邏輯塊操作來為設備指定相應的設備驅動。
③ 邏輯塊層:主要功能是使對設備驅動的訪問同步,并為文件系統層提供一個方便的接口。邏輯塊層調用一個設備驅動來進行塊操作。
④ 設備驅動: 設備驅動是處于系統底層的例程,用以訪問存儲硬件。設備驅動結構簡單,易于與用戶自己的存儲設備進行整合。
μC/FS是為與所有類型的硬件協同工作而設計的,為了在μC/FS中使用某種特定的硬件,需要提供該硬件的設備驅動。當用戶要使用自己的設備驅動時,需要通知μC/FS設備的名稱以及采用的文件系統層的類型(目前只支持FAT)。用戶可在FS_Conf.h文件中通過設置FS_DEVINFO來實現,FS_Conf.h文件用于初始化μC/FS的全局設備信息表。第一個參數是設備名稱,在調用μC/FS API時會用到;第二個參數是指向文件系統層函數表的指針,目前只支持FAT;第三個參數是指向設備驅動函數表的指針。
如果要將μC/FS移植到用戶系統的FLASH里,則只有幾個文件須修改。一個是CONFIG目錄下的fs_conf.h和fs_port.h文件,需要根據系統的具體情況(如文件系統的設備類型,以及是否使用操作系統等)修改。還有DEVICE目錄下的flash_conf.h和flash_device.c這兩個文件。flash_conf.h里需要設置用戶的FLASH信息,如FLASH的類型、訪問模式,以及FLASH的起始地址和長度等。flash_device.c需要根據用戶FLASH手冊做些修改,主要是在Flash command definitions部分,需要修改相應的操作命令宏,如擦除、編程命令字等。如果所有配置均正確,則可在目標系統上編譯使用設備的應用程序。正常情況下,編譯μC/FS的源代碼不會出現任何編譯警告,應用程序一經編譯即可在目標系統的調試器下運行。如果μC/FS有問題而不能運行,則可先測試一下各項FLASH的底層驅動函數(如FLASH_WriteAdr、FLASH_WriteOff和FLASH_EraseSector等),看是否能直接對FLASH進行操作。如果FLASH的底層驅動函數沒有問題,則可能是在調用μC/FS的API時,初始化或者傳遞的命令不正確,特別要檢查一下FS_IoCtl的命令參數。
6 結束語
本文提出了一種基于ARM處理器和嵌入式操作系統的GPRS/CDMA無線數據終端的實現方案。首先給出了系統硬件的的原理結構框圖,說明了系統中主要元器件的性能和使用方法;然后分別介紹了μC/OSII嵌入式操作系統、Interniche網絡協議棧和μC/FS文件系統的結構、特性以及主要的移植步驟。目前筆者已完成了終端軟硬件的調試工作,系統測試穩(wěn)定可靠,可以廣泛應用在水電氣費管理(如遠程抄表)、環(huán)保和電力監(jiān)控等場合,具有廣闊的使用前景。
評論