當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于IEEE802.11b的EPA溫度變送器設(shè)計(jì)

摘要:介紹一種基于IEEE802?11b的EPA溫度變送器的設(shè)計(jì)方案,闡述系統(tǒng)硬件和軟件結(jié)構(gòu),說(shuō)明嵌入式Linux系統(tǒng)中驅(qū)動(dòng)程序的開(kāi)發(fā)過(guò)程。系統(tǒng)以S3C2410為核心器件,可以很好地完成溫度數(shù)據(jù)的采集處理,并可以通過(guò)IEEE802?11b接入點(diǎn)與相關(guān)設(shè)備進(jìn)行通信,且在基于EPA標(biāo)準(zhǔn)的無(wú)線局域網(wǎng)系統(tǒng)中進(jìn)行了測(cè)試。
關(guān)鍵詞:EPA IEEE802.11b 嵌入式Linux 溫度變送器

引言
   
IEEE802.11是IEEE無(wú)線局域網(wǎng)標(biāo)準(zhǔn),主要用于用戶終端的無(wú)線接入。IEEE802.11只規(guī)定了開(kāi)放式系統(tǒng)互聯(lián)參考模型的物理層和介質(zhì)訪問(wèn)子層,其MAC層利用載波監(jiān)聽(tīng)多路訪問(wèn)/沖突避免(CSMA/CA)協(xié)議;定義了單一的MAC層和多樣的物理層,其物理層標(biāo)準(zhǔn)主要有IEEE802.11b、IEEE802?11a和IEEE802?11g。IEEE802.11b標(biāo)準(zhǔn)是IEEE802.11協(xié)議標(biāo)準(zhǔn)的擴(kuò)展,最高可以支持11 Mbps的數(shù)據(jù)速率,運(yùn)行在2.4 GHz的ISM頻段上,采用的調(diào)制技術(shù)是CCK,支持?jǐn)?shù)據(jù)業(yè)務(wù)。

  本文詳細(xì)分析了采用S3C2410處理器平臺(tái)具體實(shí)現(xiàn)運(yùn)用于EPA網(wǎng)絡(luò)的IEEE802.11b無(wú)線實(shí)時(shí)溫度采集器的開(kāi)發(fā)流程,并對(duì)串口通信的調(diào)試手段及常見(jiàn)問(wèn)題進(jìn)行了探討。

1 溫度變送器的硬件設(shè)計(jì)

  溫度變送器系統(tǒng)平臺(tái)硬件系統(tǒng)功能如圖1所示。該平臺(tái)的核心器件是Samsung公司的處理器S3C2410,外部擴(kuò)展了16 MB、16位的Flash內(nèi)存和64 MB、32位的SDRAM。處理器S3C2410通過(guò)UART接口和溫度變送器相連,通過(guò)USB接口和一個(gè)IEEE802.11b網(wǎng)絡(luò)接口卡相連,通過(guò)RS232串口和外部PC相連。溫度變送器采集到的溫度數(shù)據(jù)輸入系統(tǒng)緩沖區(qū)中,處理器S3C2410可對(duì)緩沖數(shù)據(jù)直接進(jìn)行相關(guān)處理;處理后的數(shù)據(jù)可以通過(guò)RS232串口傳送給外部宿主機(jī)PC,也可通過(guò)IEEE802.11b網(wǎng)絡(luò)接口卡發(fā)送到無(wú)線局域網(wǎng)上。

  S3C2410處理器功能十分強(qiáng)大,資源豐富。它內(nèi)部集成了ARM公司的32位微處理器ARM920T,主頻最高可達(dá)203 MHz,具有獨(dú)立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,還有LCD控制器、RAM控制器、NAND閃存控制器、3路UART、4路DMA、4路帶PWM的Timer、并行I/O口、8路10位ADC、觸摸屏接口、2個(gè)USB接口控制器和2路SPI。

  從外部溫度傳感器采集到的數(shù)據(jù)經(jīng)S3C2410 CPU數(shù)據(jù)處理模塊傳回到IEEE802.11b USB接口卡;IEEE802.11b的無(wú)線通信模塊經(jīng)IEEE802.11b的接入點(diǎn)傳到外部以太網(wǎng)絡(luò)中。


圖1硬件系統(tǒng)功能

