<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 基于AT91M40800的無線數(shù)據(jù)終端

          基于AT91M40800的無線數(shù)據(jù)終端

          作者: 時間:2006-03-01 來源:網(wǎng)絡(luò) 收藏

          摘 要 隨著中國移動GPRS和中國聯(lián)通CDMA1X網(wǎng)絡(luò)的建成商用,GPRS/CDMA的應(yīng)用范圍越來越廣。本文介紹了ATMEL公司ARM7TDMI核的微控制器的內(nèi)部結(jié)構(gòu)和擴(kuò)展外圍,并在此硬件平臺上移植了μC/OSII嵌入式操作系統(tǒng)、Interniche網(wǎng)絡(luò)協(xié)議棧和μC/FS文件系統(tǒng),從而給出了一個完整的GPRS/CDMA的實現(xiàn)方案。

          關(guān)鍵詞 ARM處理器,μC/OSII嵌入式操作系統(tǒng),μC/FS文件系統(tǒng),Interniche網(wǎng)絡(luò)協(xié)議棧

          1 引 言

          GPRS/CDMA數(shù)據(jù)網(wǎng)絡(luò)系統(tǒng)由于其覆蓋范圍廣,通信質(zhì)量高,永遠(yuǎn)在線和按流量計費(fèi)等優(yōu)點(diǎn),在無線上網(wǎng)、環(huán)境監(jiān)控和數(shù)據(jù)采集等許多行業(yè)得到了廣泛應(yīng)用。作為系統(tǒng)重要組成部分的GPRS/CDMA無線,為了滿足其成本低,體積小和移動靈活的要求,目前普遍使用的方案是在單片機(jī)系統(tǒng)上加載一些操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧來控制無線模塊登錄GPRS/CDMA網(wǎng)絡(luò),從而實現(xiàn)數(shù)據(jù)的傳輸。但由于目前的單片機(jī)大多仍是8位系統(tǒng),處理速度較慢,且硬件資源有限,對操作系統(tǒng)和協(xié)議棧的支持能力不夠強(qiáng),因此實際運(yùn)行起來效果并不理想。ARM處理器憑借其功能強(qiáng),功耗低,性能高的優(yōu)勢迅速成為了各種控制應(yīng)用領(lǐng)域的首選。本文通過采用ATMEL公司的處理器并外擴(kuò)大容量存儲器的方法來構(gòu)建功能強(qiáng)大的硬件平臺,并在此硬件平臺上移植了μC/OSII嵌入式操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧和文件系統(tǒng),從而大大提高了終端的可靠性,增強(qiáng)了系統(tǒng)的可擴(kuò)展性和產(chǎn)品開發(fā)的可延續(xù)性。

          2 硬件平臺

          GPRS/CDMA無線數(shù)據(jù)終端采用ATMEL公司的一款A(yù)RM7微控制器,其特點(diǎn)如下:

          • 集成了ARM7TDMI處理器內(nèi)核,高性能的32位RISC體系結(jié)構(gòu),具有高密度的16位指令集和嵌入式ICE(In?Circuit Emulation);
          • 8 KB片內(nèi)SRAM;
          • 完全可編程的外部總線接口(EBI),片選線多達(dá)8個,最大可尋址空間為64 MB,具有軟件可編程的8位或16位外部數(shù)據(jù)總線;
          • 8優(yōu)先級、可單獨(dú)屏蔽的向量中斷控制器,具有4個外部中斷,包括一個高優(yōu)先級、低延遲的中斷請求;
          • 32個可編程I/O口;
          • 3通道16位定時器/計數(shù)器;
          • 2個UART;
          • 可編程的看門狗定時器。

          圖1為GPRS/CDMA無線數(shù)據(jù)終端的結(jié)構(gòu)框圖。AT91M40800內(nèi)部只集成了8 KB的SRAM,為了使μC/OSII操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧和文件系統(tǒng)能夠正常移植運(yùn)行,系統(tǒng)外擴(kuò)了1 MB的FLASH和SRAM。使用的片選信號分別是NCS0和NCS1,處理器上電REMAP后分別映射到0x01000000和0x02000000的地址空間。為了滿足系統(tǒng)存儲數(shù)據(jù)和一些須修改的配置信息的需要,終端在外擴(kuò)的FLASH里創(chuàng)建了μC/FS文件系統(tǒng),文件系統(tǒng)和用戶程序共用一片F(xiàn)LASH。用戶程序固化在0x01000000~0x0107FFFF前512 KB的地址空間內(nèi);文件系統(tǒng)創(chuàng)建在0x01080000~0x010FFFFF后512 KB的地址空間內(nèi)。


          圖1 GPRS/CDMA無線數(shù)據(jù)終端結(jié)構(gòu)框圖

          終端提供了RS232、RS485和RJ45 3種用戶接口。由于AT91M40800內(nèi)部集成了2個UART,因此只須外加一片RS232電平轉(zhuǎn)換芯片和一片RS485收/發(fā)驅(qū)動芯片就能很容易地擴(kuò)展出RS232和RS485用戶接口。擴(kuò)展RJ45以太網(wǎng)口時,系統(tǒng)使用了RTL8019AS以太網(wǎng)接口芯片。RTL8019AS是Realtek公司高集成度的專用以太網(wǎng)接口芯片,支持EthernetII、IEEE802.3、10Base5、10Base2和10BaseT,支持UTP、AUIBNC和PnP自動探測模式,并且內(nèi)嵌16 KB SRAM用于收/發(fā)緩沖,降低了對主處理器的速度要求。它還支持8位、16位數(shù)據(jù)總線模式,有全雙工的通信接口,是進(jìn)行以太網(wǎng)通信的理想芯片。要實現(xiàn)這些功能,需要依據(jù)RTL8019用戶手冊的描述,對其進(jìn)行正確的配置,編寫出發(fā)送包、接收包函數(shù)以及外部中斷處理程序;系統(tǒng)加載TCP/IP網(wǎng)絡(luò)協(xié)議棧后通過調(diào)用這些函數(shù)即可實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的傳送。

          系統(tǒng)還通過TL16C550擴(kuò)展了一個標(biāo)準(zhǔn)的9線串口以連接GPRS/CDMA無線貓。TLl6C550的主要功能是在接收外部器件或MODEM的數(shù)據(jù)時完成數(shù)據(jù)串行到并行的轉(zhuǎn)換;在接收CPU的數(shù)據(jù)時,完成數(shù)據(jù)并行到串行的變換并進(jìn)行串行發(fā)送。在任何工作狀態(tài)下,CPU均可讀取和通報器件的狀態(tài)。TLl6C550的內(nèi)部包含一個可編程的波特率發(fā)生器,波特率為16x內(nèi)部輸入時鐘頻率,此內(nèi)部輸入時鐘頻率由輸入的參考基準(zhǔn)振蕩器分頻(由波特率分頻寄存器的值決定)得到。TLl6C550具有完全的MODEM控制能力,根據(jù)用戶的需要可以設(shè)置成中斷或查詢方式。對TL16C550的操作比RTL8019更為簡單,只需對其為數(shù)不多的寄存器操作,便可實現(xiàn)對器件的模式設(shè)置、收發(fā)處理和狀態(tài)控制等。在此基礎(chǔ)上通過封裝一些收/發(fā)的函數(shù)即可完全實現(xiàn)和GPRS/CDMA無線貓的全雙工通信。

          終端上電初始化后,從文件系統(tǒng)中讀出相應(yīng)的配置信息,接著通過TL16C550向無線貓發(fā)送相應(yīng)的AT指令;無線貓登陸網(wǎng)絡(luò)成功后,系統(tǒng)通過加載PPP/TCP/UDP/IP等協(xié)議,同中心建立起SOCKET連接;然后在μC/OS-II實時操作系統(tǒng)下通過多個任務(wù)的調(diào)度,即可實現(xiàn)RS232/RS485/RJ45數(shù)據(jù)和中心站的相互通信。

          3 μC/OSII嵌入式操作系統(tǒng)

          μC/OSII是一種免費(fèi)公開源代碼,結(jié)構(gòu)小巧,具有可剝奪實時內(nèi)核的實時操作系統(tǒng),其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信,以及內(nèi)存管理和中斷服務(wù)等功能。μC/OSII是面向中小型嵌入式系統(tǒng)的,如果包含全部功能(信號量、消息郵箱、消息隊列及相關(guān)函數(shù)),則編譯后的內(nèi)核僅有6~10 KB,可以廣泛應(yīng)用于從8位到64位單片機(jī)各種不同類型、不同規(guī)模的嵌入式系統(tǒng)。要使μC/OSII正常運(yùn)行,處理器必須滿足以下要求:

          • 處理器的C編譯器能產(chǎn)生可重入代碼;
          • 用C語言即可打開和關(guān)閉中斷;
          • 處理器支持中斷,并且能產(chǎn)生定時中斷(通常為10~100 Hz);
          • 處理器支持能夠容納一定量數(shù)據(jù)(可能是幾千字節(jié))的硬件堆棧;
          • 處理器有將堆棧指針和其他CPU寄存器讀出或存儲到堆?;騼?nèi)存中的指令。

          AT91M40800完全可以滿足這些要求,因此可將μC/OSII移植到上面運(yùn)行。μC/OSII的移植比較簡單,在完成對CPU的初始化以后,首先對時鐘節(jié)拍進(jìn)行設(shè)置(10~100 Hz)。只須對AT91M40800編寫相應(yīng)的定時器中斷處理程序,在程序中調(diào)用操作系統(tǒng)的函數(shù)OSTimeTick(),并在其AIC(Advanced Interrupt Controller )中設(shè)置定時器的優(yōu)先級別,將定時器中斷處理程序的地址放到相應(yīng)的中斷向量表中。使定時器產(chǎn)生中斷,必須在開始多任務(wù)調(diào)度后,即在第一個任務(wù)中使能定時器。其次,對μC/OS-II移植主要集中在includes.h、OS_CPU_A.S和OS_CPU_C.C等CPU相關(guān)文件的改動,上層任務(wù)調(diào)度部分無需任何修改。對于多任務(wù)操作系統(tǒng),只需將復(fù)雜的應(yīng)用分成簡單的、相互聯(lián)系的任務(wù),再把各個不同優(yōu)先級的任務(wù)交給操作系統(tǒng)去管理。

          4 Interniche網(wǎng)絡(luò)協(xié)議棧

          為了使GPRS/CDMA模塊能登錄無線網(wǎng)絡(luò)并與中心建立SOCKET連接,系統(tǒng)移植了Interniche公司源碼開放的嵌入式TCP/IP/PPP協(xié)議棧。Interniche能使系統(tǒng)很容易在μC/OS-II操作系統(tǒng)的調(diào)度下為開發(fā)平臺增加網(wǎng)絡(luò)通信和網(wǎng)絡(luò)管理等功能。由于它是專門為嵌入式系統(tǒng)而設(shè)計的,所以占用的系統(tǒng)資源很少。Interniche協(xié)議全部用標(biāo)準(zhǔn)C語言,除了可以運(yùn)行在如μC/OSII、VRTX、CMX和Threadx等多種RTOS下,還可在無RTOS的環(huán)境下獨(dú)立運(yùn)行。常用的Interniche包括:
          (1) 核心協(xié)議
          NicheStackTM: InternicheTCP協(xié)議包含TCP、UDP、IP、TFTP、DHCP Client、ICMP、ARP、SLIP、BootTP以及DNS Client。
          Niche ToolTM: 菜單驅(qū)動的協(xié)議調(diào)試和測試工具(包含在NicheStack和Nichelite中)。
          NicheLiteTM: Interniche微型化的TCP/IP協(xié)議,全部代碼在12 KB以內(nèi);它包含全部NichestackTM的所有協(xié)議和1個最小化的Socket API,易于移植到從8位到32位的CPU上。
          可選擇應(yīng)用模塊:PPP、PPPoE、Telnet(ServerClient)、FTP(ServerClient)、IP Multicast和NichePOP3等。它為TCP/IP上的附加模塊增加了POP3 Email服務(wù)器收郵件功能。
          (2) 管理和配置協(xié)議
          WebportTM: 嵌入式Web服務(wù)器,讓最終用戶通過WWW瀏覽器配置和監(jiān)控嵌入式設(shè)備,而避免編寫專用的GUI界面。這些界面多數(shù)是與主機(jī)OS(如Win98)相關(guān)的,而且需要目標(biāo)環(huán)境大量的資源,如文件系統(tǒng)。
          Email Alerte: 為嵌入式系統(tǒng)增加預(yù)告和報警功能。它允許用戶向本地或遠(yuǎn)程的Email地址發(fā)出預(yù)先設(shè)置好的信息(比如某個條件下的報警信息)。
          Interniche協(xié)議棧同樣具有良好可移植特性,它對系統(tǒng)的要求只有:

          • 時鐘,至少1 s“滴答”;
          • 內(nèi)存和操作系統(tǒng);
          • 至少具有一個網(wǎng)絡(luò)接口設(shè)備(查詢或中斷驅(qū)動);
          • 相配的編譯器和調(diào)試器。

          只須根據(jù)以太網(wǎng)控制器手冊的描述,編寫出發(fā)送包、接收包的函數(shù),以及用于以太網(wǎng)控制器的外部中斷處理程序即可完成對Interniche網(wǎng)絡(luò)部分的移植。由于Interniche協(xié)議棧也是可以獲得源碼的,所以對于任何網(wǎng)絡(luò)控制器都可通過不斷的調(diào)試最終完成自己的驅(qū)動程序。此外,為了方便調(diào)試,使Niche ToolTM工作,還應(yīng)完成對Interniche中向串口收/發(fā)字符putchar()和getch()的移植,這樣就可以在PC端使用超級終端經(jīng)過串口與終端設(shè)備上的Interniche命令行進(jìn)行交互了。Interniche的各種協(xié)議簇可以根據(jù)需要由μC/OS-II調(diào)度的狀態(tài)查詢?nèi)蝿?wù)。

          5 μC/FS文件系統(tǒng)

          μC/FS是FAT型文件系統(tǒng),它適用于所有存儲介質(zhì),需要用戶為這些儲存介質(zhì)提供基本的硬件訪問函數(shù)。μC/FS在速度、多功能性和內(nèi)存封裝上都做了優(yōu)化,支持FAT12、FAT16和FAT32文件系統(tǒng),支持各種不同的設(shè)備驅(qū)動,從而允許用戶在同一時間通過文件系統(tǒng)訪問不同類型的硬件,通過設(shè)備驅(qū)動在同一時間訪問不同的介質(zhì)。μC/FS還支持操作系統(tǒng),包括μC/OSII在內(nèi)的多種操作系統(tǒng)都可以很方便地與μC/FS結(jié)合,這樣用戶即可在多線程環(huán)境下進(jìn)行文件操作。
          μC/FS根據(jù)其組織邏輯機(jī)構(gòu),可以分為4層,如圖2所示。
          ① API層: μC/FS與用戶應(yīng)用程序之間的接口。它包含了一個與文件函數(shù)相關(guān)的ANSI C庫,如FS_FOpen和FS_FWrite等。API層把這些調(diào)用傳遞給文件系統(tǒng)層。目前在μC/FS下只有FAT型文件系統(tǒng)可以獲取, 但API層可以同時處理不同類型的文件系統(tǒng)層,所以在μC/FS下可以同時使用FAT和其他文件系統(tǒng)。


          圖2 μC/FS 的層次體系

          ② 文件系統(tǒng)層: 把文件操作請求傳遞給邏輯塊操作。通過這種傳遞,文件系統(tǒng)調(diào)用邏輯塊操作來為設(shè)備指定相應(yīng)的設(shè)備驅(qū)動。
          ③ 邏輯塊層:主要功能是使對設(shè)備驅(qū)動的訪問同步,并為文件系統(tǒng)層提供一個方便的接口。邏輯塊層調(diào)用一個設(shè)備驅(qū)動來進(jìn)行塊操作。
          ④ 設(shè)備驅(qū)動: 設(shè)備驅(qū)動是處于系統(tǒng)底層的例程,用以訪問存儲硬件。設(shè)備驅(qū)動結(jié)構(gòu)簡單,易于與用戶自己的存儲設(shè)備進(jìn)行整合。
          μC/FS是為與所有類型的硬件協(xié)同工作而設(shè)計的,為了在μC/FS中使用某種特定的硬件,需要提供該硬件的設(shè)備驅(qū)動。當(dāng)用戶要使用自己的設(shè)備驅(qū)動時,需要通知μC/FS設(shè)備的名稱以及采用的文件系統(tǒng)層的類型(目前只支持FAT)。用戶可在FS_Conf.h文件中通過設(shè)置FS_DEVINFO來實現(xiàn),F(xiàn)S_Conf.h文件用于初始化μC/FS的全局設(shè)備信息表。第一個參數(shù)是設(shè)備名稱,在調(diào)用μC/FS API時會用到;第二個參數(shù)是指向文件系統(tǒng)層函數(shù)表的指針,目前只支持FAT;第三個參數(shù)是指向設(shè)備驅(qū)動函數(shù)表的指針。
          如果要將μC/FS移植到用戶系統(tǒng)的FLASH里,則只有幾個文件須修改。一個是CONFIG目錄下的fs_conf.h和fs_port.h文件,需要根據(jù)系統(tǒng)的具體情況(如文件系統(tǒng)的設(shè)備類型,以及是否使用操作系統(tǒng)等)修改。還有DEVICE目錄下的flash_conf.h和flash_device.c這兩個文件。flash_conf.h里需要設(shè)置用戶的FLASH信息,如FLASH的類型、訪問模式,以及FLASH的起始地址和長度等。flash_device.c需要根據(jù)用戶FLASH手冊做些修改,主要是在Flash command definitions部分,需要修改相應(yīng)的操作命令宏,如擦除、編程命令字等。如果所有配置均正確,則可在目標(biāo)系統(tǒng)上編譯使用設(shè)備的應(yīng)用程序。正常情況下,編譯μC/FS的源代碼不會出現(xiàn)任何編譯警告,應(yīng)用程序一經(jīng)編譯即可在目標(biāo)系統(tǒng)的調(diào)試器下運(yùn)行。如果μC/FS有問題而不能運(yùn)行,則可先測試一下各項FLASH的底層驅(qū)動函數(shù)(如FLASH_WriteAdr、FLASH_WriteOff和FLASH_EraseSector等),看是否能直接對FLASH進(jìn)行操作。如果FLASH的底層驅(qū)動函數(shù)沒有問題,則可能是在調(diào)用μC/FS的API時,初始化或者傳遞的命令不正確,特別要檢查一下FS_IoCtl的命令參數(shù)。

          6 結(jié)束語

          本文提出了一種ARM處理器和嵌入式操作系統(tǒng)的GPRS/CDMA無線數(shù)據(jù)終端的實現(xiàn)方案。首先給出了系統(tǒng)硬件的的原理結(jié)構(gòu)框圖,說明了系統(tǒng)中主要元器件的性能和使用方法;然后分別介紹了μC/OSII嵌入式操作系統(tǒng)、Interniche網(wǎng)絡(luò)協(xié)議棧和μC/FS文件系統(tǒng)的結(jié)構(gòu)、特性以及主要的移植步驟。目前筆者已完成了終端軟硬件的調(diào)試工作,系統(tǒng)測試穩(wěn)定可靠,可以廣泛應(yīng)用在水電氣費(fèi)管理(如遠(yuǎn)程抄表)、環(huán)保和電力監(jiān)控等場合,具有廣闊的使用前景。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();