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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Linux的嵌入式數(shù)據(jù)采集系統(tǒng)

          基于Linux的嵌入式數(shù)據(jù)采集系統(tǒng)

          作者:張宏壯 王建民 時間:2008-08-28 來源:微計算機信息 收藏

          摘要: 系統(tǒng)是集計算機、通信及電子技術(shù)、工業(yè)控制為一體的綜合探測系統(tǒng)。本文介紹了基于系統(tǒng)的硬件結(jié)構(gòu)和軟件設(shè)計。為提高系統(tǒng)的實時響應(yīng)性能和多任務(wù)處理能力,在硬件上采用ARM9 微處理器技術(shù),同時移植操作系統(tǒng),使系統(tǒng)的可靠性和可擴展性得以提高。設(shè)計中充分利用了 的特點。系統(tǒng)軟件模塊有模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)通信模塊和數(shù)據(jù)診斷模塊。將Linux 操作系統(tǒng)引入數(shù)據(jù)采集系統(tǒng)的設(shè)計中,加速了系統(tǒng)的開發(fā),方便了將來的功能擴展,提高了觀測數(shù)據(jù)的及時性和準(zhǔn)確性,實現(xiàn)了觀測的自動化。

          關(guān)鍵字: 嵌入式Linux ,數(shù)據(jù)采集系統(tǒng),

            1 嵌入式系統(tǒng)概述

            嵌入式系統(tǒng)是以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng),對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計算機系統(tǒng),它將操作系統(tǒng)和功能軟件集成于計算機硬件系統(tǒng)之中,簡而言之就是系統(tǒng)的應(yīng)用軟件與系統(tǒng)的硬件一體化,類似于BIOS的工作方式,具有軟件代碼小,高度自動化,響應(yīng)速度快等特點。特別適合于要求實時和多任務(wù)的體系。嵌入式系統(tǒng)是將先進(jìn)的計算機技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)和各個行業(yè)實際應(yīng)用相結(jié)合的產(chǎn)物。嵌入式系統(tǒng)的結(jié)構(gòu)由兩大模塊組成:硬件平臺和軟件平臺,其結(jié)構(gòu)如圖1所示。

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


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

            2 系統(tǒng)設(shè)計

            數(shù)據(jù)采集系統(tǒng)的采集任務(wù)在現(xiàn)場完成。采集系統(tǒng)設(shè)計為分布式的控制系統(tǒng),系統(tǒng)上位機與現(xiàn)場檢測下位機之間的通信基于串口。正常運行時,現(xiàn)場下位檢測控制器完成數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲、數(shù)據(jù)發(fā)送等多種任務(wù)。系統(tǒng)具有一定的自檢測、自校正能力,能將異常情況傳給PC機,以便維護。為了適應(yīng)各種不同情況對焊縫自動檢測的要求,整個檢測系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計,可應(yīng)用不同的模塊組合成不同的應(yīng)用系統(tǒng)。數(shù)據(jù)采集系統(tǒng)的基本組成如圖2所示。

            2.1 系統(tǒng)的硬件
            數(shù)據(jù)采集系統(tǒng)主要完成實時數(shù)據(jù)采樣、保持、并送入A/D 轉(zhuǎn)換器變成數(shù)字信號,然后
            再對數(shù)據(jù)進(jìn)行計算處理、保存,再通過通信接口將實時數(shù)據(jù)發(fā)送到監(jiān)控中心,同時接收監(jiān)控中心下發(fā)的各種命令。其硬件結(jié)構(gòu)如圖3所示。

            該系統(tǒng)采用了Cirrus Logic公司的EP9302作為主CPU,并移植Linux操作系統(tǒng)來對任務(wù)進(jìn)行管理和調(diào)度。

            交流采樣電路主要由采樣保持、多路開關(guān)和A/D轉(zhuǎn)換組成,用來保證在模數(shù)轉(zhuǎn)換過程中電壓、電流的同時性,以滿足功率測量要求。本系統(tǒng)采集四相電壓及四相電流,通過多路開關(guān)分時將采樣量送入A/D轉(zhuǎn)換器。14位A/D轉(zhuǎn)換電路采用Analog Devices的AD7865,AD7865 是四通道高速A/D轉(zhuǎn)換器,其電路輸出具有三態(tài)鎖存功能。

            通信電路由SJA1000芯片、光耦電路和總線驅(qū)動器組成。SJA1000的AD0?AD7連接到系統(tǒng)數(shù)據(jù)總線上,為了增強CAN總線節(jié)點的抗干擾能力,SJA1000的TX0和RX0并不是直接82C250 的TXD和RXD相連,而是通過高速光耦合器6N137與82C250相連,這樣就很好地實現(xiàn)了總線上各CAN 節(jié)點間的電氣隔離。光耦部分電路所采用的2個電源Vcc和Vdd必須完全隔離,可采用小功率電源隔離模塊或帶多個5V隔離輸出的開關(guān)電源模塊實現(xiàn)。這部分增加了接口電路的復(fù)雜性,但卻提高了節(jié)點的穩(wěn)定性和安全性。

            2.2 系統(tǒng)的軟件

            軟件的設(shè)計是在操作系統(tǒng)上實現(xiàn)的,嵌入式操作系統(tǒng)是整個系統(tǒng)的核心。針對本系統(tǒng)的特點,軟件平臺采用多任務(wù)嵌入式操作系統(tǒng)Linux來實現(xiàn),改變了傳統(tǒng)的在類似硬件平臺下采用MSDOS單用戶、單任務(wù)操作系統(tǒng)難以完成較為復(fù)雜的分布式多任務(wù)應(yīng)用的缺點。在數(shù)據(jù)采集系統(tǒng)中,Linux系統(tǒng)可以同時處理多個傳感器發(fā)送來的較為復(fù)雜的控制任務(wù),從而提高系統(tǒng)的

            整體響應(yīng)速度及并發(fā)處理能力。構(gòu)成嵌入式Linux系統(tǒng)至少需要下面3個基本元素:引導(dǎo)程序、Linux微內(nèi)核和初始化進(jìn)程。如果要讓它有更多的功能, 還可加上文件系統(tǒng)、GUI和設(shè)計精簡的應(yīng)用程序,并將其放在diskonchip中啟動。

            2.2.1 內(nèi)核的裁減編譯與啟動

            微型計算機的存儲空間較小, 而標(biāo)準(zhǔn)Linux是面向PC 的,需要對Linux 內(nèi)核進(jìn)行裁減。對一些可獨立加上或卸下的功能塊,可在編譯內(nèi)核時僅保留嵌入式系統(tǒng)所需的功能支持模塊, 刪除不需要的功能。為了滿足一定的實時性要求,需屏蔽內(nèi)核的虛擬內(nèi)存管理機制來增強的Linux實時性。系統(tǒng)中微機主板屬于X86體系結(jié)構(gòu),兼容一般桌面PC的Linuxi386版本。這

            樣,我們可以直接使用X86體系的編譯器對Linux核心源代碼直接進(jìn)行編譯及裁剪,并避免了對Linux 核心源代碼中涉及CPU的部分模塊以及內(nèi)存管理模式模塊的修改。增加了文件系統(tǒng)和GUI根據(jù)系統(tǒng)需要,文件系統(tǒng)應(yīng)包括: 基本文件系統(tǒng)結(jié)構(gòu)、基本應(yīng)用程序、基本配置文件、基本設(shè)備/dev/hd* 和/dev/tty*、基本程序運行所需的函數(shù)庫。GUI 是軟件可視化設(shè)計不可

            缺少的,也為將來的現(xiàn)場檢修維護提供可視化的界面。編寫Linux的引導(dǎo)代碼, 將diskonchip作為系統(tǒng)的啟動設(shè)備,引導(dǎo)代碼放在diskonchip上。系統(tǒng)加電后,由引導(dǎo)代碼進(jìn)行基本的硬件初始化,然后把內(nèi)核經(jīng)映像裝入內(nèi)存運行。

            2.2.2 程序

            系統(tǒng)需要對I/O口、串口編寫程序。設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核與硬件之間的接口,屬于內(nèi)核的一部分,主要功能應(yīng)包含:對設(shè)備初始化或釋放、把數(shù)據(jù)從內(nèi)核傳送到硬件及從硬件讀取數(shù)據(jù)、讀取應(yīng)用程序傳送給設(shè)備的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)、監(jiān)測和處理設(shè)備出現(xiàn)的異常。

            設(shè)備驅(qū)動程序的實質(zhì)就是中斷處理。Linux中斷處理程序分為上半部和下半部。上半部即一般的中斷服務(wù)程序, 由硬件中斷觸發(fā),一般運行在關(guān)中斷的方式下,應(yīng)當(dāng)盡可能短小,處理盡可能快;下半部運行在開中斷和任務(wù)串行化的環(huán)境下,處理需較長時間的任務(wù)。驅(qū)動程序上半部在處理完實時性很強的任務(wù)后,用queue_task函數(shù)將下半部處理函數(shù)掛入立即隊列, 并用mark_bh函數(shù)來激活立即隊列,下半部就可以最優(yōu)先地被執(zhí)行。

            用戶進(jìn)程是通過設(shè)備文件與硬件打交道,對設(shè)備文件的操作方式是系統(tǒng)調(diào)用,由file_operations結(jié)構(gòu)實現(xiàn)系統(tǒng)調(diào)用。這個結(jié)構(gòu)的每一個成員的名字都對應(yīng)著一個系統(tǒng)調(diào)用。用戶進(jìn)程對設(shè)備文件進(jìn)行操作時,系統(tǒng)調(diào)用通過設(shè)備文件的主設(shè)備號找到相應(yīng)的設(shè)備驅(qū)動程序,然后讀取這個數(shù)據(jù)結(jié)構(gòu)相應(yīng)的函數(shù)指針,接著把控制權(quán)交給該函數(shù)。這就是Linux 設(shè)備驅(qū)動程序工作的基本原理。編寫設(shè)備驅(qū)動程序的主要工作就是編寫子函數(shù),并填充file_operations的各個域。

            設(shè)備驅(qū)動程序以模塊方式加入內(nèi)核,在init_module模塊中,當(dāng)檢查設(shè)備存在后,用request_irq函數(shù)為設(shè)備申請系統(tǒng)中空閑的中斷,用kmalloc為設(shè)備驅(qū)動程序申請輸入輸出緩存隊列, 如果申請成功, 用regis2ter_chrdev函數(shù)將設(shè)備驅(qū)動程序注冊到系統(tǒng)中,加載完成。在clearup_module模塊中,先用free_irq函數(shù)釋放申請到的中斷,然后用kfree函數(shù)釋放申請到的內(nèi)存空間,最后用unregister_chrdev函數(shù)釋放注冊的設(shè)備驅(qū)動程序。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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