99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DSP+ARM雙處理器構(gòu)架實(shí)現(xiàn)Qtopia Core應(yīng)用程序的開發(fā)設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:曹林,童維勤,邵丹 ? 2020-09-14 17:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 引言

嵌入式Linux以其開放的源代碼,精簡(jiǎn)高效的內(nèi)核、易定制和易裁減的特征以及硬件支持廣泛等優(yōu)勢(shì),而深受嵌入式開發(fā)者的青睞,在消費(fèi)類電子產(chǎn)品和工業(yè)控制、智能儀表等領(lǐng)域中有著廣泛的應(yīng)用。Qt是 Trolltech公司推出的一個(gè)跨平臺(tái)的 C++圖形用戶界面應(yīng)用程序開發(fā)框架。Qt是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正的組件編程。

Qtopia Core是適用于嵌入式 Linux 所支持的單一應(yīng)用設(shè)備的主導(dǎo)性應(yīng)用框架,能夠穩(wěn)定、可靠地運(yùn)行于嵌入式 Linux下,并且可以快速構(gòu)建一個(gè)可視化嵌入式軟件系統(tǒng)。 Qtopia Core的前身是 Qt/Embedded,繼承了Qt 4的功能與優(yōu)點(diǎn),擁有與桌面系統(tǒng)的 Qt相同的應(yīng)用程序編程接口(API)和工具包。當(dāng)編譯 Qtopia Core時(shí),可以去除不用的功能和組件,以昀小化軟件的占用空間。

2 Qtopia Core介紹

Qtopia Core是一個(gè)為嵌入式設(shè)備上的圖形用戶接口和應(yīng)用開發(fā)而訂做的C++工具開發(fā)包。Qtopia Core采用與桌面版本同樣的一套 API,但在其內(nèi)部實(shí)現(xiàn)上作了很多出色的調(diào)整來(lái)適應(yīng)硬件有所限制的嵌入式環(huán)境。Qtopia Core包含多個(gè) Qt工具,可以進(jìn)行快速和優(yōu)化開發(fā),如 Qt 4增強(qiáng)的 GUI布局和窗體構(gòu)建器 Qt Designer。Qtopia Core與 Qt/X11昀大的區(qū)別在于 Qtopia Core不依賴于 X Server或 Xlib,而是直接訪問(wèn)幀緩存( FrameBuffer),這樣顯著減少了內(nèi)存消耗。

2.1 Qtopia Core的窗口系統(tǒng)

Qtopia Core的窗口系統(tǒng)采用 Client/Server模型,任何一個(gè) Qtopia Core的應(yīng)用程序都需要運(yùn)行在一個(gè) Server應(yīng)用上,而 Qtopia Core的應(yīng)用程序本身也可以作為 Server來(lái)運(yùn)行。 Server進(jìn)程通常會(huì)生成 QWSServer類的一個(gè)對(duì)象,主要用來(lái)分配 Client進(jìn)程的顯示區(qū)域,并產(chǎn)生鼠標(biāo)和鍵盤事件等。而 Client進(jìn)程則通常生成 QWSClient類的一個(gè)對(duì)象,負(fù)責(zé)處理與各種應(yīng)用相關(guān)的邏輯。Server和 Client之間的通信通過(guò) socket來(lái)實(shí)現(xiàn),這種通信通常被保持在一個(gè)較低的水平以減少通信的開銷——比如窗口的繪制,并不是像 X那樣完全由 Server來(lái)完成,而是由 Client進(jìn)行直接操作 FrameBuffer來(lái)實(shí)現(xiàn),Server進(jìn)程所作的僅僅是通知 Client需要重繪的事件等。

2.2 信號(hào)與槽機(jī)制 (Signals and Solts)

信號(hào)與槽機(jī)制是 Qt的核心機(jī)制,它是一種高級(jí)接口,用于對(duì)象間的通訊,是 Qt區(qū)別于其它工具包的昀具特性的部分。信號(hào)與槽是 QT自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的 C/C++語(yǔ)言,需要借助一個(gè)稱為 moc(Meta Object Compiler)的 QT工具對(duì)信號(hào)和槽在編譯之前進(jìn)行預(yù)處理,為高層次的事件處理自動(dòng)生成所需要的附加代碼。

