<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MiniGUI的多進(jìn)程圖形用戶界面的研究

          基于MiniGUI的多進(jìn)程圖形用戶界面的研究

          作者: 時(shí)間:2012-05-18 來源:網(wǎng)絡(luò) 收藏

          2開發(fā)重點(diǎn)

          2.1 窗口管理

          提供了豐富的構(gòu)件,如窗口、對(duì)話框、控件等,能夠?qū)崿F(xiàn)各種應(yīng)用功能。本身是事件驅(qū)動(dòng)的圖形界系統(tǒng),所謂事件是指當(dāng)用戶進(jìn)行窗口操作時(shí),如移動(dòng)鼠標(biāo)、單擊鼠標(biāo)、進(jìn)行鍵盤輸入的功能,這些動(dòng)作會(huì)觸發(fā)一個(gè)相應(yīng)的“事件”,并由支持系統(tǒng)收集,以特定方式翻譯為消息。應(yīng)用程序一般包含自己的消息隊(duì)列,以接受系統(tǒng)消息并建立循環(huán),這樣的循環(huán)稱為消息循環(huán)。消息一般由代表消息類型的數(shù)和附加參數(shù)構(gòu)成。

          多窗口系統(tǒng)在屏幕上要同時(shí)顯示多個(gè)應(yīng)用程序窗口,程序窗口之間會(huì)有相互重疊關(guān)系。所以GUI系統(tǒng)運(yùn)行后首先要?jiǎng)?chuàng)建一個(gè)根窗口,此窗口在系統(tǒng)啟動(dòng)時(shí)由啟動(dòng)腳本運(yùn)行,是所有其他窗口的依附窗口。其他子窗口由用戶在根窗口內(nèi)點(diǎn)擊相應(yīng)圖標(biāo)產(chǎn)生,并且在子窗口內(nèi)可以繼續(xù)派生出自己的下一級(jí)子窗口,每個(gè)子窗口擁有一個(gè)窗口ID號(hào),以標(biāo)示與上級(jí)窗口的派生關(guān)系,據(jù)此便可以追溯到根窗口,而不至于產(chǎn)生窗口管理的混亂。窗口之間的可以為同級(jí)或者上下級(jí)派生關(guān)系。相互間的邏輯結(jié)構(gòu)如圖2所示:

          12.gif

          2.2 多任務(wù)優(yōu)先級(jí)分配

          由于嵌入式設(shè)備在硬件資源上的局限性,GUI系統(tǒng)對(duì)新的任務(wù)請(qǐng)求進(jìn)行運(yùn)行優(yōu)先級(jí)的分配和管理,以避免低運(yùn)行級(jí)任務(wù)造成系統(tǒng)資源的浪費(fèi)。GUI系統(tǒng)優(yōu)先運(yùn)行級(jí)別較高的任務(wù),對(duì)新產(chǎn)生的任務(wù)按照預(yù)定方式分配相應(yīng)的運(yùn)行級(jí)別,并與當(dāng)前運(yùn)行的任務(wù)級(jí)別進(jìn)行比較,如果新任務(wù)是最高運(yùn)行級(jí)別的任務(wù),則掛起其他任務(wù)直到新任務(wù)處理結(jié)束;如果是相同運(yùn)行級(jí)別的任務(wù)則把新任務(wù)加入到運(yùn)行隊(duì)列的隊(duì)尾,由內(nèi)核分配CPU時(shí)間片和內(nèi)存資源,與其他的任務(wù)一起進(jìn)行多任務(wù)的并發(fā)處理;如果新任務(wù)運(yùn)行級(jí)別最低則將被放入到系統(tǒng)等待隊(duì)列中,直到其他任務(wù)處理完成再處理新任務(wù)。判斷流程如圖3示:

          10.gif
          圖3運(yùn)行級(jí)別判斷流程圖

          3嵌入式開發(fā)環(huán)境構(gòu)建

          完整的嵌入式開發(fā)環(huán)境由嵌入式目標(biāo)板和宿主機(jī)構(gòu)成,兩者通過網(wǎng)線、計(jì)算機(jī)串口和JTAG連接。用戶程序在宿主機(jī)平臺(tái)上進(jìn)行開發(fā),交叉編譯過的程序燒寫到開發(fā)板中的Flash芯片中。

          3.1宿主機(jī)

          宿主機(jī)安裝Redhat9.0操作系統(tǒng)、開發(fā)環(huán)境和開發(fā)工具集。工具集包括交叉編譯器gcc、調(diào)試器gdb、C函數(shù)庫glibc和二進(jìn)制工具集binutils。

          3.2 目標(biāo)板

          1)引導(dǎo)程序(Boot Loader)

          是系統(tǒng)復(fù)位后執(zhí)行的一段代碼,首先完成系統(tǒng)硬件的初始化,包括時(shí)鐘設(shè)置、存儲(chǔ)區(qū)影射等,然后跳轉(zhuǎn)到操作系統(tǒng)內(nèi)核的入口,將系統(tǒng)控制權(quán)交給操作系統(tǒng)。 Boot Loader獨(dú)立于操作系統(tǒng)而高度依賴系統(tǒng)硬件,必須自行設(shè)計(jì)。本文采用vivi作為系統(tǒng)的引導(dǎo)程序。其啟動(dòng)分為兩個(gè)階段:第一階段代碼采用匯編語言編寫,主要進(jìn)行與CPU以及存儲(chǔ)設(shè)備密切相關(guān)的工作,并進(jìn)行初始化;第二階段采用C語言編寫,來實(shí)現(xiàn)一般的流程及對(duì)板級(jí)的一些驅(qū)動(dòng)支持。

          2)Linux內(nèi)核

          一般的嵌入式操作系統(tǒng)如uClinux、uC/OS-II通常運(yùn)行在沒有MMU的CPU上,因此在編程時(shí)具有較大的困難度,所以選擇具有完整 Unix特性的Linux作為操作系統(tǒng)。開發(fā)板采用打過補(bǔ)丁的Linux-2.4.18-rmk7的內(nèi)核,內(nèi)核和補(bǔ)丁可以從ARM的官方網(wǎng)站上下載。在配置內(nèi)核時(shí)去掉無關(guān)的功能以減少內(nèi)核大小,如SCSI、IrDA、手柄等。

          3)根文件系統(tǒng)

          嵌入式根文件系統(tǒng)(root filesystem)是嵌入式Linux系統(tǒng)的核心部分 ,包含系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持架構(gòu)和用戶使用的應(yīng)用軟件,并作為存儲(chǔ)區(qū)讀寫結(jié)果的區(qū)域。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();