摘要:介紹一種基於IEEE802.11b的EPA溫度變送器的設計方案,闡述系統硬體和軟體結構,說明嵌入式Linux系統中驅動程序的開發過程。系統以S3C2410為核心器件,可以很好地完成溫度數據的採集處理,並可以通過IEEE802.11b接入點與相關設備進行通信,且在基於EPA標準的無線區域網系統中進行了測試。
引言
IEEE802.11是IEEE無線區域網標準,主要用於用戶終端的無線接入。IEEE802.11隻規定了開放式系統互聯參考模型的物理層和介質訪問子層,其MAC層利用載波監?多路訪問/衝突避免(CSMA/CA)協議;定義了單一的MAC層和多樣的物理層,其物理層標準主要有IEEE802.11b、IEEE802.11a和IEEE802.11g。IEEE802.11b標準是IEEE802.11協議標準的擴展,最高可以支持11 Mbps的數據速率,運行在2.4 GHz的ISM頻段上,採用的調製技術是CCK,支持數據業務。
本文詳細分析了採用S3C2410處理器平台具體實現運用於EPA網路的IEEE802.11b無線實時溫度採集器的開發流程,並對串口通信的調試手段及常見問題進行了探討。
1 溫度變送器的硬體設計
溫度變送器系統平台硬體系統功能如圖1所示。該平台的核心器件是Samsung公司的處理器S3C2410,外部擴展了16 MB、16位的Flash內存和64 MB、32位的SDRAM。處理器S3C2410通過UART介面和溫度變送器相連,通過USB介面和一個IEEE802.11b網路介面卡相連,通過RS232串口和外部PC相連。溫度變送器採集到的溫度數據輸入系統緩衝區中,處理器S3C2410可對緩衝數據直接進行相關處理;處理后的數據可以通過RS232串口傳送給外部宿主機PC,也可通過IEEE802.11b網路介面卡發送到無線區域網上。
圖1硬體系統功能
S3C2410處理器功能十分強大,資源豐富。它內部集成了ARM公司的32位微處理器ARM920T,主頻最高可達203 MHz,具有獨立的16 KB指令Cache和16 KB數據Cache,還有LCD控制器、RAM控制器、NAND快閃記憶體控制器、3路UART、4路DMA、4路帶PWM的Timer、并行I/O口、8路10位ADC、觸摸屏介面、2個USB介面控制器和2路SPI。
從外部溫度感測器採集到的數據經S3C2410 CPU數據處理模塊傳回到IEEE802.11b USB介面卡;IEEE802.11b的無線通信模塊經IEEE802.11b的接入點傳到外部乙太網絡中。
2 溫度變送器的軟體系統設計
溫度變送器軟體系統設計流程如圖2所示。系統分3步實現:
① 為溫度變送器編寫內核驅動程序;
② 編寫溫度數據採集應用程序,通過串口獲取溫度數據並進行相應的EPA報文打包處理;
③ 利用無線網路將處理數據發送給上位機。前面提到系統平台上運行的是ARM Linux。在啟動后啟用了MMU,系統進入保護模式,所以應用程序不能直接讀/寫外設的I/O區域(包括I/O埠和I/O內存)。這時一般要藉助於該外設的驅動來進入內核態完成這項工作。
圖2 軟體系統設計流程
2.1 串口的驅動實現
在Linux下,設備驅動程序可以看成Linux內核與外部設備之間的介面。設備驅動程序嚮應用程序屏蔽了硬體實現上的細節,使得應用程序可以像操作普通文件一樣來操作外部設備,可以使用和操作文件中相同的、標準的系統調用介面函數來完成對硬體設備的打開、關閉、讀/寫以及I/O控制操作; 而驅動程序的主要任務也就是要實現這些系統調用函數。本系統平台使用的嵌入式ARM Linux系統在內核主要功能上與Linux操作系統沒有本質區別,所以驅動程序要完成的任務也一樣;只是編譯時使用的編譯器、部分頭文件和庫文件等要涉及具體處理器體系結構, 這些都可在Makefile文件中具體指定。當應用程序對設備文件進行諸如open、close、read、write等系統調用操作時,Linux內核將通過file_operations結構訪問驅動程序提供的函數。例如,當應用程序對設備文件執行讀操作時, 內核將調用file_operations結構中的read函數。在系統平台上對串口數碼攝像頭驅動,首先把串口驅動模塊靜態編譯進內核,使平台支持串口;再在須使用溫度採集時,使用insmode動態載入其驅動模塊。這樣溫度感測器就可正常工作了,接著進行下一步——對溫度的採集編程。
2.2 溫度數據採集模塊
在溫度變送器串口被驅動后,需要再編寫一個採集溫度的應用程序。根據嵌入式系統開發特徵,先在宿主機上流程編寫應用程序;再使用交叉編譯器進行編譯、鏈接,生成目標平台的可執行文件。宿主機與目標板通信採用列印終端的方式進行交叉調試, 成功后移植到目標平台。編寫採集程序是在安裝Linux操作系統的宿主PC機上進行的,其程序流程如圖3所示。
圖3溫度數據採集程序
程序運行流程如下:
系統採用主從通信技術, S3C2410處理器模塊作為主設備,溫度感測器作為從設備。主設備可以對溫度感測器進行初始化,併發出查詢指令;溫度感測器根據主設備查詢指令實現相應的功能。S3C2410處理器模塊查詢的格式包括功能代碼、所有要發送的數據和CRC校驗域;從設備回應消息也包括相應的功能代碼、任何要返回的數據和CRC校驗域。如果在消息接收過程中發生錯誤,從設備將構造一錯誤幀並將其作為應答回應。程序中構造的幀格式如下:
主設備查詢幀
從設備響應幀
當主設備查詢從設備時,它希望得到從設備的正常響應,但可能有3種處理情形:
最後將採集數據用EPA協議棧打包,並利用無線網路進行傳輸。
2.3 無線網路模塊
無線溫度變換器的實時數據無線網路模塊是將無線網卡注入內核,“插槽”驅動層通過API為PC卡服務層提供服務,編寫“插槽”層驅動就是實現這些API函數。PC卡服務層維護著一張函數表,記錄已登記的“插槽”驅動層的API函數,相應地提供了兩個介面函數用來登記和取消登記一個“插槽”驅動層的API函數。定義如下:
int register_ss_entry(int nsock, ss_entry_t ss_entry);
int unregister_ss_entry(int nsock, ss_entry_t ss_entry);
typedef int (*ss_entry_t)(u_int sock, u_int cmd, void *arg);
PCMCIA“卡和插槽服務”(Card and Socket Services)軟體規範要求插槽層提供的服務共有12項,Linux操作系統定義在include\\pcmcia\\ss.h文件里。
enum ss_service {
SS_RegisterCallback, SS_InquireSocket,
SS_GetStatus, SS_GetSocket, SS_SetSocket,
SS_GetIOMap, SS_SetIOMap, SS_GetMemMap, SS_SetMemMap,
SS_GetBridge, SS_SetBridge, SS_ProcSetup
};
3 測試
首先在宿主機PC上使用交叉編譯器編譯、鏈接溫度數據採集程序,使之生成可執行代碼,然後移植到目標平台上。為了進一步觀察採集的溫度數據效果,可在目標平台帶網路支持的基礎上編寫一個網路通信程序,把採集到並處理成浮點型的溫度數據通過網路傳輸到PC機上進行顯示。搭建無線溫度變送器的測試系統如圖4所示。
圖4 IEEE802.11b
無線溫度變送器的測試系統無線監控系統採集的基於S3C2410的IEEE802.11b無線溫度變送器的實時數據如圖5所示。
圖5IEEE802.11b
4 結論
實際的溫度測量數據表明,基於IEEE802.11b的EPA溫度數據採集器可以很好地完成溫度數據的採集處理,並通過無線接入點與相關設備進行通信。另外,在基於EPA標準的無線區域網系統應用中,驗證了此設計的可行性。
參考文獻
[1] Tanenbaum Andrew S. Modern Operating System. 北京:機械工業出版社,2002.
[2] 鄒思軼. 嵌入式Linux設計與應用. 北京:清華大學出版社,2002.
[3] Karim Yagbmour. 構建嵌入式Linux系統. 北京:中國電力出版社, 2004.
[4] Sloss Anddrew N. Dominic Symes. ARM嵌入式系統開發——軟體設計與優化. 北京:北京航空航天大學出版社,2005.
[5] 毛德操,胡希明. Linux內核源代碼情景分析. 杭州:浙江大學出版社,2001.
[6] Mark Ciampa. 無線區域網設計與實現. 北京:科學出版社,2003.
[7] 國家質量技術監督局. 中華人民共和國國家標準“用於工業測量與控制系統的EPA系統結構與通信規範”(報批稿). 2005.
[admin via 研發互助社區 ] 基於IEEE802.11b的EPA溫度變送器設計已經有1517次圍觀
http://cocdig.com/docs/show-post-44889.html