新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Linux的嵌入式數據采集系統

        基于Linux的嵌入式數據采集系統

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

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

        關鍵字: 嵌入式Linux ,數據采集系統,

          1 嵌入式系統概述

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

        本文引用地址:http://www.104case.com/article/87487.htm


        1 嵌入式系統結構圖

          2 系統設計

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

          2.1 系統的硬件
          數據采集系統主要完成實時數據采樣、保持、并送入A/D 轉換器變成數字信號,然后
          再對數據進行計算處理、保存,再通過通信接口將實時數據發送到監控中心,同時接收監控中心下發的各種命令。其硬件結構如圖3所示。

          該系統采用了Cirrus Logic公司的EP9302作為主CPU,并移植Linux操作系統來對任務進行管理和調度。

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

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

          2.2 系統的軟件

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

          整體響應速度及并發處理能力。構成嵌入式Linux系統至少需要下面3個基本元素:引導程序、Linux微內核和初始化進程。如果要讓它有更多的功能, 還可加上文件系統、GUI和設計精簡的應用程序,并將其放在diskonchip中啟動。

          2.2.1 內核的裁減編譯與啟動

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

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

          缺少的,也為將來的現場檢修維護提供可視化的界面。編寫Linux的引導代碼, 將diskonchip作為系統的啟動設備,引導代碼放在diskonchip上。系統加電后,由引導代碼進行基本的硬件初始化,然后把內核經映像裝入內存運行。

          2.2.2 程序

          系統需要對I/O口、串口編寫程序。設備驅動程序是操作系統內核與硬件之間的接口,屬于內核的一部分,主要功能應包含:對設備初始化或釋放、把數據從內核傳送到硬件及從硬件讀取數據、讀取應用程序傳送給設備的數據和回送應用程序請求的數據、監測和處理設備出現的異常。

          設備驅動程序的實質就是中斷處理。Linux中斷處理程序分為上半部和下半部。上半部即一般的中斷服務程序, 由硬件中斷觸發,一般運行在關中斷的方式下,應當盡可能短小,處理盡可能快;下半部運行在開中斷和任務串行化的環境下,處理需較長時間的任務。驅動程序上半部在處理完實時性很強的任務后,用queue_task函數將下半部處理函數掛入立即隊列, 并用mark_bh函數來激活立即隊列,下半部就可以最優先地被執行。

          用戶進程是通過設備文件與硬件打交道,對設備文件的操作方式是系統調用,由file_operations結構實現系統調用。這個結構的每一個成員的名字都對應著一個系統調用。用戶進程對設備文件進行操作時,系統調用通過設備文件的主設備號找到相應的設備驅動程序,然后讀取這個數據結構相應的函數指針,接著把控制權交給該函數。這就是Linux 設備驅動程序工作的基本原理。編寫設備驅動程序的主要工作就是編寫子函數,并填充file_operations的各個域。

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

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

        linux相關文章:linux教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 白银市| 岳阳市| 宜兴市| 东宁县| 普兰店市| 高安市| 邳州市| 兴安县| 堆龙德庆县| 中西区| 梁山县| 莆田市| 蓝山县| 崇仁县| 本溪市| 元朗区| 紫金县| 山东省| 河西区| 江孜县| 茌平县| 视频| 庆城县| 监利县| 河东区| 洞口县| 金昌市| 化德县| 美姑县| 图片| 无锡市| 山阳县| 任丘市| 资源县| 城固县| 措勤县| 酒泉市| 通道| 广南县| 卓尼县| 棋牌|