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

基于QNX的圖像采集系統的設計與軟件實現

2016-05-14 07:45:16王昱霖王文華
電子技術與軟件工程 2016年6期

王昱霖 王文華

摘 要QNX系統是面向嵌入式應用的高性能實時操作系統,基于QNX的圖像采集系統可用于對穩定性和可靠性要求較高的工業及其他特殊環境中。本文簡要分析了QNX視頻采集系統的驅動原理,定制了用于視頻采集的QNX嵌入式系統,并利用C++語言編寫了基于工業攝像機抓取圖像的上層應用程序,通過抓取一楨圖像的實驗,驗證了該設計方法的可行性。

【關鍵詞】QNX 圖像采集 系統定制 驅動開發

1 前沿

隨著工控自動化技術的發展,工業領域中的大數據量視頻數據采集對實時性和穩定性的要求越來越高。QNX Neutrino實時操作系統是一種功能全面、運行穩健的操作系統,其真正的微內核設計和模塊化架構可幫助使用者以極低的成本創建高度優化和超可靠的系統。基于QNX操作系統進行視頻數據采集可有效滿足工業環境對實時性和穩定性的要求。但QNX作為一款專用的嵌入式操作系統也存在開發難度大,開發周期長等問題,如何能夠快速開發基于QNX的工業攝像機使用的驅動程序模塊推廣應用QNX系統的重要基礎。

2 QNX系統介紹

QNX是一個分布式、微內核、搶占式、多用戶、多任務、可嵌入式的實時操作系統。被廣泛應用到電信、航天儀器、工業自動化等方面[1]。QNX有獨特的微內核和進程管理單元,以及基于消息傳遞的進程通信機制,同時采用內核調度的搶占式優先級進程管理,使得系統保證在任務時間內完成對上下文的快速切換,具有極好的實時性。在QNX Neutrino 環境下,所有驅動程序、應用程序、協議棧和文件系統都在內核以外的內存受保護的用戶空間內安全運行。QNX操作系統符合POSIX基本標準和實時標準,使其應用可以方便的進行移植。QNX的微內核僅提供進程通信、進程調度、中斷處理和底層網絡通信等4中服務。

QNX設備驅動與其他操作系統的設備驅動有所不同,其驅動程序與內核運行在不同的地址空間中,即設備驅動無需編譯到內核中去,而是由QNX特有的資源管理器管理,資源管理器負責給不同類型的設備提供接口。同時,不同的設備驅動還可以通過消息傳遞的方式,經過進程管理器,將消息傳遞給其他設備驅動。QNX的網絡驅動核心是Network Manager, 應用程序調用函數庫中的函數,通過消息傳遞機制訪問資源管理器,并通過TCP/IP協議調用資源管理器中的函數與驅動程序進行連接。網絡驅動模塊的原理圖如圖1所示。

3 QNX系統定制

開發QNX驅動程序前首先需要定制系統,其過程為:構建Buildfile->編譯Buildfile生成系統映像文件->啟動目標系統->嵌入式系統軟件設計。

其中最重要的就是構建Buildfile。在通常的嵌入式系統中,都需要一個可啟動的操作系統映像文件(OS Image)。構建Buildfile的過程就是配置操作系統映像的過程。Buildfile由三部分組成,分別為bootstrap script(啟動引導腳本)、startup script(啟動腳本)、file list(文件列表)。

首先構建Buildfile。bootstrap script如下所示,

[virtual=x86,bIOS+compress].bootstrap = {

Start-bIOS –Ntarget

PATH=/proc/boot:/bin:/sbin:/usr/bin:/usr/sbin:/usr/photon/bin

LD_LIBRARY_PATH=/proc/boot:/dev/shmem:/lib:/lib/dll:/usr/lib:/usr/lib/dll procnto}