Qt中使用信號(hào)與槽機(jī)制取代原始的回調(diào)和消息映射機(jī)制,信號(hào)與槽是類型安全的,完全面向?qū)ο蟮模⑶宜鼈冎g的耦合比較松散,可以使得我們編寫的通信程序更為簡(jiǎn)潔明了。當(dāng)一個(gè)特定的事件發(fā)生時(shí),一個(gè)被指定的信號(hào)就被發(fā)射,槽則是響應(yīng)信號(hào)的函數(shù),如果存在一個(gè)槽和該信號(hào)相連接,那在該信號(hào)被發(fā)射后,這個(gè)槽就會(huì)立刻執(zhí)行。多個(gè)信號(hào)可以連接一個(gè)槽,一個(gè)信號(hào)也可以連接多個(gè)槽,甚至可以把信號(hào)與信號(hào)相連接。信號(hào)與槽構(gòu)造了一個(gè)強(qiáng)大的組件編程機(jī)制,可以創(chuàng)建彼此互不了解的對(duì)象,利用信號(hào)就可以把信息正確的傳遞到對(duì)應(yīng)的槽函數(shù)進(jìn)行處理。

3 Qtopia Core的安裝與移植

3.1 建立交叉編譯環(huán)境

文中采用 Trolltech公司的 Qtopia Core 4.3.2自由版作為目標(biāo)板 Linux圖形界面庫(kù)。與 Qt/Embedded 3.x不同,Qtopia Core 4系列指明編譯器需要 3.2以上的版本,此處選用 arm-linux-gcc-3.4.1的交叉編譯工具鏈,將其拷貝到根目錄 /下,運(yùn)行解壓命令:

tar xjvf arm-linux-gcc-3.4.1.tar.bz2

交叉編譯器會(huì)被安裝在/usr/local/arm/3.4.1/bin目錄下,編輯 /etc/bashrc文件,將其添加到環(huán)境變量 PATH中:

export PATH=/usr/local/arm/3.4.1/bin:$PATH

3.2 交叉編譯 Qtopia Core庫(kù)

在 Trolltech公司主頁(yè)上下載 Qtopia Core 4源代碼軟件包qtopia-core-opensource-src-4.3.2.tar.gz,解壓:

tar zxvf qtopia-core-opensource-src-4.3.2.tar.gz

cd qtopia-core-opensource-src-4.3.2

由于項(xiàng)目中使用帶有觸摸功能的 TFT液晶屏作為顯示和輸入設(shè)備,需要添加對(duì)觸摸屏的支持。一種方法是利用 Qtopia Core為 Linux TP協(xié)議提供的鼠標(biāo)驅(qū)動(dòng)接口類,修改觸摸屏驅(qū)動(dòng)的源代碼,并在執(zhí)行 configure配置時(shí)傳遞-qt-mouse-linuxtp選項(xiàng)激活;另一種方法是嵌入 Tslib。Tslib是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能。這里使用第一種方法,過(guò)程如下:

首先在源碼樹 src\gui\embedded\qmouselinuxtp_qws.h中加入宏定義:

#define QT_QWS_IPAQ

#define QT_QWS_IPAQ_RAW

然后修改 qmouselinuxtp_qws.cpp文件,把 QWSLinuxTPMouseHandlerPrivate函數(shù)中打開的設(shè)備文件節(jié)點(diǎn) ”/dev/h3600_tsraw”替換為自己的觸摸屏設(shè)備文件,如筆者目標(biāo)板中為”/dev/touchscreen/0”。

配置編譯參數(shù):

。/configure -embedded arm -xplatform qws/linux-arm-g++ -depths 8,16,32 -no-qt3support -no-qvfb -qt-mouse-linuxtp

根據(jù) configure生成的 Makefile文件編譯并安裝:

gmake

gmake install

交叉編譯完后,程序和庫(kù)默認(rèn)會(huì)安裝到 /usr/local/Trolltech/QtopiaCore-4.3.2-arm目錄下。設(shè)置環(huán)境變量,修改$HOME/.bash_profile文件,加入

export PATH=/usr/local/Trolltech/QtopiaCore-4.3.2-arm/bin:$PATH