2 溫度變送器的軟件系統(tǒng)設(shè)計(jì)

  溫度變送器軟件系統(tǒng)設(shè)計(jì)流程如圖2所示。系統(tǒng)分3步實(shí)現(xiàn):① 為溫度變送器編寫(xiě)內(nèi)核驅(qū)動(dòng)程序;② 編寫(xiě)溫度數(shù)據(jù)采集應(yīng)用程序,通過(guò)串口獲取溫度數(shù)據(jù)并進(jìn)行相應(yīng)的EPA報(bào)文打包處理;③ 利用無(wú)線網(wǎng)絡(luò)將處理數(shù)據(jù)發(fā)送給上位機(jī)。前面提到系統(tǒng)平臺(tái)上運(yùn)行的是ARM Linux。在啟動(dòng)后啟用了MMU,系統(tǒng)進(jìn)入保護(hù)模式,所以應(yīng)用程序不能直接讀/寫(xiě)外設(shè)的I/O區(qū)域(包括I/O端口和I/O內(nèi)存)。這時(shí)一般要借助于該外設(shè)的驅(qū)動(dòng)來(lái)進(jìn)入內(nèi)核態(tài)完成這項(xiàng)工作。


圖2軟件系統(tǒng)設(shè)計(jì)流程

2.1 串口的驅(qū)動(dòng)實(shí)現(xiàn)

  在Linux下,設(shè)備驅(qū)動(dòng)程序可以看成Linux內(nèi)核與外部設(shè)備之間的接口。設(shè)備驅(qū)動(dòng)程序向應(yīng)用程序屏蔽了硬件實(shí)現(xiàn)上的細(xì)節(jié),使得應(yīng)用程序可以像操作普通文件一樣來(lái)操作外部設(shè)備,可以使用和操作文件中相同的、標(biāo)準(zhǔn)的系統(tǒng)調(diào)用接口函數(shù)來(lái)完成對(duì)硬件設(shè)備的打開(kāi)、關(guān)閉、讀/寫(xiě)以及I/O控制操作; 而驅(qū)動(dòng)程序的主要任務(wù)也就是要實(shí)現(xiàn)這些系統(tǒng)調(diào)用函數(shù)。本系統(tǒng)平臺(tái)使用的嵌入式ARM Linux系統(tǒng)在內(nèi)核主要功能上與Linux操作系統(tǒng)沒(méi)有本質(zhì)區(qū)別,所以驅(qū)動(dòng)程序要完成的任務(wù)也一樣;只是編譯時(shí)使用的編譯器、部分頭文件和庫(kù)文件等要涉及具體處理器體系結(jié)構(gòu), 這些都可在Makefile文件中具體指定。當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行諸如open、close、read、write等系統(tǒng)調(diào)用操作時(shí),Linux內(nèi)核將通過(guò)file_operations結(jié)構(gòu)訪問(wèn)驅(qū)動(dòng)程序提供的函數(shù)。例如,當(dāng)應(yīng)用程序?qū)υO(shè)備文件執(zhí)行讀操作時(shí), 內(nèi)核將調(diào)用file_operations結(jié)構(gòu)中的read函數(shù)。在系統(tǒng)平臺(tái)上對(duì)串口數(shù)碼攝像頭驅(qū)動(dòng),首先把串口驅(qū)動(dòng)模塊靜態(tài)編譯進(jìn)內(nèi)核,使平臺(tái)支持串口;再在須使用溫度采集時(shí),使用insmode動(dòng)態(tài)加載其驅(qū)動(dòng)模塊。這樣溫度傳感器就可正常工作了,接著進(jìn)行下一步——對(duì)溫度的采集編程。

2.2 溫度數(shù)據(jù)采集模塊

  在溫度變送器串口被驅(qū)動(dòng)后,需要再編寫(xiě)一個(gè)采集溫度的應(yīng)用程序。根據(jù)嵌入式系統(tǒng)開(kāi)發(fā)特征,先在宿主機(jī)上流程編寫(xiě)應(yīng)用程序;再使用交叉編譯器進(jìn)行編譯、鏈接,生成目標(biāo)平臺(tái)的可執(zhí)行文件。宿主機(jī)與目標(biāo)板通信采用打印終端的方式進(jìn)行交叉調(diào)試, 成功后移植到目標(biāo)平臺(tái)。編寫(xiě)采集程序是在安裝Linux操作系統(tǒng)的宿主PC機(jī)上進(jìn)行的,其程序流程如圖3所示。