其中“virtual” 表明該Buildfile將構造一個與啟動時產生的虛擬地址空間相對應的啟動映象。關鍵詞“x86,bIOS” 則分別指處理器(x86)和機器類型(通過bIOS啟動)。而“+compress”使得映象文件被壓縮,以產生更小的映象文件。startup-bIOS是運行于具有BIOS的PC兼容系統的可執行程序,主要負責利用BIOS檢測PC硬件資源。啟動腳本是在系統啟動后自動執行的一系列命令列表,可在此對系統進行初步配置,如網絡配置,顯卡設置等操作。

將制作好的Buildfile導入到IDE中,編譯生成MyCamera.ifs文件。在開發機上將MyCamera.ifs復制到目標機的/net/Target/.boot中,這樣就可以實現目標機自動啟動QNX系統,系統定制完成。

4 軟件實現

4.1 安裝API函數庫

本系統采用了德國basler pylon piA2400-17gc攝像頭,分辨率為2454*2056,幀速率可以達到17fps,采用千兆網卡接口,位深度為12bits。視頻采集卡采用intel PRO1000網卡。使用該攝像頭需要在目標機上安裝API函數庫和設置環境變量,內容如下所示:

sudo md /opt/pylon

sudo tar -C /opt/pylon -xzf pylon-bininst-32.tar.gz

export PYLON_ROOT=/opt/pylon

export GENICAM_ROOT_V2_1=${PYLON_ROOT}

export LD_LIBRARY_PATH=${PYLON_ROOT}/lib:${GENICAM_ROOT_V2_1}/bin/Linux32_i86:$LD_LIBRARY_PATH

mkdir -p $HOME/genicam_xml_cache export GENICAM_CACHE_V2_1=$HOME/genicam_xml_cac-he

4.2 軟件編寫

利用C++語言編寫上層應用程序實現抓取一幀數據并從控制臺顯示幀數據信息。軟件流程圖如圖2所示。

抓取一幀數據主要程序代碼如下,

#include

#include

#include

void pressEnterToExit()

int main(int argc, char* argv[])

{

Pylon::PylonAutoInitTerm autoInitTerm;

CTlFactory&TlFactory=CTlFactory::GetInstance();

Camera_t::DeviceClass()

ITransportLayer*pTl=TlFactory.CreateTl(Camera_t::DeviceClass());

Camera_t Camera(pTl->CreateDevice(devices[0]));

Camera.Open();

Camera_t::StreamGrabber_t StreamGrabber(Camera.GetStreamGrabber(0)); StreamGrabber.Open(); Camera.PixelFormat.SetValue(PixelFormat_Mono8);

Camera.OffsetX.SetValue(0);

Camera.OffsetY.SetValue(0); Camera.Width.SetValue(Camera.Width.GetMax()); Camera.Height.SetValue(Camera.Height.GetMax());

Camera.AcquisitionMode.SetValue(AcquisitionMode_SingleFrame);

Camera.ExposureMode.SetValue(ExposureMode_Timed);

Camera.ExposureTimeRaw.SetValue(100);

const size_t ImageSize = (size_t)(Camera.PayloadSize.GetValue());

uint8_t * const pBuffer = new uint8_t[ ImageSize ]; StreamGrabber.MaxBufferSize.SetValue(ImageSize);

StreamGrabber.MaxNumBuffer.SetValue(1);

StreamGrabber.PrepareGrab();

const StreamBufferHandle hBuffer =

StreamGrabber.RegisterBuffer(pBuffer, ImageSize);

StreamGrabber.QueueBuffer(hBuffer, NULL);

StreamGrabber.DeregisterBuffer(hBuffer);

StreamGrabber.FinishGrab();

StreamGrabber.Close();

Camera.Close();

delete[] pBuffer;

pressEnterToExit();

return 0;

}

4.3 實驗驗證

代碼編寫完成后,啟動目標機,從啟動信息中可以看到IP信息,說明網卡驅動加載完成,通過QNX開發環境IDE編譯和仿真,由圖3所示,抓取的圖像幀信息顯示在控制臺窗口中,說明該系統可正常進行圖像采集。

