999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2011-06-22 08:19:28周小利蘇紹璟周靖
關(guān)鍵詞:進(jìn)程系統(tǒng)

周小利,蘇紹璟,周靖

(國防科技大學(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)測,對實(shí)時性要求較高,而節(jié)點(diǎn)集成了多個傳感器,所以節(jié)點(diǎn)必須具有對并發(fā)數(shù)據(jù)較強(qiáng)的實(shí)時處理能力。

并發(fā)數(shù)據(jù)的采集方面,一般有3種方式:查詢、中斷和DMA。查詢方式比較簡單,但是CPU的負(fù)擔(dān)較重,實(shí)時性不好,效率不高;中斷方式下CPU利用率要高,實(shí)時性較好,但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通道即可實(shí)現(xiàn)并行采集。

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

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

3 并發(fā)數(shù)據(jù)處理技術(shù)的實(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送出地址信號和控制信號,實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存之間大量數(shù)據(jù)的快速傳送。

⑥D(zhuǎn)MAC將規(guī)定的數(shù)據(jù)字節(jié)傳送完之后,通過向CPU發(fā)HOLD信號,撤消對CPU的DMA請求。CPU收到此信號,使HLDA無效,同時重新開始控制總線,實(shí)現(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隊(duì)列地址,由FⅠFO隊(duì)列接收來自源數(shù)據(jù)存儲區(qū)的數(shù)據(jù)。

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

⑤ 初始化控制寄存器(DCON)端口。因?yàn)槭莾?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ù)實(shí)現(xiàn)用戶看上去的“并發(fā)”。

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

在進(jìn)行無線網(wǎng)絡(luò)通信時,為了提高發(fā)送的效率和實(shí)時性,借鑒了操作系統(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)程使用消息隊(duì)列機(jī)制進(jìn)行進(jìn)程間的通信,將消息隊(duì)列作為公共緩沖區(qū)。消息隊(duì)列能傳送更多的數(shù)據(jù)信息,組織方式也更加靈活,并可避免線程共享進(jìn)程資源和地址空間所導(dǎo)致的復(fù)雜的互斥和同步問題。消息隊(duì)列主要用于進(jìn)程間傳遞大量不同長度和格式的數(shù)據(jù)。

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

圖3 消息隊(duì)列機(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ā)送到消息隊(duì)列中,直到數(shù)據(jù)接收完畢,從線程終止。在系統(tǒng)中,使用消息類型來區(qū)分不同的線程,也就是不同的數(shù)據(jù)源。

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

表1 消息隊(duì)列API

下面列出了對消息隊(duì)列進(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套接字實(shí)現(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ù)膶?shí)時性要求較高,所以在這里使用UDP,因?yàn)閁DP協(xié)議不需要建立一個明確的連接,并且不需要每次對發(fā)送數(shù)據(jù)進(jìn)行確認(rèn),所以比TCP更高效,能更好地解決實(shí)時性問題。

在使用Wi-Fi模塊前,首先編譯好模塊的驅(qū)動程序,并將其移植到目標(biāo)板上。在發(fā)送數(shù)據(jù)時,首先將消息隊(duì)列里的數(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í)時性。目前,該技術(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é)合消息隊(duì)列機(jī)制的多線程TCP通信開發(fā)平臺[J].計算機(jī)應(yīng)用研究,2004,21(5):247-249.

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

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

猜你喜歡
進(jìn)程系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
我國高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
男女平等進(jìn)程中出現(xiàn)的新矛盾和新問題
主站蜘蛛池模板: 精品国产aⅴ一区二区三区| 国产一国产一有一级毛片视频| 亚洲an第二区国产精品| 国产精品视频系列专区| 亚洲成人www| 免费毛片全部不收费的| 在线观看视频99| 国产精品va| 四虎精品免费久久| 日本www色视频| 欧美伦理一区| 91国内在线观看| 国产精品亚洲一区二区三区在线观看| 伊人无码视屏| 91福利国产成人精品导航| 亚洲精品无码抽插日韩| 亚洲精品少妇熟女| 麻豆AV网站免费进入| 亚洲精品午夜无码电影网| 久久久久无码精品| 99久久国产精品无码| 国产三级成人| 强乱中文字幕在线播放不卡| 狂欢视频在线观看不卡| 亚洲成人在线免费观看| 在线色综合| 国产精女同一区二区三区久| 无码一区18禁| 手机精品视频在线观看免费| 国产白浆在线| 国产欧美自拍视频| 亚洲精品日产精品乱码不卡| 欧美在线黄| 精品无码国产一区二区三区AV| 久久性视频| 亚洲日韩久久综合中文字幕| 精品少妇人妻无码久久| 中文无码精品A∨在线观看不卡| 三区在线视频| 亚洲男人的天堂久久香蕉网| 全午夜免费一级毛片| 久久99国产综合精品女同| 久久国产av麻豆| 国产在线麻豆波多野结衣| 中文字幕日韩丝袜一区| 多人乱p欧美在线观看| 中文字幕有乳无码| 国产成人精彩在线视频50| 这里只有精品在线| 丁香六月综合网| 国产91熟女高潮一区二区| 成人精品视频一区二区在线| 婷婷综合色| 夜夜操天天摸| 极品尤物av美乳在线观看| 国产无码性爱一区二区三区| 亚洲日韩精品综合在线一区二区| 91在线中文| 国产成人精品免费av| 日韩精品无码免费一区二区三区| 又黄又湿又爽的视频| 91精品国产福利| 欧美无遮挡国产欧美另类| 国产一区在线视频观看| 91口爆吞精国产对白第三集| 成人无码一区二区三区视频在线观看| 在线观看国产精品日本不卡网| 日韩人妻少妇一区二区| 91热爆在线| 日韩毛片基地| 亚洲男人的天堂在线观看| 高清无码一本到东京热| 丁香婷婷在线视频| 69综合网| 国产欧美视频综合二区| 久久不卡精品| 伊人久久精品无码麻豆精品 | 日本人真淫视频一区二区三区 | 日本少妇又色又爽又高潮| 国产乱人视频免费观看| 天堂岛国av无码免费无禁网站| 狠狠色成人综合首页|