當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Linux的嵌入式數(shù)據(jù)采集系統(tǒng)

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

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

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

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

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

圖2  數(shù)據(jù)采集系統(tǒng)的組成

2.1 系統(tǒng)的硬件

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

圖3  數(shù)據(jù)采集系統(tǒng)的硬件結(jié)構(gòu)

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

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

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

2.2 系統(tǒng)的軟件

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

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

2.2.1 內(nèi)核的裁減編譯與啟動(dòng)[!--empirenews.page--]

微型計(jì)算機(jī)的存儲(chǔ)空間較小, 而標(biāo)準(zhǔn)Linux是面向PC 的,需要對(duì)Linux 內(nèi)核進(jìn)行裁減。對(duì)一些可獨(dú)立加上或卸下的功能塊,可在編譯內(nèi)核時(shí)僅保留嵌入式系統(tǒng)所需的功能支持模塊, 刪除不需要的功能。為了滿足一定的實(shí)時(shí)性要求,需屏蔽內(nèi)核的虛擬內(nèi)存管理機(jī)制來(lái)增強(qiáng)的Linux實(shí)時(shí)性。系統(tǒng)中微機(jī)主板屬于X86體系結(jié)構(gòu),兼容一般桌面PC的Linuxi386版本。這樣,我們可以直接使用X86體系的編譯器對(duì)Linux核心源代碼直接進(jìn)行編譯及裁剪,并避免了對(duì)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*、基本程序運(yùn)行所需的函數(shù)庫(kù)。GUI 是軟件可視化設(shè)計(jì)不可

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

2.2.2 設(shè)備驅(qū)動(dòng)程序

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

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

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

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

2.2.3 應(yīng)用程序設(shè)計(jì)

在基于嵌入式Linux系統(tǒng)的微機(jī)中,應(yīng)用程序的主要模塊有數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)通信模塊和數(shù)據(jù)診斷模塊。應(yīng)用程序流程圖見圖4。

圖4  應(yīng)用程序流程圖

數(shù)據(jù)采集模塊是通過對(duì)I / O 口操作實(shí)現(xiàn)的。利用inb、inb_p、outb、outb_p 等4 個(gè)函數(shù)編寫讀取和寫入程序。inb_p 、outb_p與inb、outb 的區(qū)別在于前者在存取I/O時(shí)有等待(pause),可適應(yīng)慢速的I/O設(shè)備。為了防止存取I/O 時(shí)發(fā)生沖突,Linux提供對(duì)端口使用情況的控制。在使用端口之前,可以檢查需要的I/O是否正在被使用,如果沒有,便把端口標(biāo)記為正在使用,使用完后再釋放。

數(shù)據(jù)處理模塊實(shí)現(xiàn)數(shù)據(jù)的均值與極值計(jì)算, 以文件的方式存儲(chǔ)數(shù)據(jù)。歷史數(shù)據(jù)對(duì)焊縫數(shù)據(jù)采集系統(tǒng)很重要,可上傳到服務(wù)器以便預(yù)報(bào)系統(tǒng)根據(jù)設(shè)置的模型進(jìn)行預(yù)測(cè),還可不斷修正數(shù)據(jù)診斷模塊所需的模型。

數(shù)據(jù)診斷模塊實(shí)現(xiàn)實(shí)時(shí)分析診斷,根據(jù)已設(shè)置的模型,在系統(tǒng)工作期間對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行測(cè)試分析。診斷程序設(shè)置為嵌入式系統(tǒng)中中斷級(jí)別最低的中斷服務(wù)程序,在不影響系統(tǒng)工作的前提下實(shí)現(xiàn)實(shí)時(shí)診斷,并上傳給上位機(jī),以便跟蹤診斷校準(zhǔn),保證系統(tǒng)的可靠性。

數(shù)據(jù)通信模塊主要任務(wù)是通過串口與上位PC機(jī)實(shí)現(xiàn)數(shù)據(jù)傳輸。在Linux系統(tǒng)中,串口是用做字符設(shè)備處理的。使用文件操作函數(shù)對(duì)串口進(jìn)行處理,利用open函數(shù)打開串口,利用termios結(jié)構(gòu)設(shè)定串口通信參數(shù)。

2.2.4 系統(tǒng)執(zhí)行

經(jīng)過以上步驟,在嵌入式Linux系統(tǒng)上實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)已基本構(gòu)成。系統(tǒng)執(zhí)行流程見圖5。

圖5  系統(tǒng)執(zhí)行流程圖

3 小結(jié):

本文作者創(chuàng)新點(diǎn)是基于嵌入式Linux的數(shù)據(jù)采集系統(tǒng)具有數(shù)據(jù)檢測(cè)的實(shí)時(shí)性、檢測(cè)精度高、自動(dòng)化程度高、具有良好的可靠性、穩(wěn)定性和抗干擾性等特點(diǎn)。實(shí)際運(yùn)行證明高性能的AMR9微處理器和Linux操作系統(tǒng)的運(yùn)用提高了系統(tǒng)的實(shí)時(shí)響應(yīng)性能和多任務(wù)處理能力,使系統(tǒng)的可靠性和可擴(kuò)展性得以明顯提高。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