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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的火災(zāi)信息傳輸網(wǎng)關(guān)設(shè)計(jì)

          基于ARM的火災(zāi)信息傳輸網(wǎng)關(guān)設(shè)計(jì)

          作者: 時(shí)間:2011-03-08 來(lái)源:網(wǎng)絡(luò) 收藏

          3.2 總體概述
          網(wǎng)關(guān)軟件系統(tǒng)按照功能分為4個(gè)模塊。
          (1)網(wǎng)絡(luò)通信模塊
          主要負(fù)責(zé)信息往網(wǎng)絡(luò)上的傳遞,將該網(wǎng)關(guān)獲取的火警,故障等信息依照特定的網(wǎng)絡(luò)協(xié)議準(zhǔn)確無(wú)誤地傳遞給上層的應(yīng)用服務(wù)器,同時(shí)還要負(fù)責(zé)接收來(lái)自服務(wù)器的數(shù)據(jù),如配置信息,控制指令等。具體來(lái)說(shuō),網(wǎng)絡(luò)通信模塊又可以分為兩個(gè)子模塊:數(shù)據(jù)通信和數(shù)據(jù)處理。數(shù)據(jù)通信的工作只是負(fù)責(zé)從網(wǎng)絡(luò)上獲取數(shù)據(jù)或者將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)。數(shù)據(jù)處理主要負(fù)責(zé)組包和解包,涉及到通信協(xié)議。當(dāng)數(shù)據(jù)區(qū)有數(shù)據(jù)需要網(wǎng)絡(luò)通信模塊處理時(shí),數(shù)據(jù)處理子模塊會(huì)首先從數(shù)據(jù)區(qū)取出數(shù)據(jù),并分析、判斷數(shù)據(jù)類(lèi)型,根據(jù)數(shù)據(jù)類(lèi)型組包,然后將包交給數(shù)據(jù)通信子模塊發(fā)送。
          (2)串口采集模塊
          主要負(fù)責(zé)通過(guò)串口獲取消防主機(jī)的狀態(tài),并進(jìn)行分析,分離出有用信息,并將其寫(xiě)入數(shù)據(jù)區(qū),供其他模塊使用,它是信息傳輸網(wǎng)關(guān)的核心。
          由于消防主機(jī)眾多,而且協(xié)議又各不相同,因此串口采集模塊需要根據(jù)消防主機(jī)定制。在此,同樣將串口采集模塊分為兩個(gè)子模塊:數(shù)據(jù)采集和數(shù)據(jù)加工。數(shù)據(jù)采集通過(guò)特定的對(duì)話方式(和具體的消防主機(jī)有關(guān))從消防主機(jī)獲取數(shù)據(jù),數(shù)據(jù)加工讀取這些數(shù)據(jù),并按照消防主機(jī)協(xié)議進(jìn)行解析,提取初步的信息,如消息類(lèi)型(火警還是故障),探頭地址(內(nèi)部編碼地址)。然后依照內(nèi)部協(xié)議組包,并寫(xiě)入數(shù)據(jù)區(qū),以后的工作就交由網(wǎng)絡(luò)通信模塊。
          (3)系統(tǒng)控制模塊
          主要用于控制信息傳輸網(wǎng)關(guān)的硬件設(shè)備,如指示燈、按鍵、燈等。它從數(shù)據(jù)區(qū)讀取控制指令,根據(jù)控制指令執(zhí)行特定的硬件控制??刂浦噶羁赡苡删W(wǎng)絡(luò)通信模塊產(chǎn)生,如上層服務(wù)器發(fā)送查崗請(qǐng)求,網(wǎng)絡(luò)通信模塊經(jīng)過(guò)數(shù)據(jù)處理轉(zhuǎn)化為響喇叭指令,寫(xiě)入數(shù)據(jù)區(qū)。當(dāng)然,控制指令可以由任何模塊產(chǎn)生。系統(tǒng)控制模塊可以返回硬件狀態(tài)信息,也是通過(guò)寫(xiě)狀態(tài)信息到數(shù)據(jù)區(qū)來(lái)實(shí)現(xiàn)信息傳遞的。
          (4)系統(tǒng)維護(hù)模塊
          主要負(fù)責(zé)確保系統(tǒng)各個(gè)模塊的正常運(yùn)行,同時(shí)記錄及上傳工作日志,供系統(tǒng)維護(hù)人員參考,同時(shí)收集上來(lái)的數(shù)據(jù)經(jīng)過(guò)分析和挖掘,可以作為產(chǎn)品性能指標(biāo)制定的依據(jù)。各模塊在建立之初將會(huì)在數(shù)據(jù)區(qū)注冊(cè),維護(hù)模塊通過(guò)這個(gè)注冊(cè)信息實(shí)現(xiàn)心跳應(yīng)答機(jī)制來(lái)判斷各個(gè)模塊的工作狀態(tài)。同時(shí),還將數(shù)據(jù)區(qū)中的日志信息提取出來(lái)寫(xiě)入日志文件,并提出發(fā)送日志文件請(qǐng)求給網(wǎng)絡(luò)通信模塊。
          每個(gè)模塊依照分工完成職能之內(nèi)的工作,不屬于職能內(nèi)的工作通過(guò)寫(xiě)入數(shù)據(jù)區(qū)交由職能模塊去完成。數(shù)據(jù)區(qū)是各個(gè)模塊傳遞信息的媒介,通過(guò)格式化的數(shù)據(jù)寫(xiě)入和讀取,實(shí)現(xiàn)模塊間的信息共享和職能分工。
          3.3 各模塊詳細(xì)設(shè)計(jì)
          3.3.1 流程分析
          核心管理模塊是嵌入式網(wǎng)關(guān)入口,當(dāng)嵌入式網(wǎng)關(guān)加電啟動(dòng),嵌入式網(wǎng)關(guān)的操作系統(tǒng)負(fù)責(zé)啟動(dòng)核心管理模塊。此時(shí),其他模塊還未啟動(dòng)。核心模塊首先為其他模塊啟動(dòng)初始化系統(tǒng)環(huán)境,如創(chuàng)建管道,共享內(nèi)存等。接著,核心模塊啟動(dòng)其他模塊。這時(shí),系統(tǒng)將啟動(dòng)完成。接著,核心模塊建立定時(shí)器,創(chuàng)建定時(shí)器是為了定時(shí)地檢測(cè)其他模塊,以判斷其他模塊的狀態(tài),稱(chēng)這個(gè)過(guò)程為“心跳”。
          當(dāng)以上過(guò)程完成后,核心管理模塊開(kāi)始監(jiān)視所有管道,當(dāng)管道有數(shù)據(jù)時(shí),他讀取定長(zhǎng)的數(shù)據(jù)并分析,找出源地址、目的地址及命令字。根據(jù)命令字類(lèi)型的不同做不同的處理。程序流程圖如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/150981.htm

          d.JPG
          (1)初始化。初始化的主要工作是為模塊間的通信建立有名管道,每個(gè)與核心模塊通信的進(jìn)程有一個(gè)管道。當(dāng)前系統(tǒng)需要?jiǎng)?chuàng)建四個(gè)管道。其他模塊如果想要使用管道,必須首先打開(kāi)管道。所有與管道的通信都有API供其他用戶使用。
          (2)啟動(dòng)其他模塊。核心模塊通過(guò)子進(jìn)程調(diào)用execl()來(lái)啟動(dòng)其他模塊。每個(gè)其他模塊都是一個(gè)可執(zhí)行程序,通常位于一個(gè)固定的路徑及固定的文件名。每個(gè)模塊在啟動(dòng)之后需要向核心模塊發(fā)送注冊(cè)信息,這些信息包括模塊標(biāo)識(shí)、進(jìn)程ID、進(jìn)程狀態(tài)等。登記信息由核心模塊保留,供以后使用。
          (3)創(chuàng)建定時(shí)器。核心模塊需要定時(shí)地檢測(cè)其他模塊的生存狀況,通過(guò)注冊(cè)一個(gè)定時(shí)器,可以定時(shí)地觸發(fā)檢測(cè)功能。
          (4)開(kāi)始監(jiān)聽(tīng)。當(dāng)所有初始化工作完成以后,核心模塊開(kāi)始進(jìn)入工作狀態(tài)。它的主要工作就是負(fù)責(zé)處理管道信息。通過(guò)使用select()函數(shù)可以實(shí)現(xiàn)同時(shí)監(jiān)聽(tīng)多個(gè)管道。當(dāng)某個(gè)管道有數(shù)據(jù),核心模塊讀取數(shù)據(jù)包(格式詳見(jiàn)后文),并解析出包頭,得到包的源地址,目的地址,及控制字并加以分析,選擇處理流程。處理流程包括:數(shù)據(jù)中轉(zhuǎn),巡檢,系統(tǒng)維護(hù)等。當(dāng)該數(shù)據(jù)包處理完成以后,核心模塊返回繼續(xù)等待下一個(gè)數(shù)據(jù)包。
          (5)處理數(shù)據(jù)中轉(zhuǎn)。其他模塊間無(wú)法直接通信,都必須通過(guò)核心模塊進(jìn)行中轉(zhuǎn)。數(shù)據(jù)包中指明了包的源地址,目的地址及控制字。這里的控制字說(shuō)明數(shù)據(jù)需要中轉(zhuǎn),核心模塊解析到數(shù)據(jù)包需要中轉(zhuǎn),就將包寫(xiě)入到給定目的地址的模塊管道。
          (6)處理巡檢。服務(wù)器需要定時(shí)地檢測(cè)前置機(jī)各個(gè)模塊的狀態(tài),于是發(fā)送巡檢請(qǐng)求給網(wǎng)絡(luò)模塊,網(wǎng)絡(luò)模塊解析后組包發(fā)送給核心模塊,核心模塊在分析包發(fā)現(xiàn)該包是巡檢請(qǐng)求,于是通過(guò)kill()函數(shù)及注冊(cè)記錄信息,判斷各個(gè)模塊的狀態(tài),并組包發(fā)送給服務(wù)器。
          (7)處理系統(tǒng)維護(hù)。系統(tǒng)維護(hù)的主要任務(wù)是為了保證系統(tǒng)所有模塊的正常運(yùn)行。前面初始化了一個(gè)定時(shí)器,通過(guò)定時(shí)器,可定時(shí)地查詢(xún)其他模塊的狀態(tài)。當(dāng)發(fā)現(xiàn)某個(gè)模塊異常,核心模塊將重啟該模塊。
          3.3.2 關(guān)鍵數(shù)據(jù)結(jié)構(gòu)
          (1)包格式:

          e1.jpg


          (2)模塊ID定義
          如表1所示:

          e2.jpg

          e.JPG
          f.JPG



          關(guān)鍵詞: ARM

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();