亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        中標(biāo)麒麟系統(tǒng)下基于QT的PXI儀器軟件開(kāi)發(fā)

        2019-10-29 08:55:46劉康麗1影1碩1朱元元
        計(jì)算機(jī)測(cè)量與控制 2019年10期
        關(guān)鍵詞:龍芯麒麟中標(biāo)

        劉康麗1,谷 靜,杜 影1,畢 碩1,朱元元

        (1.北京航天測(cè)控技術(shù)有限公司,北京 100041; 2.北京航天長(zhǎng)征飛行器研究所,北京 100076)

        0 引言

        目前,我國(guó)的自主可控生態(tài)環(huán)境還處于初期階段,國(guó)產(chǎn)龍芯 CPU的成功研發(fā)與應(yīng)用承載著我國(guó)自主軟件發(fā)展的希望。隨著國(guó)產(chǎn)核心基礎(chǔ)軟硬件的性能與功能逐步完善,在國(guó)家政策支持和大力發(fā)展民族產(chǎn)業(yè)的背景下,“龍芯 +中標(biāo)麒麟”的模式為國(guó)產(chǎn)軟硬件的發(fā)展、推廣和應(yīng)用開(kāi)辟出一條創(chuàng)新的道路。在測(cè)試控制領(lǐng)域,把開(kāi)源的軟件和PXI硬件結(jié)合在一起,打造基于開(kāi)源軟件的通用測(cè)試平臺(tái),建立基于國(guó)產(chǎn)龍芯計(jì)算平臺(tái)的PXI模塊儀器生態(tài)是實(shí)現(xiàn)國(guó)產(chǎn)化替代的必經(jīng)之路。本文將詳細(xì)討論中標(biāo)麒麟系統(tǒng)下基于QT的PXI儀器軟件開(kāi)發(fā)方法和步驟。

        1 編程環(huán)境

        1.1 中標(biāo)麒麟操作系統(tǒng)V5.0

        中標(biāo)麒麟桌面操作系統(tǒng)軟件(龍芯版)V5.0是國(guó)內(nèi)首款支持龍芯64位平臺(tái)并規(guī)?;瘧?yīng)用部署的自主操作系統(tǒng),兼容龍芯3A3000平臺(tái)并實(shí)現(xiàn)系統(tǒng)內(nèi)核及核心參數(shù)等優(yōu)化適配,能夠最大程度發(fā)揮中標(biāo)麒麟操作系統(tǒng)和龍芯3A3000整機(jī)平臺(tái)的整體性能。該系統(tǒng)提供全新經(jīng)典的用戶(hù)UI界面,兼顧用戶(hù)使用習(xí)慣,跨平臺(tái)部署提供統(tǒng)一用戶(hù)體驗(yàn);核心參數(shù)升級(jí),性能有效提升并保障系統(tǒng)穩(wěn)定性和安全性;提供完善的系統(tǒng)升級(jí)維護(hù)機(jī)制;軟件中心提供豐富的桌面應(yīng)用及工具,實(shí)現(xiàn)開(kāi)機(jī)即用;系統(tǒng)兼容性好,支持主流國(guó)產(chǎn)軟硬件[1]。

        圖1所示為龍芯平臺(tái)搭載中標(biāo)麒麟操作系統(tǒng),可安裝的應(yīng)用開(kāi)發(fā)環(huán)境有Eclipse、Qt、GCC和腳本語(yǔ)言[1],該平臺(tái)上的應(yīng)用軟件發(fā)展現(xiàn)狀正處于由可用到好用的過(guò)渡階段,龍芯軟件生態(tài)環(huán)境還處于緩慢發(fā)展階段,這使得PXI儀器軟件的遷移和二次開(kāi)發(fā)存在一定難度,需要操作系統(tǒng)、應(yīng)用軟件以及硬件兼容的緊密配合。

        圖1 國(guó)產(chǎn)龍芯計(jì)算平臺(tái)

        1.2 Qt5.6開(kāi)發(fā)工具

        Qt是由 TrollTech 公司出品的跨平臺(tái)C++圖形用戶(hù)界面應(yīng)用程序開(kāi)發(fā)框架[2],它既可以開(kāi)發(fā)GUI程序,也可用于開(kāi)發(fā)非GUI程序,目前被廣泛應(yīng)用于嵌入式、電力系統(tǒng)、軍工系統(tǒng)等要與硬件交互的界面系統(tǒng)中。Qt是面向?qū)ο蟮目蚣?,良好的封裝機(jī)制令Qt的模塊化程度非常高并且可重用性好;另外,Qt具有豐富的API,在Qt中包括了至少250個(gè)的C++類(lèi),并且還提供了基于模板的 collections,serialization,file,I/O device,directory management,date/time 類(lèi),甚至還包括正則表達(dá)式的處理功能。選擇Qt作為開(kāi)發(fā)工具不僅因?yàn)槠溟_(kāi)發(fā)功能強(qiáng)大,更主要是因?yàn)樗虚_(kāi)源版本且支持跨平臺(tái)運(yùn)行,Qt作為高質(zhì)量的跨平臺(tái)框架,具有支持平臺(tái)廣泛、功能完整、開(kāi)源、執(zhí)行效率高、界面開(kāi)發(fā)簡(jiǎn)單、開(kāi)發(fā)工具完備等特性,Qt官方已經(jīng)提供了在windows,Android,ios,linux中運(yùn)行的SDK,一次程序開(kāi)發(fā)幾乎不需要改動(dòng)就能夠在Windows操作系統(tǒng)和中標(biāo)麒麟操作系統(tǒng)下編譯運(yùn)行,這為PXI設(shè)備的跨平臺(tái)使用創(chuàng)造了條件[3]。

        文中使用中標(biāo)麒麟V5.0安裝的Qt5.6,其集成開(kāi)發(fā)環(huán)境(IDE)名為Qt Creator,能夠提供智能代碼完成、語(yǔ)法高亮,集成幫助系統(tǒng)、調(diào)試器和分析器。文中案例采用可視化編程模式,界面源碼與用戶(hù)源碼隔離,用戶(hù)源碼使用QT提供的信號(hào)槽機(jī)制,可以很好的降低界面代碼與功能代碼的耦合性,提升代碼的復(fù)用性。

        2 中標(biāo)麒麟下的PXI儀器軟件開(kāi)發(fā)

        2.1 開(kāi)發(fā)過(guò)程概述

        龍芯版的中標(biāo)麒麟操作系統(tǒng)是一種基于Linux內(nèi)核的桌面操作系統(tǒng),支持MIPS架構(gòu)。因此,目前運(yùn)行在 X86 架構(gòu)的PXI儀器軟件均無(wú)法在龍芯平臺(tái)運(yùn)行和使用[4]。因此,在中標(biāo)麒麟操作系統(tǒng)下開(kāi)發(fā)PXI儀器軟件需要完成以下工作:

        1)開(kāi)發(fā)中標(biāo)麒麟操作系統(tǒng)下PXI儀器設(shè)備驅(qū)動(dòng)程序,將其加載到內(nèi)核;

        2)根據(jù)具體應(yīng)用模塊或儀器選擇開(kāi)發(fā)“.so”(shared object)文件,便于應(yīng)用層軟件調(diào)用;

        3)在Qt Creator中編寫(xiě)界面和邏輯代碼;

        4)鏈接“.so”文件,編譯生成可執(zhí)行文件,并打包成安裝程序。

        2.2 軟件開(kāi)發(fā)總體框架

        軟件程序功能采取自頂向下的模塊化設(shè)計(jì)方案,根據(jù)需求分析,整個(gè)軟件的功能體系架構(gòu)如圖2所示,軟件設(shè)計(jì)過(guò)程充分運(yùn)用了分層模塊化的思想,將其分解為多個(gè)子功能模塊??傮w來(lái)說(shuō)分為三個(gè)層次,第一層操作系統(tǒng)中接口驅(qū)動(dòng)層(測(cè)試模塊采用PXI總線(xiàn)),第二層是設(shè)備管理接口層,主要包含儀器的多種調(diào)用函數(shù),為應(yīng)用層實(shí)現(xiàn)功能調(diào)用提供接口,第三層是軟件應(yīng)用層,主要包含界面儀器操作、配置、與各個(gè)子系統(tǒng)測(cè)試任務(wù)處理等功能。

        圖2 軟件功能體系架構(gòu)

        最終能夠?qū)崿F(xiàn)與底層功能函數(shù)的接口,形成功能獨(dú)立的軟件程序,并具有良好的人機(jī)界面,方便用戶(hù)使用。

        2.3 編寫(xiě)PXI設(shè)備驅(qū)動(dòng)

        Linux下的PXI設(shè)備驅(qū)動(dòng)主要包含以下幾個(gè)部分:初始化設(shè)備模塊、設(shè)備打開(kāi)模塊、數(shù)據(jù)讀寫(xiě)和控制模塊、中斷處理模塊、設(shè)備釋放模塊和設(shè)備卸載模塊。

        驅(qū)動(dòng)源碼(.c)文件可在任意文本編輯環(huán)境下編寫(xiě),其主要內(nèi)容是構(gòu)造Linux操作系統(tǒng)下驅(qū)動(dòng)函數(shù)的基本框架,包含Linux驅(qū)動(dòng)程序的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)及關(guān)鍵功能模塊。該文件能夠按照兩種方式進(jìn)行編譯,一種是直接靜態(tài)編譯成內(nèi)核的一部分,另一種則是編譯成可以動(dòng)態(tài)加載的模塊。如果編譯進(jìn)內(nèi)核,則會(huì)增加內(nèi)核的大小,還要改動(dòng)內(nèi)核的源文件,而且不能動(dòng)態(tài)地卸載,不利于調(diào)試,所以推薦使用模塊方式加載。

        使用gcc編譯.c文件后生成內(nèi)核模塊“.ko”(kernel object)文件,用命令insmod將其載入Linux內(nèi)核,從而成為內(nèi)核的一個(gè)組成部分,當(dāng)不需要該模塊時(shí),可以使用rmmod命令進(jìn)行卸載。為了方便使用,可將加載儀器驅(qū)動(dòng)指令放入開(kāi)機(jī)自啟動(dòng)選項(xiàng)中,這樣,該驅(qū)動(dòng)模塊將在開(kāi)機(jī)后自動(dòng)加載至內(nèi)核。開(kāi)機(jī)自動(dòng)加載模塊驅(qū)動(dòng)本文采用如下方法:

        在加載成功后,通過(guò)在終端輸入lspci指令,可在終端觀察到已經(jīng)識(shí)別的PCI模塊。

        2.4 開(kāi)發(fā)“.so”文件

        “.so” (shared object)文件作為L(zhǎng)inux下的共享鏈接庫(kù)文件,類(lèi)似于windows下的 .dll 文件,它在程序啟動(dòng)的時(shí)候加載到程序中,并且可以被不同的程序共享。每個(gè)共享函數(shù)庫(kù)都有個(gè)特殊的名字,其命名必須以“l(fā)ib”作為前綴,然后是函數(shù)庫(kù)的名字,然后是“.so”,例如,本文中生成的共享庫(kù)以libamc.so命名。一般情況下,共享函數(shù)庫(kù)文件需要放在相應(yīng)約定的目錄里,這樣通過(guò)系統(tǒng)的環(huán)境變量設(shè)置,應(yīng)用程序才能正確的使用這些函數(shù)庫(kù)。大部分的源碼開(kāi)發(fā)的程序都遵循GNU的一些標(biāo)準(zhǔn), GNU標(biāo)準(zhǔn)建議所有的函數(shù)庫(kù)文件都放在/usr/local/lib目錄下,而且建議命令可執(zhí)行程序都放在/usr/local/bin目錄下。

        “.so”文件可向應(yīng)用層軟件提供標(biāo)準(zhǔn)化庫(kù)函數(shù),方便跨平臺(tái)軟件的移植。在本文的開(kāi)發(fā)案例中,已有的windows下PXI儀器軟件調(diào)用了NI的VISA庫(kù)函數(shù)。為了方便Linux下儀器軟件開(kāi)發(fā),減少邏輯代碼的修改,將Linux下的接口函數(shù)封裝成同名函數(shù),如圖3所示。

        圖3 Linux下驅(qū)動(dòng)接口函數(shù)定義

        在應(yīng)用層程序開(kāi)發(fā)過(guò)程中調(diào)用“.so”文件,首先要將添加相應(yīng)的頭文件,例如amcio.h。然后在工程文件中引用庫(kù)文件,例如libamc.so(對(duì)應(yīng)amcio.h),代碼如下:

        LIBS += -L/lib64 -lamcio

        2.5 界面設(shè)計(jì)與環(huán)境配置

        Qt的集成開(kāi)發(fā)環(huán)境Qt Creator在中標(biāo)麒麟V5.0中已被默認(rèn)集成,Qt Creator包含了項(xiàng)目生成向?qū)?、C++代碼編輯器、瀏覽文件以及累的工具,還包括QtDesigner、圖形化的GDB調(diào)試前端并且繼承了qmake構(gòu)建工具等[5-6]。在使用Qt Widgets Application創(chuàng)建Qt桌面應(yīng)用的過(guò)程中,工程創(chuàng)建后除了工程文件本身還包含:頭文件(.h)、源文件(.c)以及界面文件(.ui)。Qt與其他開(kāi)發(fā)工具相比,信號(hào)槽機(jī)制是其一大特色。信號(hào)槽機(jī)制,簡(jiǎn)單來(lái)說(shuō),就是一個(gè)類(lèi)可以定個(gè)多個(gè)Signal和Slot而且完全是獨(dú)立和安全的,在需要建立二者相互通信時(shí),通過(guò)connect函數(shù)將某個(gè)類(lèi)中的Slot和另個(gè)類(lèi)中的Signal連接起來(lái),就可以實(shí)現(xiàn)事件的驅(qū)動(dòng)。例如:

        Connect(ui.Send_btn,SIGNAL(clicked),this,SLOT(SendData());

        該函數(shù)就表示了單擊Send_btn按鈕,將會(huì)響應(yīng) SendData()這個(gè)函數(shù)。因此,利用Qt特有的信號(hào)槽(Signal-Slot)通信機(jī)制,可將界面文件與用戶(hù)邏輯代碼文件有效隔離。這樣,在Windows和Linux下的界面文件能夠跨平臺(tái)使用,不需要更改界面源碼。

        在兩種平臺(tái)下我們只需重新配置工程環(huán)境就能輕松實(shí)現(xiàn)界面源碼的移植,具體環(huán)境參數(shù)設(shè)置如圖4所示。

        Qt提供了可視化的開(kāi)發(fā)工具設(shè)計(jì)器,可直接將各種控件拖拽至項(xiàng)目設(shè)計(jì)器中,其擁有豐富的設(shè)計(jì)組建并且支持自繪組件的加入。本文中,用戶(hù)界面設(shè)計(jì)方面也采用了圖形操作界面,對(duì)用戶(hù)友好并具有如下特點(diǎn):

        1)軟件界面保持一致性:界面規(guī)范遵循軟件界面的規(guī)范;

        2)設(shè)計(jì)完整的對(duì)話(huà)過(guò)程:系統(tǒng)的每一次對(duì)話(huà)都應(yīng)該有明確的次序:開(kāi)始、中間處理過(guò)程、結(jié)束;

        3)提供簡(jiǎn)單的錯(cuò)誤處理機(jī)制;

        4)提供信息反饋:用多種信息提示用戶(hù)當(dāng)前軟件運(yùn)行狀態(tài),軟件界面當(dāng)前的功能;

        5)軟件具備測(cè)試數(shù)據(jù)保存功能,以方便用戶(hù)隨時(shí)調(diào)用、分析。

        (a)Window下Qt環(huán)境配置

        (b)Linux下Qt環(huán)境配置圖4 環(huán)境參數(shù)設(shè)置圖

        6)軟件集成.chml格式幫助文檔,內(nèi)部包含硬件以及軟件的用戶(hù)說(shuō)明書(shū)。

        2.6 編譯、打包與運(yùn)行

        為保證PXI儀器軟件能夠在其他龍芯平臺(tái)上運(yùn)行,需要將用戶(hù)程序編譯后與所依賴(lài)的動(dòng)態(tài)鏈接庫(kù)一起打包生成可安裝程序。首先,在Qt Creator中使用release方式編譯出可執(zhí)行文件,將其拷貝至新建文件夾中,修改文件夾名稱(chēng),例如AMC5214C。然后在AMC5214C文件夾中建立腳本文件pack.sh和AMC5214C.sh。

        pack.sh文件中包括需要發(fā)布的程序名稱(chēng)和創(chuàng)建文件夾位置等信息。其內(nèi)容如下:

        !/bin/sh

        exe="AMC5214C"

        des="/home/QT/AMC5214C"

        deplist=(ldd exe | awk '{if (match(3,"/")){ printf("%s "),3 } }')

        cp deplist des

        AMC5214C.sh文件內(nèi)容如下:

        appname=`basename 0 | sed s,。sh,,`

        dirname=`dirname 0`

        tmp="{dirname ?}"

        if [ "{dirname%tmp}" != "/" ]; then

        dirname=PWD/dirname

        fi

        LD_LIBRARY_PATH=dirname

        export LD_LIBRARY_PATH

        dirname/appname "@"

        在終端中運(yùn)行./pack.sh 指令,執(zhí)行文件所依賴(lài)的鏈接庫(kù)會(huì)自動(dòng)拷貝至AMC5214C文件夾中。

        在其他龍芯平臺(tái)上運(yùn)行AMC5214C.sh腳本文件即可啟動(dòng)AMC5214C模塊儀器軟件。

        3 實(shí)驗(yàn)驗(yàn)證

        3.1 實(shí)驗(yàn)環(huán)境

        本文將采用龍芯3A3000 CPU搭建整機(jī)測(cè)試平臺(tái),操作系統(tǒng)為中標(biāo)麒麟5.0版本,該版本中集成安裝了QT 5.6.1開(kāi)發(fā)工具。開(kāi)發(fā)對(duì)象是北京航天測(cè)控公司自主生產(chǎn)的PXI通用測(cè)試平臺(tái)下的PXI系列模塊,分別為:

        1)5.5位數(shù)字多用表(AMC4311),主要應(yīng)用于PXI平臺(tái)的信號(hào)高精度測(cè)量。模塊提供自校準(zhǔn)生產(chǎn)功能,通過(guò)軟件模塊可以在不使用特定人力情況下實(shí)現(xiàn)采集測(cè)量的自校準(zhǔn),糾正測(cè)量誤差。

        2)64通道控制開(kāi)關(guān)(AMC4607),是一個(gè)基于PXI總線(xiàn)的64通道SPST開(kāi)關(guān),主要用于切換較大電流的控制信號(hào)。具有集成度高,附加功能豐富的優(yōu)點(diǎn)。

        3)多串口通訊模塊(AMC5214C)是一種基于PXI總線(xiàn)的多協(xié)議通用異步串行通訊產(chǎn)品。該模塊產(chǎn)品具有8個(gè)獨(dú)立的RS-232/RS-422/RS-485的串口通訊端口,每個(gè)端口的最大數(shù)據(jù)通訊速率為921.6 Kbps,8個(gè)端口之間采用光電隔離,端口具有靜電放電保護(hù)能力。該模塊主要用于PXI系統(tǒng)中的通訊單元。

        3.2 驗(yàn)證過(guò)程

        根據(jù)第2章節(jié)所述,首先要編寫(xiě)驅(qū)動(dòng)程序并將其編譯成可安裝模塊(module),本文中編譯生成的驅(qū)動(dòng)模塊為AMCDEV.ko文件,使用insmod 命令將其動(dòng)態(tài)加載到內(nèi)核中,并加入到開(kāi)機(jī)自動(dòng)啟動(dòng)項(xiàng)。開(kāi)機(jī)啟動(dòng)后可通過(guò)lspci命令查看驅(qū)動(dòng)模塊是否正常加載。

        第二步,開(kāi)發(fā)并編譯“l(fā)ibamcio.so”文件,具體參見(jiàn)2.3節(jié)。

        第三步,編寫(xiě)PXI硬件模塊功能函數(shù),以多串口通訊模塊為例,其主要功能及流程如圖5所示[7],功能函數(shù)在AMC5214C.cpp文件中實(shí)現(xiàn):

        圖5 多串口通訊模塊功能流程圖

        第四步,界面設(shè)計(jì),以多串口通訊模塊為例,該通訊模塊共有8通道,各通道均可獨(dú)立工作,每個(gè)通道均有參數(shù)設(shè)置、數(shù)據(jù)接收、數(shù)據(jù)顯示等窗口,如圖6所示。利用QT的槽機(jī)制,將界面與功能函數(shù)相關(guān)聯(lián)起來(lái)。

        圖6 多串口通訊模塊界面圖

        第五步,編譯可執(zhí)行程序并打包安裝,參見(jiàn)2.5節(jié)。

        3.3 驗(yàn)證結(jié)果

        經(jīng)驗(yàn)證,三個(gè)PXI模塊的Qt程序均可在龍芯平臺(tái)下啟動(dòng)運(yùn)行,并實(shí)現(xiàn)儀器資源查找、打開(kāi)、測(cè)試測(cè)量、通訊、關(guān)閉等操作。

        4 結(jié)論

        本文詳細(xì)介紹了在中標(biāo)麒麟操作系統(tǒng)和龍芯3A3000整機(jī)平臺(tái)下利用開(kāi)源的QT開(kāi)發(fā)軟件對(duì)自主研發(fā)的國(guó)產(chǎn)PXI模塊儀器進(jìn)行軟件設(shè)計(jì)的的方法和步驟,完成了三款PXI儀器模塊的軟件開(kāi)發(fā)工作,為中標(biāo)麒麟下以Qt軟件為核心創(chuàng)立PXI模塊儀器生態(tài)開(kāi)辟了全新思路,為未來(lái)國(guó)產(chǎn)硬件平臺(tái)搭載國(guó)產(chǎn)操作系統(tǒng)下的PXI儀器軟件開(kāi)發(fā)提供了很好的案例。

        猜你喜歡
        龍芯麒麟中標(biāo)
        基于國(guó)產(chǎn)化龍芯的動(dòng)環(huán)數(shù)據(jù)采集系統(tǒng)
        麒麟“破冰”
        金橋(2022年8期)2022-08-24 01:34:18
        對(duì)麒麟
        寶藏(2021年1期)2021-03-10 11:06:12
        工程中標(biāo)信息
        上海建材(2020年5期)2020-12-15 00:33:42
        工程中標(biāo)信息
        上海建材(2020年4期)2020-12-15 00:32:00
        乘風(fēng)破浪,廣日電梯第八次中標(biāo)中城聯(lián)盟聯(lián)采
        它就是麒麟
        “龍芯之父”胡偉武
        Research on the Low—Carbon Life of Student
        龍芯發(fā)布新一代處理器產(chǎn)品
        国产精品白浆在线观看免费| 亚洲精品高清av在线播放| 国产精品久久熟女吞精| 蜜桃尤物在线视频免费看| 亚洲国产av玩弄放荡人妇系列 | 日本50岁丰满熟妇xxxx| 含羞草亚洲AV无码久久精品| 国产精品污一区二区三区在线观看| 一本一道久久综合久久| 欧美午夜刺激影院| 尤物视频一区二区| 日本a一区二区三区在线| 国产色视频一区二区三区不卡| 国产裸体舞一区二区三区| 俺也去色官网| 日韩av在线不卡一二三区| 国产一区二区视频免费在线观看| 日夜啪啪一区二区三区| 久久精品中文字幕极品| 中文字幕人成乱码中文| 在线麻豆精东9制片厂av影现网| 亚洲美腿丝袜 欧美另类| 国产成人免费一区二区三区| 手机在线国产福利av| 美女扒开屁股让男人桶| 国产第一页屁屁影院| 欧美国产伦久久久久久久| 99久久国产精品免费热| 久久综合丝袜日本网| 日韩免费一区二区三区在线 | 伊人久久亚洲精品中文字幕| 一二区成人影院电影网| 亚洲AV色无码乱码在线观看| 国产精品一区二区三区蜜臀| 国产精品久久免费中文字幕| 久久久久女人精品毛片| 韩国女主播一区二区在线观看| 国产精品一区二区夜色不卡| 日日天干夜夜狠狠爱| 一区二区三区日韩亚洲中文视频 | 中文字幕亚洲中文第一|