亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        智能傳感器節(jié)點(diǎn)的數(shù)據(jù)處理方案設(shè)計

        2011-06-22 08:19:28周小利蘇紹璟周靖
        關(guān)鍵詞:實時性寄存器隊列

        周小利,蘇紹璟,周靖

        (國防科技大學(xué) 儀器科學(xué)與技術(shù)系,長沙410073)

        周小利(碩士研究生),主要從事網(wǎng)絡(luò)化測試方向的研究。

        引 言

        隨著嵌入式系統(tǒng)的發(fā)展,具有數(shù)據(jù)采集、處理與傳輸功能的智能傳感器節(jié)點(diǎn)近年來得到飛速發(fā)展。該節(jié)點(diǎn)可以內(nèi)置多種傳感器,采集聲、光、力學(xué)、化學(xué)、生物、位置等多種信息,并通過通信網(wǎng)絡(luò)將數(shù)據(jù)傳輸?shù)竭h(yuǎn)程處理中心。嵌入式智能傳感器節(jié)點(diǎn)是物聯(lián)網(wǎng)(ⅠOT)的重要組成部分,目前已經(jīng)在環(huán)境監(jiān)測、航空航天、通信設(shè)備、消費(fèi)類電子產(chǎn)品、智能儀器等領(lǐng)域得到廣泛應(yīng)用。

        本文設(shè)計了一種基于ARM微處理器的嵌入式智能傳感器節(jié)點(diǎn),并設(shè)計了一種并發(fā)數(shù)據(jù)的處理方案。該節(jié)點(diǎn)集成了溫度傳感器、聲傳感器、圖像傳感器,可以滿足對目標(biāo)對象的監(jiān)測需求,并可根據(jù)具體應(yīng)用配置相應(yīng)的傳感器。該技術(shù)可以廣泛用于環(huán)境監(jiān)測、智能家居、戰(zhàn)場偵察等領(lǐng)域。節(jié)點(diǎn)采集數(shù)據(jù)之后進(jìn)行簡單處理,然后通過無線網(wǎng)絡(luò)傳輸?shù)竭h(yuǎn)程數(shù)據(jù)中心,無線通信采用ⅠEEE 802.11b協(xié)議。

        1 系統(tǒng)組成與原理

        系統(tǒng)結(jié)構(gòu)如圖1所示。系統(tǒng)以ARM微處理器為數(shù)據(jù)采集、處理與轉(zhuǎn)發(fā)的核心,主要包括傳感器模塊、數(shù)據(jù)處理模塊和通信模塊。傳感器模塊包括溫度傳感器、聲傳感器、圖像傳感器,完成對監(jiān)測對象的數(shù)據(jù)采集;數(shù)據(jù)處理模塊主要包括嵌入式微處理器和相應(yīng)的外圍電路,完成數(shù)據(jù)的緩存、封裝等操作;通信模塊采用比較成熟的 Wi-Fi模塊,完成封裝后的網(wǎng)絡(luò)數(shù)據(jù)包由該模塊轉(zhuǎn)發(fā)出去。

        系統(tǒng)采用三星公司的ARM微處理器S3C2410X[1],其核心部件采用了ARM公司設(shè)計的16/32位ARM920T內(nèi)核。ARM處理器采用RSⅠC架構(gòu),具有體積小、功耗低、成本低、性能高等特點(diǎn),在消費(fèi)電子、工業(yè)控制、網(wǎng)絡(luò)、通信終端等領(lǐng)域用途廣泛。為了有效減少微控制器外部擴(kuò)展接口的數(shù)量,最大限度地降低整個系統(tǒng)的設(shè)計成本,S3C2410X內(nèi)部集成了一套較為完善的Ⅰ/O接口功能模塊。許多Ⅰ/O接口部件不僅支持中斷控制操作,也支持DMA 控制操作[1-2]。

        圖1 系統(tǒng)結(jié)構(gòu)框圖

        系統(tǒng)選用嵌入式Linux作為操作系統(tǒng),作為一種源碼開放的系統(tǒng),Linux操作系統(tǒng)具有開發(fā)成本低、內(nèi)核可定制、適用于多種硬件平臺、性能優(yōu)異、網(wǎng)絡(luò)功能強(qiáng)大、穩(wěn)定性強(qiáng)、開發(fā)工具豐富等優(yōu)點(diǎn),非常適合本系統(tǒng)。

        2 關(guān)鍵技術(shù)分析

        由于系統(tǒng)主要由于監(jiān)測,對實時性要求較高,而節(jié)點(diǎn)集成了多個傳感器,所以節(jié)點(diǎn)必須具有對并發(fā)數(shù)據(jù)較強(qiáng)的實時處理能力。

        并發(fā)數(shù)據(jù)的采集方面,一般有3種方式:查詢、中斷和DMA。查詢方式比較簡單,但是CPU的負(fù)擔(dān)較重,實時性不好,效率不高;中斷方式下CPU利用率要高,實時性較好,但CPU負(fù)擔(dān)較重,并且當(dāng)多個中斷同時發(fā)生時也會發(fā)生中斷不能及時響應(yīng)的情況;DMA采用純硬件技術(shù)控制源設(shè)備和目的設(shè)備之間的數(shù)據(jù)傳輸,CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時進(jìn)行簡單處理外,在傳輸過程中可以進(jìn)行其他工作,因此數(shù)據(jù)傳輸速率高,多個DMA通道即可實現(xiàn)并行采集。

        由于Linux是一個多用戶、多任務(wù)的操作系統(tǒng),并且基于單一的體系結(jié)構(gòu),具有良好的速度和性能,同時又不失擴(kuò)展性,在并發(fā)數(shù)據(jù)處理方面具有一定的優(yōu)勢,所以本系統(tǒng)采用Linux下的多進(jìn)程/多線程方法來實現(xiàn)并發(fā)數(shù)據(jù)的處理、轉(zhuǎn)發(fā)。同時,由于各個傳感器的數(shù)據(jù)類型、速率不同,所以采用消息隊列機(jī)制進(jìn)行進(jìn)程間通信,而在本地節(jié)點(diǎn)和遠(yuǎn)程數(shù)據(jù)中心則采用套接字(Socket)進(jìn)行通信。

        綜上所述,系統(tǒng)采用DMA+多進(jìn)程/多線程方法來提高并發(fā)數(shù)據(jù)處理的實時性,該方法軟硬結(jié)合,充分利用了系統(tǒng)軟硬件各方面的資源,最大限度地提高系統(tǒng)數(shù)據(jù)采集、處理和轉(zhuǎn)發(fā)的實時性。

        3 并發(fā)數(shù)據(jù)處理技術(shù)的實現(xiàn)

        3.1 并發(fā)數(shù)據(jù)采集技術(shù)——DMA

        大多數(shù)ARM微控制器都集成了DMA控制器(以下簡稱DMAC),作為一種獨(dú)立于CPU的后臺批量數(shù)據(jù)傳輸技術(shù)。DMA以其快速、高效的特點(diǎn),在數(shù)據(jù)采集領(lǐng)域得到廣泛應(yīng)用。

        S3C2410X微處理器內(nèi)置4通道DMAC,位于系統(tǒng)總線和外圍總線之間,每個通道分別對應(yīng)于5個硬件請求源。DMA傳送包括3種方式:Ⅰ/O接口到存儲器、存儲器到Ⅰ/O接口以及存儲器到存儲器。本系統(tǒng)中數(shù)據(jù)從Ⅰ/O接口傳送到存儲器中。

        典型DMAC工作原理如圖2所示,其數(shù)據(jù)傳送工作過程如下:

        ①外設(shè)向DMAC發(fā)出DMA傳送請求。

        ②DMAC通過連接到CPU的HOLD信號向CPU提出DMA請求。

        ③CPU在完成當(dāng)前總線操作后會立即對DMA請求作出響應(yīng)——CPU將控制總線、數(shù)據(jù)總線和地址總線浮空,放棄對這些總線的控制權(quán);CPU將有效的HLDA信號加到DMAC上,通知DMAC CPU己經(jīng)放棄了總線的控制權(quán)。

        ④CPU放棄對總線控制權(quán)后,DMAC接管系統(tǒng)總線的控制權(quán),并向外設(shè)送出DMA應(yīng)答信號。

        ⑤DMAC送出地址信號和控制信號,實現(xiàn)外設(shè)與內(nèi)存或內(nèi)存之間大量數(shù)據(jù)的快速傳送。

        ⑥D(zhuǎn)MAC將規(guī)定的數(shù)據(jù)字節(jié)傳送完之后,通過向CPU發(fā)HOLD信號,撤消對CPU的DMA請求。CPU收到此信號,使HLDA無效,同時重新開始控制總線,實現(xiàn)正常指令操作。

        圖2 典型DMAC工作原理

        DMA操作可以通過軟件、內(nèi)部外設(shè)的請求或者外部請求引腳(nXDREQ0,1)來啟動。DMAC的初始化也比較簡單,主要是相關(guān)寄存器的設(shè)置,包括源地址寄存器、目的地址寄存器和各自的控制器,以及配置DMA模式的控制寄存器等。下面以系統(tǒng)用到的UART0通道為例說明DMAC的初始化[2]:

        ① 初始化源地址寄存器(DⅠSRC)端口。寫入源數(shù)據(jù)存儲區(qū)首地址。

        ② 初始化源控制寄存器(DⅠSRCC)端口。指明源數(shù)據(jù)存儲區(qū)處于地址總線,地址自增。

        ③ 初始化目的寄存器(DⅠDST)端口。寫入UART0的FⅠFO隊列地址,由FⅠFO隊列接收來自源數(shù)據(jù)存儲區(qū)的數(shù)據(jù)。

        ④ 初始化目的控制寄存器(DⅠDSTC)端口。指明UART0處于外設(shè)總線,地址不變。

        ⑤ 初始化控制寄存器(DCON)端口。因為是內(nèi)部DMA傳送,可以任意選擇請求與響應(yīng)協(xié)議——選擇與系統(tǒng)總線同步、開放DMA通道中斷請求、單元(Unit)傳送模式、全服務(wù)(Whole Service)模式、UART0通道、硬件請求模式、非自動裝入、8位數(shù)據(jù)字長、數(shù)據(jù)塊長度為16。

        ⑥ 初始化觸發(fā)掩碼寄存器(DMASKTRⅠG)端口。開放DMA通道0,屏蔽軟件DMA請求。

        ⑦UART0的初始化。設(shè)置串行數(shù)據(jù)幀格式,使能FⅠFO發(fā)送模式,設(shè)置DMA請求模式,設(shè)置FⅠFO觸發(fā)電平,發(fā)送第一組FⅠFO數(shù)據(jù)。

        接收數(shù)據(jù)時,初始化UART0的接收緩沖區(qū)為16字節(jié)。當(dāng)接收緩沖區(qū)滿時,會產(chǎn)生DMA請求,然后在DMAC的控制下,將UART0的FⅠFO中16字節(jié)的數(shù)據(jù)轉(zhuǎn)移到指定的緩沖區(qū)SRAM中。當(dāng)數(shù)據(jù)轉(zhuǎn)移完畢(DMA計數(shù)到0)后,DMAC一方面自動重載和自動啟動,設(shè)置好目標(biāo)(緩沖區(qū))首地址、源地址(UART接收寄存器)以及DMA計數(shù)器,準(zhǔn)備好下次DMA請求,同時產(chǎn)生DMA中斷。DMA中斷服務(wù)程序?qū)θ謽?biāo)志Rev_flag置位,通知主程序有新的命令需要處理。然后主程序可以直接讀取SRAM中的數(shù)據(jù),并對Rev_flag清零,這樣就不需要花費(fèi)時間去讀取UART的接收緩沖區(qū)。

        本系統(tǒng)中,由于DMA請求源包括溫度傳感器、聲傳感器等外設(shè),可以通過以下方法解決多請求源的問題:充分利用已有的4個通道,選擇帶有合適接口的傳感器;利用總線或者多路轉(zhuǎn)換邏輯對通道進(jìn)行擴(kuò)展;多個DMA控制器級聯(lián)。在這里不作過多闡述。

        3.2 并發(fā)數(shù)據(jù)處理技術(shù)——多進(jìn)程/多線程模型

        當(dāng)各傳感器對應(yīng)的存儲空間到達(dá)設(shè)定的閾值時,會置位Rev_flag,通知主程序有新的命令需要處理。這里存在多個中斷源的并發(fā)處理問題,采用軟件中斷來解決。這里的“并發(fā)”并非真正同時處理多個請求,而是利用多進(jìn)程、多線程等技術(shù)實現(xiàn)用戶看上去的“并發(fā)”。

        Linux提供進(jìn)程和線程兩種形式的“并發(fā)”。多線程作為一種多任務(wù)、并發(fā)的模式,消耗的資源較少,而且同一個進(jìn)程所包含的多個線程間不需要通信,具有效率高、共享存儲空間等優(yōu)點(diǎn),所以系統(tǒng)在讀取存儲器的數(shù)據(jù)時使用多線程來實現(xiàn)“并發(fā)”。

        在進(jìn)行無線網(wǎng)絡(luò)通信時,為了提高發(fā)送的效率和實時性,借鑒了操作系統(tǒng)設(shè)計中“生產(chǎn)者—消費(fèi)者”模型的思想,流動的商品是數(shù)據(jù)。該模型包括兩個進(jìn)程:生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程。生產(chǎn)者進(jìn)程從存儲器中讀取數(shù)據(jù),并存放在公共緩沖區(qū)中;消費(fèi)者進(jìn)程負(fù)責(zé)與遠(yuǎn)程數(shù)據(jù)中心節(jié)點(diǎn)的通信,將數(shù)據(jù)從緩沖區(qū)中讀出,然后封裝成網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。

        生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程使用消息隊列機(jī)制進(jìn)行進(jìn)程間的通信,將消息隊列作為公共緩沖區(qū)。消息隊列能傳送更多的數(shù)據(jù)信息,組織方式也更加靈活,并可避免線程共享進(jìn)程資源和地址空間所導(dǎo)致的復(fù)雜的互斥和同步問題。消息隊列主要用于進(jìn)程間傳遞大量不同長度和格式的數(shù)據(jù)。

        消息隊列機(jī)制如圖3所示[3]。消息隊列中存放不同類型的消息包,同類型消息包由消息類型頭部結(jié)構(gòu)來組織,構(gòu)成虛擬的鏈表式消息子隊列。線程通過向消息隊列注冊模塊消息類型,創(chuàng)建專用子隊列。向消息隊列發(fā)送消息包數(shù)據(jù)時,必須指明消息包的類型,消息包將插入對應(yīng)的子隊列末尾。接收方模塊則從相應(yīng)的子隊列中獲取期望消息包。

        圖3 消息隊列機(jī)制

        進(jìn)行數(shù)據(jù)處理的多進(jìn)程/多線程模型如圖4所示。

        圖4 基于多進(jìn)程/多線程的數(shù)據(jù)處理模型

        圖4中主線程一直在運(yùn)行,負(fù)責(zé)偵聽和接收來自中斷源的連接請求。當(dāng)Rev_flag置位時,就會向主線程發(fā)出連接請求,主線程將創(chuàng)建對應(yīng)的從線程負(fù)責(zé)處理連接,接收存儲器中的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到消息隊列中,直到數(shù)據(jù)接收完畢,從線程終止。在系統(tǒng)中,使用消息類型來區(qū)分不同的線程,也就是不同的數(shù)據(jù)源。

        要使用消息隊列,首先要創(chuàng)建一個消息隊列,創(chuàng)建的消息隊列位于內(nèi)核中。消息隊列的編程接口(APⅠ)共有4個[4],如表1所列。

        表1 消息隊列API

        下面列出了對消息隊列進(jìn)行操作的部分程序代碼[5]:

        4 無線通信模塊

        Wi-Fi(Wireless Fidelity)是ⅠEEE定義的無線通信標(biāo)準(zhǔn)ⅠEEE 802.11,它是1種無線局域網(wǎng)的標(biāo)準(zhǔn)。相比其他無線通信方式,Wi-Fi具有傳輸速率高、部署容易、應(yīng)用規(guī)模大、經(jīng)濟(jì)性好等優(yōu)勢,同時還具有易擴(kuò)展、易管理、易維護(hù)、抗干擾等特點(diǎn)。

        在Linux系統(tǒng)中,可以調(diào)用Socket套接字實現(xiàn)網(wǎng)絡(luò)通信功能,用戶只需要完成模塊的移植和配置,而無需了解底層網(wǎng)絡(luò)細(xì)節(jié)。在工作時,嵌入式節(jié)點(diǎn)充當(dāng)客戶端,運(yùn)行發(fā)送進(jìn)程,在需要傳輸數(shù)據(jù)時發(fā)送連接請求。遠(yuǎn)程數(shù)據(jù)中心節(jié)點(diǎn)為服務(wù)器端,運(yùn)行接收進(jìn)程來響應(yīng)客戶端的連接,接收數(shù)據(jù)。

        目前,Ⅰnternet給分布式應(yīng)用提供兩類服務(wù):面向連接的服務(wù)和無連接的服務(wù),分別由TCP和UDP提供。由于系統(tǒng)對數(shù)據(jù)傳輸?shù)膶崟r性要求較高,所以在這里使用UDP,因為UDP協(xié)議不需要建立一個明確的連接,并且不需要每次對發(fā)送數(shù)據(jù)進(jìn)行確認(rèn),所以比TCP更高效,能更好地解決實時性問題。

        在使用Wi-Fi模塊前,首先編譯好模塊的驅(qū)動程序,并將其移植到目標(biāo)板上。在發(fā)送數(shù)據(jù)時,首先將消息隊列里的數(shù)據(jù)交給TCP/ⅠP協(xié)議棧,TCP/ⅠP協(xié)議棧根據(jù)目的地址和端口將該數(shù)據(jù)封裝成完整的UDP數(shù)據(jù)包,接著在ⅠP層被封裝為ⅠP包,然后提交給Wi-Fi驅(qū)動模塊,并封裝成ⅠEEE 802.11b格式的數(shù)據(jù)包,由 Wi-Fi模塊發(fā)送到遠(yuǎn)程數(shù)據(jù)中心。

        結(jié) 語

        嵌入式系統(tǒng)應(yīng)用越來越廣泛,本文設(shè)計了一種基于ARM微處理器S3C2410X和嵌入式Linux操作系統(tǒng)的智能傳感器節(jié)點(diǎn),能夠同時采集、處理多種環(huán)境參數(shù),可以廣泛地應(yīng)用于環(huán)境監(jiān)測等領(lǐng)域。針對多種數(shù)據(jù)并發(fā)處理的難題,本文提出了一種DMA+多進(jìn)程/多線程的方法,該方法軟硬結(jié)合,相比于其他技術(shù),可以有效提高監(jiān)測的速度和實時性。目前,該技術(shù)已在某監(jiān)控系統(tǒng)中得到應(yīng)用。

        [1]Samsung Electronics.S3C2410X[EB/OL].(2004-03-26)[2011-07].http://www.samsung.com.

        [2]大獎賽組委會.ARM應(yīng)用技術(shù)論文大獎賽論文集[M].北京:北京航空航天大學(xué)出版社,2006:67-72.

        [3]黃杰生,張宇,許潔斌.結(jié)合消息隊列機(jī)制的多線程TCP通信開發(fā)平臺[J].計算機(jī)應(yīng)用研究,2004,21(5):247-249.

        [4]杜毅,楊金生,吳震華.Linux消息隊列分析及應(yīng)用[J].計算機(jī)工程,2004,30(B12):175-177.

        [5]李超,肖建.嵌入式Linux開發(fā)技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2008.

        猜你喜歡
        實時性寄存器隊列
        基于規(guī)則實時性的端云動態(tài)分配方法研究
        Lite寄存器模型的設(shè)計與實現(xiàn)
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        在隊列里
        基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
        豐田加速駛?cè)胱詣玉{駛隊列
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        航空電子AFDX與AVB傳輸實時性抗干擾對比
        一種車載Profibus總線系統(tǒng)的實時性分析
        国产精品日日做人人爱| 欧美性爱一区二区三区无a| 漂亮的小少妇诱惑内射系列 | 一区二区三区岛国av毛片| 国产一区二区三区免费av| 精品无码av无码专区| 亚洲av不卡一区二区三区| 无码夜色一区二区三区| www.尤物视频.com| 91精品亚洲熟妇少妇| 日韩精品中文一区二区三区在线 | 无码h黄肉3d动漫在线观看| 白天躁晚上躁麻豆视频| 人妻丰满熟av无码区hd| 和外国人做人爱视频| 欧美一级人与嘼视频免费播放| 亚洲精品国产精品av| 亚洲白嫩少妇在线喷水| 亚洲熟女精品中文字幕| 狠狠色噜噜狠狠狠狠7777米奇| 日本午夜国产精彩| 亚洲国产精品午夜一区| 中文字幕av长濑麻美| 在线看无码的免费网站| 中文字幕人妻丝袜美腿乱| 精品久久久久久99人妻| 国产精品女同一区二区免| 日韩精品 在线 国产 丝袜| 久久久久亚洲精品中文字幕 | 国产精品18久久久久久首页| 亚洲无av码一区二区三区| 日本一区二区三区视频网站| 岳好紧好湿夹太紧了好爽矜持| 98在线视频噜噜噜国产| 国产精品久久国产精品久久| 日韩精品极品免费视频观看| 7m精品福利视频导航| 亚洲人成无码网站久久99热国产| 五月婷婷激情六月开心| 国产免费人成视频网站在线18| 国产md视频一区二区三区|