這樣就可以直接使用 qmake工具交叉編譯 Qtopia Core應(yīng)用程序,生成可運(yùn)行在 ARM平臺(tái)的二進(jìn)制可執(zhí)行文件。

3.3構(gòu)建根文件系統(tǒng)和移植到目標(biāo)平臺(tái)

可以選擇使用 Busybox工具構(gòu)建一個(gè)全新的根文件系統(tǒng),也可對(duì)開發(fā)板上原有的文件系統(tǒng)進(jìn)行剪裁和修補(bǔ)。此處利用原有的文件系統(tǒng)映像,把新建的應(yīng)用程序的相關(guān)文件加入其中。首先把原有的根文件系統(tǒng)映像 mount到工作的機(jī)器上,然后復(fù)制其內(nèi)容到一臨時(shí)目錄下。將交叉編譯好的 Qtopia Core庫(kù)文件拷貝到目標(biāo)板文件系統(tǒng)對(duì)應(yīng)/lib目錄下,其中主要庫(kù)包括libQtCore.so.x,libQtGui.so.x,libQtNetwork.so.x等。此外,還需將交叉編譯器所在目錄下的 libstdc++.so.6庫(kù)文件也拷貝過(guò)來(lái)。

為使應(yīng)用程序能正確執(zhí)行,需要設(shè)定系統(tǒng)的運(yùn)行環(huán)境,將以下環(huán)境變量寫入目標(biāo)文件系統(tǒng)/etc/profile文件中:

export QTDIR=”/usr/local/Trolltech/QtopiaCore-4.3.2-arm”

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO=”LinuxTp:/dev/touchscreen/0”

要使我們的程序在系統(tǒng)啟動(dòng)后能夠自動(dòng)運(yùn)行,還需在目標(biāo)文件系統(tǒng)/usr/etc/rc.local腳本文件中,添加應(yīng)用程序的路徑和執(zhí)行命令:

exec /apps/harmonic -qws

此時(shí)在開發(fā)板運(yùn)行 Qtopia Core應(yīng)用程序后,觸摸屏還不能正確響應(yīng)用戶的點(diǎn)擊,主要原因是目標(biāo)板文件系統(tǒng)中用于存放校準(zhǔn)信息的/etc/pointercal文件不存在或該文件中對(duì)觸摸屏進(jìn)行調(diào)整的參數(shù)不正確。Qtopia Core示例程序中提供了一個(gè)校準(zhǔn)程序 mousecalibration,將其下載至目標(biāo)板并運(yùn)行,在出現(xiàn)校準(zhǔn)界面后采用 5點(diǎn)校準(zhǔn)會(huì)在 /etc目錄下生成 pointercal校準(zhǔn)文件。以后每次觸摸屏啟動(dòng)都會(huì)讀取該文件內(nèi)容進(jìn)行觸摸屏設(shè)定。

4 Qtopia Core應(yīng)用程序開發(fā)實(shí)例

本實(shí)例的背景是為嵌入式電力諧波檢測(cè)設(shè)備設(shè)計(jì)開發(fā)其上的圖形用戶界面程序,系統(tǒng)采用了 DSP+ARM雙處理器構(gòu)架的設(shè)計(jì)模式,通過(guò)串口通信實(shí)現(xiàn)數(shù)據(jù)傳輸和協(xié)同工作。基于 Qtopia Core的應(yīng)用程序運(yùn)行在 ARM平臺(tái)上,其軟件設(shè)計(jì)主要包括完成與 DSP的通信,接收傳來(lái)的數(shù)據(jù),并加以計(jì)算分析和統(tǒng)計(jì),將電力諧波參數(shù)值及信息以波形曲線、頻譜柱狀圖、表格等形式實(shí)時(shí)顯示出來(lái),通過(guò)人機(jī)交互界面反饋給用戶,便于用戶操作與控制。程序框架結(jié)構(gòu)如圖 1所示:

基于DSP+ARM雙處理器構(gòu)架實(shí)現(xiàn)Qtopia Core應(yīng)用程序的開發(fā)設(shè)計(jì)