5 結語

本文簡要分析了QNX視頻采集系統的驅動原理,定制了視頻采集系統的QNX嵌入式系統,利用C++語言編寫了基于工業攝像機抓取圖像的上層應用程序,通過抓取一楨圖像的實驗,驗證了該方法的可行性,為下一步開發基于QNX的圖像處理算法奠定了基礎。

參考文獻

[1]趙磊.QNX實時操作系統及其應用分析[J].軟件導刊,2009(5):22-24.

[2]QNX Software Systems Ltd.System Architecture[DB/OL].http://www.qnx.org,2008.

[3]QNX Neutrino Real-time Operating System: Building Embedded Systems [DB/OL],2004.

[4]王斑,苗克堅.QNX驅動程序的編寫[J].測控技術,2006,25(6):54-56.

[5]姜廣山,祖家奎.基于QNX的PC104總線設備驅動模塊的開發[J].測控技術,2010,23(12):1-4.

作者簡介

王昱霖(1993-),男,碩士研究生學歷。現在供職于山東科技大學機器人研究中心。研究方向為機器人學、智能控制。

作者單位

山東科技大學機器人研究中心 山東省青島市 266590

主站蜘蛛池模板: 天天色天天综合| 国产精品女同一区三区五区| 人妻中文字幕无码久久一区| 亚洲综合经典在线一区二区| 狼友av永久网站免费观看| 无码高潮喷水专区久久| 亚洲第一黄色网址| 亚洲69视频| 欧美.成人.综合在线| 九九这里只有精品视频| 97在线免费视频| 亚洲成人黄色在线| 日韩欧美中文字幕一本| 欧美综合一区二区三区| 九九热精品在线视频| 91九色视频网| 国产综合精品日本亚洲777| 浮力影院国产第一页| 欧美在线一级片| 亚洲最大看欧美片网站地址| 欧美亚洲第一页| 伊人久久久大香线蕉综合直播| 亚洲 日韩 激情 无码 中出| 一级不卡毛片| 亚洲精品成人福利在线电影| 九色在线观看视频| 国产精品yjizz视频网一二区| 国产99视频精品免费视频7 | 伊人久久精品亚洲午夜| 精品亚洲麻豆1区2区3区 | 五月婷婷中文字幕| 操美女免费网站| 色成人亚洲| 亚洲第一黄色网址| 国产精品一线天| 18黑白丝水手服自慰喷水网站| 成人在线视频一区| 狠狠干综合| 国产成人1024精品下载| 亚洲国产成人在线| 亚洲国产av无码综合原创国产| 日本不卡免费高清视频| 四虎影视永久在线精品| 久操线在视频在线观看| 99国产在线视频| 色综合色国产热无码一| 亚洲黄色视频在线观看一区| 国产AV无码专区亚洲精品网站| 丰满的少妇人妻无码区| 亚洲国产精品日韩专区AV| 自拍偷拍欧美日韩| 国产精品福利一区二区久久| 精品一区国产精品| 国产丝袜无码精品| 四虎精品国产AV二区| 日韩资源站| 国产国语一级毛片| 成年片色大黄全免费网站久久| 在线a视频免费观看| 久久夜色精品| 国产精品无码AV中文| 18禁黄无遮挡免费动漫网站| 欧美a在线看| 五月激情婷婷综合| 色婷婷综合在线| 影音先锋丝袜制服| 在线观看免费黄色网址| 国产精品吹潮在线观看中文| 99er精品视频| 国产第八页| 无码免费试看| 亚洲丝袜第一页| 青青草国产一区二区三区| 久久精品娱乐亚洲领先| 久久精品无码中文字幕| 中国毛片网| 亚洲动漫h| 久久精品亚洲中文字幕乱码| 久久免费视频6| 久久综合九色综合97婷婷| 手机成人午夜在线视频| 特级aaaaaaaaa毛片免费视频 |