圖3溫度數(shù)據(jù)采集程序

  程序運(yùn)行流程如下:

  ① 初始化設(shè)備功能,發(fā)送03H給溫度變送器。如果初始化失敗,則重復(fù)發(fā)送初始化功能碼2次,若都失敗則返回;若成功則進(jìn)入下一步。
 ?、?進(jìn)行數(shù)據(jù)查詢,查詢消息中的功能代碼告之被選中的從設(shè)備要實(shí)現(xiàn)何種功能。數(shù)據(jù)段包含了從設(shè)備要實(shí)現(xiàn)功能的任何附加信息,即讀取或修改的起始地址以及數(shù)據(jù)數(shù)量。CRC校驗(yàn)為從設(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。
 ?、?如果從設(shè)備產(chǎn)生一個(gè)正常的響應(yīng),則響應(yīng)消息中的功能代碼是查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù)。如果有錯(cuò)誤發(fā)生,則從設(shè)備將修改功能代碼以表明此回應(yīng)是一個(gè)異常的回應(yīng);同時(shí)數(shù)據(jù)段中包含相應(yīng)的錯(cuò)誤代碼,CRC校驗(yàn)用于主設(shè)備判斷響應(yīng)幀內(nèi)容的正確性。
  ④ 將從設(shè)備得到的數(shù)據(jù)運(yùn)用EPA協(xié)議棧進(jìn)行數(shù)據(jù)的封裝,然后通過(guò)IEEE802.11b無(wú)線網(wǎng)卡發(fā)送到數(shù)據(jù)分析設(shè)備。
  ⑤ 根據(jù)對(duì)數(shù)據(jù)的處理,將得到返回的數(shù)據(jù),程序再將返回?cái)?shù)據(jù)寫(xiě)入從設(shè)備。如果寫(xiě)入失敗,則連續(xù)寫(xiě)兩次,若仍失敗則跳出。

  系統(tǒng)采用主從通信技術(shù), S3C2410處理器模塊作為主設(shè)備,溫度傳感器作為從設(shè)備。主設(shè)備可以對(duì)溫度傳感器進(jìn)行初始化,并發(fā)出查詢指令;溫度傳感器根據(jù)主設(shè)備查詢指令實(shí)現(xiàn)相應(yīng)的功能。S3C2410處理器模塊查詢的格式包括功能代碼、所有要發(fā)送的數(shù)據(jù)和CRC校驗(yàn)域;從設(shè)備回應(yīng)消息也包括相應(yīng)的功能代碼、任何要返回的數(shù)據(jù)和CRC校驗(yàn)域。如果在消息接收過(guò)程中發(fā)生錯(cuò)誤,從設(shè)備將構(gòu)造一錯(cuò)誤幀并將其作為應(yīng)答回應(yīng)。程序中構(gòu)造的幀格式如下:

  主設(shè)備查詢幀


  從設(shè)備響應(yīng)幀

  當(dāng)主設(shè)備查詢從設(shè)備時(shí),它希望得到從設(shè)備的正常響應(yīng),但可能有3種處理情形:

 ?、?從設(shè)備收到了主設(shè)備的查詢,且全部校驗(yàn)正確,從設(shè)備就產(chǎn)生正確的響應(yīng)。
 ?、?從設(shè)備由于通信錯(cuò)誤等沒(méi)有收到主設(shè)備的查詢,因此也就無(wú)法產(chǎn)生響應(yīng)。這時(shí)主設(shè)備將通過(guò)超時(shí)判斷查詢的錯(cuò)誤。
  ③ 從設(shè)備收到了主設(shè)備的查詢,但檢測(cè)出通信幀內(nèi)容出錯(cuò)(如CRC校驗(yàn)出錯(cuò)或非法的起始地址等),這時(shí)從設(shè)備將產(chǎn)生異常響應(yīng)通知主設(shè)備相關(guān)的錯(cuò)誤信息。

  最后將采集數(shù)據(jù)用EPA協(xié)議棧打包,并利用無(wú)線網(wǎng)絡(luò)進(jìn)行傳輸。