設(shè)計(jì)上利用 Qtopia Core的多線程機(jī)制分前后臺(tái)處理,前臺(tái)為用戶界面主線程,用來(lái)保持對(duì)用戶操作的響應(yīng),控制和調(diào)度其他線程。其他執(zhí)行起來(lái)耗時(shí)的任務(wù)如數(shù)據(jù)讀取、處理分別設(shè)計(jì)成專門的線程放置在后臺(tái),各線程間使用互斥信號(hào)量方式通信達(dá)到同步工作。數(shù)據(jù)讀取線程在編程實(shí)現(xiàn)上主要是依靠Linux系統(tǒng)提供的 termios結(jié)構(gòu)對(duì)串口屬性參數(shù)進(jìn)行設(shè)置,并對(duì)串口對(duì)應(yīng)的設(shè)備文件(位于 /dev目錄下,串口一為 /dev/ttyS0)進(jìn)行訪問(wèn),將接收到的數(shù)據(jù)按照規(guī)定的協(xié)議格式加以解析,從而為數(shù)據(jù)處理線程提供數(shù)據(jù)支持。數(shù)據(jù)處理線程中自定義 PowerQuality類實(shí)現(xiàn)對(duì)電能質(zhì)量各項(xiàng)性能指標(biāo)的計(jì)算方法的封裝,并將結(jié)果分析統(tǒng)計(jì)后發(fā)送至顯示線程。數(shù)據(jù)顯示線程通過(guò)子類化 Qtopia Core提供的相應(yīng)的窗體控件,重新實(shí)現(xiàn)其繪制事件處理器 paintEvent()虛函數(shù),在函數(shù)中創(chuàng)建并調(diào)用 QPainter類變量實(shí)現(xiàn)各類圖形信息的繪制顯示。程序以屏幕點(diǎn)觸事件驅(qū)動(dòng),通過(guò) Qtopia Core的信號(hào)與槽機(jī)制與終端用戶交互。圖2為開發(fā)實(shí)例運(yùn)行在虛擬仿真窗口qvfb中的截圖。

5 結(jié)論

隨著嵌入式 Linux應(yīng)用的不斷發(fā)展,嵌入式處理器運(yùn)算能力的不斷增強(qiáng),對(duì)外設(shè)支持的不斷豐富,越來(lái)越多的嵌入式設(shè)備開始采用較為復(fù)雜的 GUI系統(tǒng),嵌入式 Linux系統(tǒng)下的 GUI應(yīng)用程序開發(fā)也越來(lái)越深入。開發(fā)出優(yōu)秀的的人機(jī)界面,是嵌入式發(fā)展的趨勢(shì),擁有廣闊的市場(chǎng)前景。Qtopia Core延續(xù)了 Qt在桌面系統(tǒng)的所有功能,豐富的 API接口和基于組件的編程模型使得嵌入式 Linux系統(tǒng)中的應(yīng)用程序開發(fā)更加便捷。