2.3 無(wú)線網(wǎng)絡(luò)模塊

  無(wú)線溫度變換器的實(shí)時(shí)數(shù)據(jù)無(wú)線網(wǎng)絡(luò)模塊是將無(wú)線網(wǎng)卡注入內(nèi)核,“插槽”驅(qū)動(dòng)層通過(guò)API為PC卡服務(wù)層提供服務(wù),編寫(xiě)“插槽”層驅(qū)動(dòng)就是實(shí)現(xiàn)這些API函數(shù)。PC卡服務(wù)層維護(hù)著一張函數(shù)表,記錄已登記的“插槽”驅(qū)動(dòng)層的API函數(shù),相應(yīng)地提供了兩個(gè)接口函數(shù)用來(lái)登記和取消登記一個(gè)“插槽”驅(qū)動(dòng)層的API函數(shù)。定義如下:

  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);

  ◆ 函數(shù)register_ss_entry: 用來(lái)登記一個(gè)“插槽”驅(qū)動(dòng)層服務(wù)函數(shù)。
  ◆ 函數(shù)unregister_ss_entry: 用來(lái)取消指定函數(shù)的登記,表明“插槽”層不再提供該服務(wù)。
  ◆ 具體服務(wù)函數(shù)ss_sentry: 該函數(shù)的編寫(xiě)是核心。它包括3個(gè)參數(shù): 第1個(gè)參數(shù)sock是插槽編號(hào);第2個(gè)參數(shù)cmd是命令,即服務(wù)函數(shù)的編碼;第3個(gè)參數(shù)是一個(gè)void類型的指針,用來(lái)傳遞任意的參數(shù)。

  PCMCIA“卡和插槽服務(wù)”(Card and Socket Services)軟件規(guī)范要求插槽層提供的服務(wù)共有12項(xiàng),Linux操作系統(tǒng)定義在includepcmciass.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 測(cè)試

  首先在宿主機(jī)PC上使用交叉編譯器編譯、鏈接溫度數(shù)據(jù)采集程序,使之生成可執(zhí)行代碼,然后移植到目標(biāo)平臺(tái)上。為了進(jìn)一步觀察采集的溫度數(shù)據(jù)效果,可在目標(biāo)平臺(tái)帶網(wǎng)絡(luò)支持的基礎(chǔ)上編寫(xiě)一個(gè)網(wǎng)絡(luò)通信程序,把采集到并處理成浮點(diǎn)型的溫度數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)絇C機(jī)上進(jìn)行顯示。搭建無(wú)線溫度變送器的測(cè)試系統(tǒng)如圖4所示。


圖4IEEE802.11b

  無(wú)線溫度變送器的測(cè)試系統(tǒng)無(wú)線監(jiān)控系統(tǒng)采集的基于S3C2410的IEEE802.11b無(wú)線溫度變送器的實(shí)時(shí)數(shù)據(jù)如圖5所示。


圖5IEEE802.11b

4 結(jié)論

  實(shí)際的溫度測(cè)量數(shù)據(jù)表明,基于IEEE802.11b的EPA溫度數(shù)據(jù)采集器可以很好地完成溫度數(shù)據(jù)的采集處理,并通過(guò)無(wú)線接入點(diǎn)與相關(guān)設(shè)備進(jìn)行通信。另外,在基于EPA標(biāo)準(zhǔn)的無(wú)線局域網(wǎng)系統(tǒng)應(yīng)用中,驗(yàn)證了此設(shè)計(jì)的可行性。

參考文獻(xiàn)
[1] Tanenbaum Andrew S. Modern Operating System. 北京:機(jī)械工業(yè)出版社,2002.
[2] 鄒思軼. 嵌入式Linux設(shè)計(jì)與應(yīng)用. 北京:清華大學(xué)出版社,2002.
[3] Karim Yagbmour. 構(gòu)建嵌入式Linux系統(tǒng). 北京:中國(guó)電力出版社, 2004.
[4] Sloss Anddrew N. Dominic Symes. ARM嵌入式系統(tǒng)開(kāi)發(fā)——軟件設(shè)計(jì)與優(yōu)化. 北京:北京航空航天大學(xué)出版社,2005.
[5] 毛德操,胡希明. Linux內(nèi)核源代碼情景分析. 杭州:浙江大學(xué)出版社,2001.
[6] Mark Ciampa. 無(wú)線局域網(wǎng)設(shè)計(jì)與實(shí)現(xiàn). 北京:科學(xué)出版社,2003.
[7] 國(guó)家質(zhì)量技術(shù)監(jiān)督局. 中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)“用于工業(yè)測(cè)量與控制系統(tǒng)的EPA系統(tǒng)結(jié)構(gòu)與通信規(guī)范”(報(bào)批稿). 2005.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