本文的創(chuàng)新點(diǎn)是:詳細(xì)講述了 Qtopia Core圖形系統(tǒng)在嵌入式 Linux平臺(tái)上的移植過(guò)程,并通過(guò)修改 Qtopia Core源代碼,使得 Qtopia Core庫(kù)支持觸摸屏設(shè)備的使用。基于 Qtopia Core設(shè)計(jì)與實(shí)現(xiàn)了嵌入式電力諧波檢測(cè)設(shè)備的系統(tǒng)界面,其界面友好、運(yùn)行穩(wěn)定,為其他嵌入式系統(tǒng)軟件開發(fā)和應(yīng)用提供一個(gè)參考。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19884

    瀏覽量

    235012
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    556

    文章

    8155

    瀏覽量

    357276
  • 嵌入式
    +關(guān)注

    關(guān)注

    5149

    文章

    19655

    瀏覽量

    317291
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    處理器ARM_DSP如何實(shí)現(xiàn)協(xié)同工作

    處理器ARM_DSP如何實(shí)現(xiàn)協(xié)同工作
    發(fā)表于 08-17 14:26

    DSP+ARM開發(fā)視頻

    新添DSP+ARM開發(fā)視頻,不單有基于TI TMS320C6748的DSP開發(fā)視頻教程,還新添加了基于TI OMAPL138的SYSLINK
    發(fā)表于 10-21 14:15

    DM8168 linux開發(fā),請(qǐng)問(wèn)DSPARM處理器程序開發(fā)是獨(dú)立的嗎?

    開發(fā)DM8168的過(guò)程中遇到以下問(wèn)題,沒(méi)有想通,請(qǐng)各位大俠幫忙看一下吧:DSPARM處理器程序開發(fā)
    發(fā)表于 08-09 07:31

    Qtopia Core的安裝與移植過(guò)程是怎樣進(jìn)行的?

    Qtopia Core是什么?Qtopia Core的安裝與移植過(guò)程是怎樣進(jìn)行的?Qtopia Core
    發(fā)表于 04-27 07:22

    ARM應(yīng)用程序構(gòu)架_時(shí)間片輪詢模板

    ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)實(shí)例精講--ARM應(yīng)用程序構(gòu)架02時(shí)間片輪詢模板
    發(fā)表于 07-08 11:08 ?12次下載

    ARM應(yīng)用程序構(gòu)架_順序執(zhí)行模板

    ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)實(shí)例精講--ARM應(yīng)用程序構(gòu)架01順序執(zhí)行模板
    發(fā)表于 07-08 11:08 ?6次下載

    ARM應(yīng)用程序構(gòu)架_操作系統(tǒng)模板

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——ARM應(yīng)用程序構(gòu)架03操作系統(tǒng)模板
    發(fā)表于 09-13 17:23 ?0次下載

    ARM應(yīng)用程序構(gòu)架02時(shí)間片輪詢模板

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——ARM應(yīng)用程序構(gòu)架02時(shí)間片輪詢模板
    發(fā)表于 09-13 17:23 ?0次下載

    ARM應(yīng)用程序構(gòu)架01順序執(zhí)行模板

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——ARM應(yīng)用程序構(gòu)架01順序執(zhí)行模板
    發(fā)表于 09-13 17:23 ?0次下載

    OMAPL138B C6-Integra? DSP+ARM? 處理器

    OMAPL138B C6-Integra? DSP+ARM? 處理器是一款低功率應(yīng)用處理器,此處理器基于一個(gè) ARM926EJ-S? 和一個(gè)
    發(fā)表于 04-13 15:57 ?6次下載
    OMAPL138B C6-Integra? <b class='flag-5'>DSP+ARM</b>? <b class='flag-5'>處理器</b>

    OMAP-L138 C6000 DSP ARM處理器的詳細(xì)中文數(shù)據(jù)手冊(cè)免費(fèi)下載

    OMAP-L138 C6000 DSP+ARM 處理器 是一款低功耗 應(yīng)用 處理器,該處理器基于 ARM926EJ-S 和 C674x
    發(fā)表于 07-25 08:00 ?34次下載

    海天雄電子:DSP+ARM嵌入式教學(xué)實(shí)驗(yàn)平臺(tái)

    CES-EDU5728 DSP+ARM嵌入式教學(xué)實(shí)驗(yàn)平臺(tái)是我公司基于美國(guó)TI公司異構(gòu)多核(ARM Cortex-A15 1.5GHz、浮點(diǎn)DSP
    的頭像 發(fā)表于 10-15 15:49 ?3664次閱讀
    海天雄電子:<b class='flag-5'>DSP+ARM</b>嵌入式教學(xué)實(shí)驗(yàn)平臺(tái)

    OMAPL138B C6000 DSP+ARM處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《OMAPL138B C6000 DSP+ARM處理器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 09:15 ?0次下載
    OMAPL138B C6000 <b class='flag-5'>DSP+ARM</b><b class='flag-5'>處理器</b>數(shù)據(jù)表

    OMAP-L132 C6000? DSP+ARM處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《OMAP-L132 C6000? DSP+ARM處理器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 09:29 ?0次下載
    OMAP-L132 C6000? <b class='flag-5'>DSP+ARM</b><b class='flag-5'>處理器</b>數(shù)據(jù)表

    OMAP-L138 C6000 DSP+ARM處理器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《OMAP-L138 C6000 DSP+ARM處理器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-07 09:36 ?0次下載
    OMAP-L138 C6000 <b class='flag-5'>DSP+ARM</b><b class='flag-5'>處理器</b>數(shù)據(jù)表